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();
}
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();
}
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());
}
}
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();
}
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();
}
Aggregations