-package org.simantics.migration.ui;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-\r
-import org.eclipse.jface.viewers.IStructuredContentProvider;\r
-import org.eclipse.jface.viewers.LabelProvider;\r
-import org.eclipse.jface.viewers.Viewer;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.ui.dialogs.ListDialog;\r
-import org.simantics.Simantics;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ReadRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.adapter.ActionFactory;\r
-import org.simantics.layer0.SoftwareConfigurationResources;\r
-import org.simantics.migration.ui.MigrationAnalysis.Update;\r
-\r
-public class MigrateActionFactory implements ActionFactory {\r
-\r
- @Override\r
- public Runnable create(Object target) {\r
- final Resource resource = (Resource)target;\r
- return new Runnable() {\r
- @Override\r
- public void run() {\r
- analyze(resource);\r
- } \r
- };\r
- }\r
- \r
- private void analyze(final Resource resource) {\r
- Simantics.getSession().asyncRequest(new ReadRequest() { \r
- @Override\r
- public void run(ReadGraph graph) throws DatabaseException {\r
- SoftwareConfigurationResources SC = SoftwareConfigurationResources.getInstance(graph);\r
- final ArrayList<Update> updates = new ArrayList<Update>();\r
- for(Resource version : graph.getObjects(resource, SC.IsCompatibleWith)) {\r
- MigrationAnalysis analysis = new MigrationAnalysis(graph, version);\r
- updates.addAll(analysis.getUpdates());\r
- }\r
- Collections.sort(updates);\r
- Display.getDefault().asyncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- select(resource, updates); \r
- } \r
- }); \r
- }\r
- });\r
- }\r
- \r
- private void select(final Resource resource, final ArrayList<Update> updates) {\r
- ListDialog listDialog = new ListDialog(Display.getCurrent().getActiveShell());\r
- listDialog.setTitle("Migrate");\r
- listDialog.setMessage("Choose the version to migrate to");\r
- listDialog.setContentProvider(new IStructuredContentProvider() { \r
- @Override\r
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { \r
- }\r
- \r
- @Override\r
- public void dispose() {\r
- }\r
- \r
- @Override\r
- public Object[] getElements(Object inputElement) {\r
- return updates.toArray();\r
- }\r
- });\r
- listDialog.setLabelProvider(new LabelProvider() {\r
- @Override\r
- public String getText(Object element) {\r
- return ((Update)element).versionName;\r
- }\r
- });\r
- listDialog.setInput(updates);\r
- if(listDialog.open() == ListDialog.OK) {\r
- Object[] result = listDialog.getResult();\r
- if(result.length == 1) {\r
- Update update = (Update)result[0];\r
- try {\r
- update.execute(resource);\r
- update.updateTargetVersion(resource); \r
- } catch(DatabaseException e) {\r
- e.printStackTrace();\r
- }\r
- }\r
- }\r
- }\r
-\r
-}\r
+package org.simantics.migration.ui;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.ListDialog;
+import org.simantics.Simantics;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.ActionFactory;
+import org.simantics.layer0.SoftwareConfigurationResources;
+import org.simantics.migration.ui.MigrationAnalysis.Update;
+
+public class MigrateActionFactory implements ActionFactory {
+
+ @Override
+ public Runnable create(Object target) {
+ final Resource resource = (Resource)target;
+ return new Runnable() {
+ @Override
+ public void run() {
+ analyze(resource);
+ }
+ };
+ }
+
+ private void analyze(final Resource resource) {
+ Simantics.getSession().asyncRequest(new ReadRequest() {
+ @Override
+ public void run(ReadGraph graph) throws DatabaseException {
+ SoftwareConfigurationResources SC = SoftwareConfigurationResources.getInstance(graph);
+ final ArrayList<Update> updates = new ArrayList<Update>();
+ for(Resource version : graph.getObjects(resource, SC.IsCompatibleWith)) {
+ MigrationAnalysis analysis = new MigrationAnalysis(graph, version);
+ updates.addAll(analysis.getUpdates());
+ }
+ Collections.sort(updates);
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ select(resource, updates);
+ }
+ });
+ }
+ });
+ }
+
+ private void select(final Resource resource, final ArrayList<Update> updates) {
+ ListDialog listDialog = new ListDialog(Display.getCurrent().getActiveShell());
+ listDialog.setTitle("Migrate");
+ listDialog.setMessage("Choose the version to migrate to");
+ listDialog.setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return updates.toArray();
+ }
+ });
+ listDialog.setLabelProvider(new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return ((Update)element).versionName;
+ }
+ });
+ listDialog.setInput(updates);
+ if(listDialog.open() == ListDialog.OK) {
+ Object[] result = listDialog.getResult();
+ if(result.length == 1) {
+ Update update = (Update)result[0];
+ try {
+ update.execute(resource);
+ update.updateTargetVersion(resource);
+ } catch(DatabaseException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+}