Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers')
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java19
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java130
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java4
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java21
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java2
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java2
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java2
7 files changed, 163 insertions, 17 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java
index d6b34ab1297..f065138362f 100644
--- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java
@@ -23,9 +23,13 @@ import org.eclipse.papyrus.eclipse.project.editors.project.ProjectEditor;
import org.eclipse.swt.widgets.Display;
+/**
+ * @since 1.2
+ */
public abstract class AbstractAddFileHandler extends AbstractHandler {
+ @Override
public Object execute(final ExecutionEvent event) {
Job job = new Job(getJobName()) {
@@ -46,6 +50,7 @@ public abstract class AbstractAddFileHandler extends AbstractHandler {
public void done(final IJobChangeEvent event) {
Display.getDefault().asyncExec(new Runnable() {
+ @Override
public void run() {
MessageDialog.openInformation(Display.getDefault().getActiveShell(), getJobName(), "Done.");
}
@@ -60,15 +65,15 @@ public abstract class AbstractAddFileHandler extends AbstractHandler {
final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
URL sourceURL = getSourceURL();
- if(sourceURL == null) {
+ if (sourceURL == null) {
MessageDialog.openError(Display.getCurrent().getActiveShell(), "Cannot find the source file", "The source file is invalid");
}
String targetPath = getTargetPath();
monitor.beginTask(getJobName(), projects.length);
- for(final IProject current : projects) {
- if(current.isOpen() && isValidProject(current)) {
+ for (final IProject current : projects) {
+ if (current.isOpen() && isValidProject(current)) {
try {
addFile(current, sourceURL, targetPath);
} catch (final CoreException e) {
@@ -86,7 +91,7 @@ public abstract class AbstractAddFileHandler extends AbstractHandler {
return Status.OK_STATUS;
}
- //Subclasses should override this
+ // Subclasses should override this
protected String getJobName() {
return "Add files";
}
@@ -100,11 +105,11 @@ public abstract class AbstractAddFileHandler extends AbstractHandler {
/**
*
* @param project
- * the project
+ * the project
* @param file
- * the file to add
+ * the file to add
* @param fileDestinationPath
- * the path where add the file
+ * the path where add the file
* @throws CoreException
* @throws IOException
*/
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java
new file mode 100644
index 00000000000..b72cb3663e2
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java
@@ -0,0 +1,130 @@
+/*****************************************************************************
+ * Copyright (c) 2016 Christian W. Damus and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.dev.project.management.handlers;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.IProjectEditor;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.ProjectEditors;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.progress.IProgressService;
+import org.eclipse.ui.statushandlers.StatusManager;
+
+/**
+ * Ensures that all projects that have the Oomph Version Management nature configured
+ * also have the PDE API Analysis nature configured.
+ *
+ * @since 1.2
+ */
+public class EnsureAPIAnalysisHandler extends AbstractHandler {
+
+ public EnsureAPIAnalysisHandler() {
+ super();
+ }
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ List<IProject> versionProjects = getAllVersionProjects();
+
+ Job updateJob = new Job("Ensure API Analysis") {
+
+ {
+ setRule(ResourcesPlugin.getWorkspace().getRoot());
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ Set<String> naturesToAdd = Collections.singleton("org.eclipse.pde.api.tools.apiAnalysisNature");
+ Set<String> buildersToAdd = Collections.singleton("org.eclipse.pde.api.tools.apiAnalysisBuilder");
+ SubMonitor sub = SubMonitor.convert(monitor, "Updating projects...", versionProjects.size());
+
+ versionProjects.forEach(project -> {
+ try {
+ if (sub.isCanceled()) {
+ throw new OperationCanceledException();
+ }
+
+ IProjectEditor projectEditor = ProjectEditors.getProjectEditor(project);
+ if (projectEditor.hasNature("org.eclipse.oomph.version.VersionNature")) {
+ // Ensure the API Analysis nature and builder
+ projectEditor.addNatures(naturesToAdd);
+ projectEditor.addBuildCommands(buildersToAdd);
+ if (projectEditor.isDirty()) {
+ projectEditor.save();
+ }
+ }
+
+ sub.worked(1);
+ } catch (CoreException e) {
+ StatusManager.getManager().handle(e.getStatus(), StatusManager.SHOW);
+ }
+ });
+
+ sub.done();
+
+ return Status.OK_STATUS;
+ }
+ };
+ updateJob.schedule();
+
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
+ IProgressService progress = window.getWorkbench().getProgressService();
+ progress.showInDialog(window.getShell(), updateJob);
+
+ return null;
+ }
+
+ List<IProject> getAllVersionProjects() {
+ return Stream.of(ResourcesPlugin.getWorkspace().getRoot().getProjects())
+ .filter(this::hasVersionNature)
+ .collect(Collectors.toList());
+ }
+
+ boolean hasVersionNature(IProject project) {
+ boolean result = false;
+
+ if (project.isAccessible()) {
+ try {
+ IProjectDescription desc = project.getDescription();
+ List<String> natures = Arrays.asList(desc.getNatureIds());
+ result = natures.contains("org.eclipse.oomph.version.VersionNature"); //$NON-NLS-1$
+ } catch (CoreException e) {
+ // Guess it's not an interesting project
+ Activator.log.log(e.getStatus());
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java
index 8c1a3aa7e19..66772afd2c7 100644
--- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java
@@ -67,6 +67,8 @@ import org.w3c.dom.NodeList;
/**
* Ensures that <tt>pom.xml</tt> files have the same version number as their
* corresponding <tt>MANIFEST.MF</tt> or <tt>feature.xml</tt> file.
+ *
+ * @since 1.2
*/
public class SyncManifestAndPOMVersions extends AbstractHandler {
private static final Pattern BUNDLE_VERSION = Pattern.compile("^Bundle-Version:\\s*(\\S+)\\s*$", Pattern.MULTILINE); //$NON-NLS-1$
@@ -141,7 +143,7 @@ public class SyncManifestAndPOMVersions extends AbstractHandler {
.filter(this::hasPluginOrFeatureNature)
.forEach(project -> {
IFile pom = project.getFile("pom.xml"); //$NON-NLS-1$
- if (pom != null) {
+ if ((pom != null) && pom.isAccessible()) {
IFile manifest = project.getFile("feature.xml");
if (!manifest.isAccessible()) {
manifest = project.getFile("META-INF/MANIFEST.MF");
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java
index 2b6947eac76..9e1c21f762e 100644
--- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java
@@ -31,6 +31,8 @@ import org.eclipse.swt.widgets.Display;
*
* set the Copyright and the URL only if it not yet set.
*
+ * @since 1.2
+ *
*/
public class SetCopyrightNoticeHandler extends AbstractHandler {
@@ -38,13 +40,14 @@ public class SetCopyrightNoticeHandler extends AbstractHandler {
final static String TEXT = "text";
+ @Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
Utils.getSelectedOpenProject();
final TwoInputDialog dialog = new TwoInputDialog(Display.getDefault().getActiveShell(), "Set Copyright Notice", "Licence url", "text", OPTIONAL_URL, TEXT, null);
- if(dialog.open() == Window.OK) {
+ if (dialog.open() == Window.OK) {
final String newVersion = dialog.getValue();
final List<IProject> featureProjects = Utils.getOpenedFeatureProject();
- for(final IProject current : featureProjects) {
+ for (final IProject current : featureProjects) {
try {
setCopyrightNotice(current, dialog.getValue(), dialog.getValue_2());
} catch (final Throwable e) {
@@ -62,8 +65,8 @@ public class SetCopyrightNoticeHandler extends AbstractHandler {
* @param text
* @throws Throwable
*
- * TODO : doesn't erase existing value!
- * TODO : add a checkbox in the dialog to erase existing value
+ * TODO : doesn't erase existing value!
+ * TODO : add a checkbox in the dialog to erase existing value
*/
protected void setCopyrightNotice(final IProject featureProject, final String url, final String text) throws Throwable {
final IFeatureProjectEditor editor = new FeatureProjectEditor(featureProject);
@@ -72,18 +75,18 @@ public class SetCopyrightNoticeHandler extends AbstractHandler {
final String copyrightURL = editor.getCopyrightURL();
String settedURL = null;
String settedText = null;
- //TODO improve these tests
- if((copyrightURL == null) || copyrightURL.equals("")) {
+ // TODO improve these tests
+ if ((copyrightURL == null) || copyrightURL.equals("")) {
settedURL = url;
} else {
settedURL = copyrightURL;
}
- if((copyrirghtText == null) || copyrirghtText.equals("")) {
+ if ((copyrirghtText == null) || copyrirghtText.equals("")) {
settedText = text;
}
- if(settedText.equals(copyrirghtText) && settedURL.equals(copyrightURL)) {
- //do nothing
+ if (settedText.equals(copyrirghtText) && settedURL.equals(copyrightURL)) {
+ // do nothing
} else {
editor.setCopyright(settedURL, settedText);
editor.save();
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java
index 78408bf3f4b..a2de9c91a20 100644
--- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java
@@ -45,6 +45,8 @@ import org.xml.sax.helpers.DefaultHandler;
/**
* Handler for the "open parent POM" command.
+ *
+ * @since 1.2
*/
public class OpenParentPOMHandler extends AbstractHandler {
private final String POM_CONTENT_TYPE = "org.eclipse.m2e.core.pomFile"; //$NON-NLS-1$
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java
index d9a501e25ea..6bca6f20f54 100644
--- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java
@@ -24,6 +24,8 @@ import org.eclipse.papyrus.eclipse.project.editors.interfaces.IManifestEditor;
* Handler for the "optimize dependencies" command, which ensures re-exports of dependencies
* that contribute types to the exported API and removes redundancies (except where they are
* re-exported).
+ *
+ * @since 1.2
*/
public class OptimizeDependenciesHandler extends AbstractManifestUpdateHandler {
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java
index 048ef1cc953..8bc4436c8ee 100644
--- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java
@@ -26,6 +26,8 @@ import org.eclipse.papyrus.eclipse.project.editors.interfaces.IManifestEditor;
* by the current PDE Target version, except for certain 3rd-party Orbit bundles
* (such as Guava, ICU4J) that are known to increase major versions frequently without
* breaking compatibility.
+ *
+ * @since 1.2
*/
public class UpdateDependencyRangesHandler extends AbstractManifestUpdateHandler {

Back to the top