Search in sources :

Example 1 with Job

use of org.netxms.nxmc.base.jobs.Job in project netxms by netxms.

the class NodeSubObjectView method syncChildren.

/**
 * Sync object children form server
 *
 * @param object current object
 */
private void syncChildren(AbstractObject object) {
    final Composite label = new Composite(mainArea, SWT.NONE);
    label.setLayout(new GridLayout());
    label.setBackground(label.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
    Label labelText = new Label(label, SWT.CENTER);
    labelText.setText(i18n.tr("Loading..."));
    labelText.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
    labelText.setBackground(label.getBackground());
    label.moveAbove(null);
    FormData fd = new FormData();
    fd.left = new FormAttachment(0, 0);
    fd.top = new FormAttachment(0, 0);
    fd.bottom = new FormAttachment(100, 0);
    fd.right = new FormAttachment(100, 0);
    label.setLayoutData(fd);
    mainArea.layout();
    Job job = new Job(i18n.tr("Synchronize node sub-objects"), this) {

        @Override
        protected void run(IProgressMonitor monitor) throws Exception {
            session.syncChildren(object);
            runInUIThread(new Runnable() {

                @Override
                public void run() {
                    refresh();
                    label.dispose();
                    mainArea.layout();
                }
            });
        }

        @Override
        protected String getErrorMessage() {
            return i18n.tr("Cannot synchronize node sub-objects");
        }
    };
    job.setUser(false);
    job.start();
}
Also used : FormData(org.eclipse.swt.layout.FormData) GridLayout(org.eclipse.swt.layout.GridLayout) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) Composite(org.eclipse.swt.widgets.Composite) Label(org.eclipse.swt.widgets.Label) GridData(org.eclipse.swt.layout.GridData) Job(org.netxms.nxmc.base.jobs.Job) FormAttachment(org.eclipse.swt.layout.FormAttachment)

Example 2 with Job

use of org.netxms.nxmc.base.jobs.Job in project netxms by netxms.

the class NotificationChannels method deleteChannel.

/**
 * Delete selected notification channel
 */
private void deleteChannel() {
    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
    if ((selection == null) || (selection.size() == 0))
        return;
    if (!MessageDialogHelper.openQuestion(getWindow().getShell(), i18n.tr("Delete notification channels"), i18n.tr("Are you sure you want to delete notification channels?")))
        return;
    final List<String> channels = new ArrayList<String>(selection.size());
    for (Object o : selection.toList()) {
        if (o instanceof NotificationChannel)
            channels.add(((NotificationChannel) o).getName());
    }
    new Job(i18n.tr("Delete notification channel"), this) {

        @Override
        protected void run(IProgressMonitor monitor) throws Exception {
            for (String name : channels) session.deleteNotificationChannel(name);
        }

        @Override
        protected String getErrorMessage() {
            return i18n.tr("Error deleting notifiction channel");
        }
    }.start();
}
Also used : NotificationChannel(org.netxms.client.NotificationChannel) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ArrayList(java.util.ArrayList) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Job(org.netxms.nxmc.base.jobs.Job)

Example 3 with Job

use of org.netxms.nxmc.base.jobs.Job in project netxms by netxms.

the class PackageManager method installPackage.

/**
 * Install new package
 */
private void installPackage() {
    FileDialog fd = new FileDialog(getWindow().getShell(), SWT.OPEN);
    fd.setText(i18n.tr("Select Package File"));
    WidgetHelper.setFileDialogFilterExtensions(fd, new String[] { "*.apkg", "*.exe", "*.msi", "*.msp", "*.msu", "*.npi", "*.tgz;*.tar.gz", "*.zip", "*.*" });
    WidgetHelper.setFileDialogFilterNames(fd, new String[] { i18n.tr("NetXMS Agent Package"), i18n.tr("Executable"), i18n.tr("Windows Installer Package"), i18n.tr("Windows Installer Patch"), i18n.tr("Windows Update Package"), i18n.tr("NetXMS Package Info"), i18n.tr("Compressed TAR Archive"), i18n.tr("ZIP Archive"), i18n.tr("All Files") });
    String packageFileName = fd.open();
    if (packageFileName == null)
        return;
    try {
        // Guess package type, version, etc. from package file name
        boolean showMetadataDialog = true;
        final PackageInfo packageInfo;
        if (packageFileName.endsWith(".npi")) {
            packageInfo = new PackageInfo(new File(packageFileName));
            showMetadataDialog = false;
        } else {
            File packageFile = new File(packageFileName);
            String name = packageFile.getName();
            if (packageFileName.endsWith(".apkg")) {
                Pattern pattern = Pattern.compile("^nxagent-([0-9]+\\.[0-9]+\\.[0-9]+)(-[a-zA-Z0-9.]+)?(-[a-zA-Z0-9_]+)?\\.apkg$", Pattern.CASE_INSENSITIVE);
                Matcher matcher = pattern.matcher(name);
                if (matcher.matches()) {
                    showMetadataDialog = false;
                    if (matcher.group(2) == null) {
                        packageInfo = new PackageInfo("nxagent", "NetXMS Agent Source Package", name, "agent-installer", "src", matcher.group(1), "");
                    } else {
                        String os, platform;
                        if (matcher.group(2).startsWith("-aix")) {
                            os = "AIX";
                            if (matcher.group(2).length() > 4)
                                os = os + " " + matcher.group(2).substring(4);
                            platform = "AIX-powerpc";
                        } else if (matcher.group(2).equals("-hpux")) {
                            os = "HP-UX";
                            platform = "HP-UX" + matcher.group(3);
                        } else if (matcher.group(2).equals("-linux")) {
                            os = "Linux";
                            platform = matcher.group(3).equals("-arm") ? "Linux-arm*" : "Linux" + matcher.group(3);
                        } else if (matcher.group(2).equals("-solaris")) {
                            os = "Solaris";
                            String arch;
                            if (matcher.group(3).equals("-sparc"))
                                arch = "-sun4u";
                            else if (matcher.group(3).equals("-i386"))
                                arch = "-i86pc";
                            else
                                arch = matcher.group(3);
                            platform = "SunOS" + arch;
                        } else {
                            os = matcher.group(2).substring(1);
                            platform = os + matcher.group(3);
                            showMetadataDialog = true;
                        }
                        packageInfo = new PackageInfo("nxagent", "NetXMS Agent for " + os, name, "agent-installer", platform, matcher.group(1), "");
                    }
                } else {
                    packageInfo = new PackageInfo(name, "", name, "executable", "*", "", "");
                }
            } else if (packageFileName.endsWith(".deb")) {
                packageInfo = new PackageInfo(name.substring(0, name.length() - 4), "", name, "deb", "Linux-*", "", "");
            } else if (packageFileName.endsWith(".exe")) {
                Pattern pattern = Pattern.compile("^nxagent-([0-9]+\\.[0-9]+\\.[0-9]+)(-x64)?\\.exe$", Pattern.CASE_INSENSITIVE);
                Matcher matcher = pattern.matcher(name);
                if (matcher.matches()) {
                    packageInfo = new PackageInfo("nxagent", "NetXMS Agent for Windows", name, "agent-installer", "windows-" + ((matcher.group(2) == null) ? "i386" : "x64"), matcher.group(1), "");
                    showMetadataDialog = false;
                } else {
                    pattern = Pattern.compile("^nxagent-atm-([0-9]+\\.[0-9]+\\.[0-9]+)(-x64)?\\.exe$", Pattern.CASE_INSENSITIVE);
                    matcher = pattern.matcher(name);
                    if (matcher.matches()) {
                        packageInfo = new PackageInfo("nxagent-atm", "NetXMS Agent for ATM", name, "agent-installer", "windows-" + ((matcher.group(2) == null) ? "i386" : "x64"), matcher.group(1), "");
                        showMetadataDialog = false;
                    } else {
                        packageInfo = new PackageInfo(name, "", name, "executable", "windows-x64", "", "");
                    }
                }
            } else if (packageFileName.endsWith(".msi") || packageFileName.endsWith(".msp") || packageFileName.endsWith(".msu")) {
                packageInfo = new PackageInfo(name.substring(0, name.lastIndexOf('.')), "", name, name.substring(name.lastIndexOf('.') + 1), "windows-x64", "", "");
            } else if (packageFileName.endsWith(".rpm")) {
                packageInfo = new PackageInfo(name.substring(0, name.length() - 4), "", name, "rpm", "*", "", "");
            } else if (packageFileName.endsWith(".tar.gz") || packageFileName.endsWith(".tgz")) {
                int suffixLen = packageFileName.endsWith(".tar.gz") ? 7 : 4;
                packageInfo = new PackageInfo(name.substring(0, name.length() - suffixLen), "", name, "tgz", "*", "", "");
            } else if (packageFileName.endsWith(".zip")) {
                packageInfo = new PackageInfo(name.substring(0, name.length() - 4), "", name, "zip", "*", "", "");
            } else {
                packageInfo = new PackageInfo(name, "", name, "executable", "*", "", "");
            }
        }
        if (showMetadataDialog) {
            EditPackageMetadataDialog dlg = new EditPackageMetadataDialog(getWindow().getShell(), packageInfo);
            if (dlg.open() != Window.OK)
                return;
        }
        final NXCSession session = Registry.getSession();
        new Job(i18n.tr("Install package"), this) {

            @Override
            protected void run(final IProgressMonitor monitor) throws Exception {
                File packageFile = packageFileName.endsWith(".npi") ? new File(new File(packageFileName).getParent(), packageInfo.getFileName()) : new File(packageFileName);
                final long id = session.installPackage(packageInfo, packageFile, new ProgressListener() {

                    long prevAmount = 0;

                    @Override
                    public void setTotalWorkAmount(long amount) {
                        monitor.beginTask(i18n.tr("Upload package file"), (int) amount);
                    }

                    @Override
                    public void markProgress(long amount) {
                        monitor.worked((int) (amount - prevAmount));
                        prevAmount = amount;
                    }
                });
                packageInfo.setId(id);
                runInUIThread(new Runnable() {

                    @Override
                    public void run() {
                        packageList.add(packageInfo);
                        viewer.setInput(packageList.toArray());
                    }
                });
            }

            @Override
            protected String getErrorMessage() {
                return i18n.tr("Cannot install package");
            }
        }.start();
    } catch (IOException e) {
        MessageDialogHelper.openError(getWindow().getShell(), i18n.tr("Error"), i18n.tr("Cannot open package information file: ") + e.getLocalizedMessage());
    }
}
Also used : Pattern(java.util.regex.Pattern) NXCSession(org.netxms.client.NXCSession) Matcher(java.util.regex.Matcher) PackageInfo(org.netxms.client.packages.PackageInfo) EditPackageMetadataDialog(org.netxms.nxmc.modules.agentmanagement.dialogs.EditPackageMetadataDialog) IOException(java.io.IOException) IOException(java.io.IOException) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ProgressListener(org.netxms.client.ProgressListener) Job(org.netxms.nxmc.base.jobs.Job) FileDialog(org.eclipse.swt.widgets.FileDialog) File(java.io.File)

Example 4 with Job

use of org.netxms.nxmc.base.jobs.Job in project netxms by netxms.

the class PackageManager method removePackage.

/**
 * Remove selected package(s)
 */
private void removePackage() {
    if (!MessageDialogHelper.openConfirm(getWindow().getShell(), i18n.tr("Confirm Package Delete"), i18n.tr("Are you sure you wish to delete selected packages?")))
        return;
    final NXCSession session = Registry.getSession();
    final Object[] packages = viewer.getStructuredSelection().toArray();
    final List<Object> removedPackages = new ArrayList<Object>();
    new Job(i18n.tr("Delete agent packages"), this) {

        @Override
        protected void run(IProgressMonitor monitor) throws Exception {
            for (Object p : packages) {
                session.removePackage(((PackageInfo) p).getId());
                removedPackages.add(p);
            }
        }

        @Override
        protected void jobFinalize() {
            runInUIThread(new Runnable() {

                @Override
                public void run() {
                    packageList.removeAll(removedPackages);
                    viewer.setInput(packageList.toArray());
                }
            });
        }

        @Override
        protected String getErrorMessage() {
            return i18n.tr("Cannot delete package from server");
        }
    }.start();
}
Also used : IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) NXCSession(org.netxms.client.NXCSession) PackageInfo(org.netxms.client.packages.PackageInfo) ArrayList(java.util.ArrayList) Job(org.netxms.nxmc.base.jobs.Job) IOException(java.io.IOException)

Example 5 with Job

use of org.netxms.nxmc.base.jobs.Job in project netxms by netxms.

the class PackageManager method editPackageMetadata.

/**
 * Edit metadata for selected package
 */
private void editPackageMetadata() {
    IStructuredSelection selection = viewer.getStructuredSelection();
    if (selection.size() != 1)
        return;
    final PackageInfo packageInfo = (PackageInfo) selection.getFirstElement();
    EditPackageMetadataDialog dlg = new EditPackageMetadataDialog(getWindow().getShell(), packageInfo);
    if (dlg.open() != Window.OK)
        return;
    final NXCSession session = Registry.getSession();
    new Job("Update package metadata", this) {

        @Override
        protected void run(IProgressMonitor monitor) throws Exception {
            session.updatePackageMetadata(packageInfo);
            runInUIThread(new Runnable() {

                @Override
                public void run() {
                    viewer.update(packageInfo, null);
                }
            });
        }

        @Override
        protected String getErrorMessage() {
            return "Cannot update metadata for package";
        }
    }.start();
}
Also used : IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) NXCSession(org.netxms.client.NXCSession) PackageInfo(org.netxms.client.packages.PackageInfo) EditPackageMetadataDialog(org.netxms.nxmc.modules.agentmanagement.dialogs.EditPackageMetadataDialog) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Job(org.netxms.nxmc.base.jobs.Job) IOException(java.io.IOException)

Aggregations

Job (org.netxms.nxmc.base.jobs.Job)261 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)260 NXCSession (org.netxms.client.NXCSession)100 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)82 NXCObjectModificationData (org.netxms.client.NXCObjectModificationData)39 AbstractObject (org.netxms.client.objects.AbstractObject)37 ArrayList (java.util.ArrayList)36 NXCException (org.netxms.client.NXCException)33 List (java.util.List)32 IOException (java.io.IOException)27 Composite (org.eclipse.swt.widgets.Composite)12 JobCallingServerJob (org.netxms.nxmc.base.jobs.JobCallingServerJob)11 HashSet (java.util.HashSet)10 GridLayout (org.eclipse.swt.layout.GridLayout)10 GridData (org.eclipse.swt.layout.GridData)9 HashMap (java.util.HashMap)8 Script (org.netxms.client.Script)8 AgentFile (org.netxms.client.server.AgentFile)8 File (java.io.File)7 Map (java.util.Map)7