diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/META-INF/MANIFEST.MF b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/META-INF/MANIFEST.MF index 8f26cb1d648a94f98a11961ae8aa81f60de93803..6ec6a13dd64a449b5d30dbf9732c02f8957d1fbd 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/META-INF/MANIFEST.MF +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/META-INF/MANIFEST.MF @@ -5,7 +5,8 @@ Bundle-SymbolicName: de.uniwue.mk.athen.nappi.ui Bundle-Version: 1.0.0.qualifier Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, - de.uniwue.mkrug.kall.typesystemUtil;bundle-version="1.0.7" + de.uniwue.mkrug.kall.typesystemUtil;bundle-version="1.0.7", + de.uniwue.mk.kall.athen.appDelegation Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: de.uniwue.mk.athen.nappi.ui.components diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar index 1f756ad41c042f299fa0698582e6ee419f1ba87c..f22ce53dbb05ce1a5970c90190be67f1d488a6f2 100644 Binary files a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar and b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar differ diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT.jar b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT.jar deleted file mode 100644 index 8a09ab9dd3058e6df175702f5b23fe2307728e15..0000000000000000000000000000000000000000 Binary files a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT.jar and /dev/null differ diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.serviceprovider-0.0.1-SNAPSHOT.jar b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.serviceprovider-0.0.1-SNAPSHOT.jar deleted file mode 100644 index ea361d6bc0f7157a663295573537916231129730..0000000000000000000000000000000000000000 Binary files a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/libs/de.uniwue.mk.nappi.serviceprovider-0.0.1-SNAPSHOT.jar and /dev/null differ diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/communication/INappiToolbarListener.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/communication/INappiToolbarListener.java index 16cb364cfe8ff67f92470d9c2ad545fdefcaebc4..5bf636786960e953cd224701b327726ed12c4739 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/communication/INappiToolbarListener.java +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/communication/INappiToolbarListener.java @@ -14,6 +14,10 @@ public interface INappiToolbarListener { public void connectorModeChanged(boolean inConnectorMode); public Composite getDrawingArea(); + + public void accessOnlineRepository(); + + public void downloadRemoteJars(); } diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiDrawingComposite.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiDrawingComposite.java index 5add32213663fa6e0427a7cd368702f9c4f50804..54e00c5d412af734a76dc122483372425cbdce3d 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiDrawingComposite.java +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiDrawingComposite.java @@ -1,17 +1,22 @@ package de.uniwue.mk.athen.nappi.ui.components; import java.awt.Polygon; -import java.io.BufferedReader; +import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; +import java.lang.reflect.InvocationTargetException; import java.net.URL; -import java.net.URLConnection; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.apache.commons.io.FileUtils; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; @@ -40,6 +45,7 @@ import de.uniwue.mk.athen.nappi.ui.model.NappiUIAnalysisEngine; import de.uniwue.mk.athen.nappi.ui.model.NappiUIDocumentReader; import de.uniwue.mk.athen.nappi.ui.model.NappiUIDocumentWriter; import de.uniwue.mk.athen.nappi.ui.model.NappiUIPipeline; +import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil; import de.uniwue.mk.nappi.core.ServiceIntegrationUtil; import de.uniwue.mk.nappi.core.struct.NappiPipelineConfiguration; import de.uniwue.mk.nappi.serviceprovider.aeservice.IAnalysisEngineService; @@ -368,7 +374,7 @@ public class NappiDrawingComposite extends Canvas implements INappiToolbarListen // clear the object analysisEngines = new HashMap<>(); - // read local engines + // read local engines and nothing more !! if (localRepos != null) { for (String localPath : localRepos) { @@ -382,31 +388,12 @@ public class NappiDrawingComposite extends Canvas implements INappiToolbarListen } } - - // also add online repo entries - if (onlineRepos != null) { - for (String onlinePath : onlineRepos) { - - //URLConnection openConnection = new URL(onlinePath).openConnection(); - - System.out.println(onlinePath); - Map<IAnalysisEngineService, String> enginesInPath = ServiceIntegrationUtil - .getAllAnalysisEnginesRecursively(onlinePath); - - // add those that are not yet present - for (IAnalysisEngineService service : enginesInPath.keySet()) { - if (!analysisEngines.containsKey(service)) - analysisEngines.put(service, enginesInPath.get(service)); - } - - } - } } + } public void setOnlineRepos(String[] onlineRepos) { this.onlineRepos = onlineRepos; - updateNappiEngines(); } @@ -439,4 +426,105 @@ public class NappiDrawingComposite extends Canvas implements INappiToolbarListen } + // access all remote jars + @Override + public void accessOnlineRepository() { + // also add online repo entries + + IRunnableWithProgress runnable = new IRunnableWithProgress() { + + @Override + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + try { + List<URL> urLsOfRemoteJars = new ArrayList<>(); + for (String onlinePath : onlineRepos) { + urLsOfRemoteJars.addAll(ServiceIntegrationUtil.getURLsOfRemoteJars(onlinePath)); + + } + monitor.beginTask("Acessing online repository...", urLsOfRemoteJars.size()); + + for (URL url : urLsOfRemoteJars) { + + monitor.subTask("Access " + url.toString()); + Map<IAnalysisEngineService, String> enginesInURL = ServiceIntegrationUtil + .deriveAnalysisEnginesFromOnlineRepo(url.toString()); + for (IAnalysisEngineService service : enginesInURL.keySet()) { + monitor.subTask("Found service: " + service.getCanonicalEngineName()); + if (!analysisEngines.containsKey(service)) { + analysisEngines.put(service, enginesInURL.get(service)); + } + } + monitor.worked(1); + } + + monitor.done(); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + }; + + ProgressMonitorDialog pmDia = new ProgressMonitorDialog(getShell()); + try { + pmDia.run(true, false, runnable); + } catch (InvocationTargetException | InterruptedException e) { + MessageDialog.openError(getShell(), "Processing aborted", + "An exception occured during processing:\\n" + e.getMessage()); + e.printStackTrace(); + } + + } + + @Override + public void downloadRemoteJars() { + IRunnableWithProgress runnable = new IRunnableWithProgress() { + + @Override + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + try { + List<URL> urLsOfRemoteJars = new ArrayList<>(); + for (String onlinePath : onlineRepos) { + urLsOfRemoteJars.addAll(ServiceIntegrationUtil.getURLsOfRemoteJars(onlinePath)); + + } + monitor.beginTask("Download online repository Jars...", urLsOfRemoteJars.size()); + + for (URL url : urLsOfRemoteJars) { + + monitor.subTask("Download: " + url.toString()); + File localNappiRepository = ApplicationUtil.getLocalNappiRepository(); + if (localNappiRepository != null) { + + String[] split = url.getFile().split("\\/"); + String file = split[split.length - 1]; + FileUtils.copyURLToFile(url, new File(localNappiRepository.getAbsolutePath() + "/" + file)); + } + + monitor.worked(1); + } + + monitor.done(); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + }; + + ProgressMonitorDialog pmDia = new ProgressMonitorDialog(getShell()); + try { + pmDia.run(true, false, runnable); + } catch (InvocationTargetException | InterruptedException e) { + MessageDialog.openError(getShell(), "Processing aborted", + "An exception occured during processing:\\n" + e.getMessage()); + e.printStackTrace(); + } + + } + } diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiToolbarComposite.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiToolbarComposite.java index 87c19980f32ed612619815d36423c8544957b2e4..118ef70be424f4695cc235df2edb558cd0933727 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiToolbarComposite.java +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiToolbarComposite.java @@ -63,6 +63,33 @@ public class NappiToolbarComposite extends Composite { }); }); + + //add dummys +// ToolItem itemDummy1 = new ToolItem(toolBar, SWT.PUSH); +// itemDummy1.getControl().setVisible(false); + + + ToolItem itemAccessOnlineReposiroty = new ToolItem(toolBar, SWT.PUSH); + itemAccessOnlineReposiroty.setText("Access online repository"); + itemAccessOnlineReposiroty.addListener(SWT.Selection, (Event e) -> { + + toolbarListener.stream().forEach((INappiToolbarListener listener) -> { + listener.accessOnlineRepository(); + deselectToolbarCheckItems(); + }); + + }); + + ToolItem itemDownloadRemoteJars = new ToolItem(toolBar, SWT.PUSH); + itemDownloadRemoteJars.setText("Download Remote Jars"); + itemDownloadRemoteJars.addListener(SWT.Selection, (Event e) -> { + + toolbarListener.stream().forEach((INappiToolbarListener listener) -> { + listener.downloadRemoteJars(); + deselectToolbarCheckItems(); + }); + + }); toolBar.pack(); diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineEditingSupport.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineEditingSupport.java new file mode 100644 index 0000000000000000000000000000000000000000..410b9d5413d6dc7a9d9d27aacf01f4acfe376a5d --- /dev/null +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineEditingSupport.java @@ -0,0 +1,66 @@ +package de.uniwue.mk.athen.nappi.ui.components; + +import org.apache.uima.resource.metadata.ConfigurationParameter; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.EditingSupport; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TextCellEditor; + +public class NappiUIEngineEditingSupport extends EditingSupport { + + private TableViewer viewer; + private TextCellEditor editor; + + public NappiUIEngineEditingSupport(TableViewer viewer) { + super(viewer); + this.viewer = viewer; + this.editor = new TextCellEditor(viewer.getTable()); + + } + + @Override + protected CellEditor getCellEditor(Object element) { + return editor; + } + + @Override + protected boolean canEdit(Object element) { + + return true; + } + + @Override + protected Object getValue(Object element) { + if (element instanceof ConfigurationParameter) { + ConfigurationParameter param = (ConfigurationParameter) element; + //TODO ccess the value of param + return param; + } + return null; + } + + @Override + protected void setValue(Object element, Object value) { + + //TODO fix +// if (element instanceof OWLAnnotation) { +// OWLAnnotation anno = (OWLAnnotation) element; +// String annoType = anno.getProperty().getIRI().getFragment(); +// if (anno.getValue() instanceof OWLLiteral && ontology != null && classToEdit != null) { +// +// // delete the anno +// OWLUtil.deleteAnnotationFromOntology(anno, classToEdit, ontology); +// +// // creae a new one +// OWLAnnotation createdAnno = OWLUtil.createAnnotation(annoType, (String) value, ontology); +// OWLUtil.addAnnotationToEntity(createdAnno, classToEdit, ontology); +// viewer.setInput(OWLUtil.getAnnotationsOnEntity(classToEdit, ontology)); +// +// } +// } + + } + + + +} diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineParameterDialog.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineParameterDialog.java index 9de8dfdf987e459e2b9085cbe7c8e1814013da08..91015ebed2538cc7089b5b7e8fe5f80b999d3c10 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineParameterDialog.java +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIEngineParameterDialog.java @@ -43,6 +43,7 @@ import de.uniwue.mk.nappi.serviceprovider.aeservice.IAnalysisEngineService; public class NappiUIEngineParameterDialog extends Dialog { + public static final String ENGINE_METADATA = "ENGINE_METADATA"; private Label labelComponentName; private Text textComponentName; private TableViewer viewerParams; @@ -131,11 +132,9 @@ public class NappiUIEngineParameterDialog extends Dialog { if (accordingElement == null) return; engineDesc = null; - System.out.println(accordingElement.getCanonicalEngineName()); try { engineDesc = NappiUtil.createAnalysisEngineDescription(accordingElement.getCanonicalEngineName(), engines, null); } catch (InvalidXMLException | ResourceInitializationException | IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } @@ -143,6 +142,8 @@ public class NappiUIEngineParameterDialog extends Dialog { ConfigurationParameterDeclarations configurationParameterDeclarations = engineDesc.getAnalysisEngineMetaData().getConfigurationParameterDeclarations(); viewerParams.setInput(configurationParameterDeclarations.getConfigurationParameters()); viewerParams.refresh(); + viewerParams.setData(ENGINE_METADATA,engineDesc.getAnalysisEngineMetaData().getConfigurationParameterSettings()); + } } @@ -187,6 +188,7 @@ public class NappiUIEngineParameterDialog extends Dialog { }); TableViewerColumn colDefault = createTableViewerColumn("Paramvalue", 120, 0); + colDefault.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIMainDialog.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIMainDialog.java index 03900dd10997facc5b033504bc038117d8d7ab65..26776a9211273af297c144ba46425db62a6ee078 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIMainDialog.java +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.nappi.ui/src/de/uniwue/mk/athen/nappi/ui/components/NappiUIMainDialog.java @@ -9,15 +9,17 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; +import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil; + public class NappiUIMainDialog extends Dialog { private NappiToolbarComposite toolbar; private NappiDrawingComposite drawingComposite; - + private String[] localRepos; private String[] onlineRepos; - public NappiUIMainDialog(Shell parentShell,String[] localRepositories,String[] onlineReposiores) { + public NappiUIMainDialog(Shell parentShell, String[] localRepositories, String[] onlineReposiores) { super(parentShell); this.localRepos = localRepositories; this.onlineRepos = onlineReposiores; @@ -40,10 +42,10 @@ public class NappiUIMainDialog extends Dialog { GridData gdDrawing = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); gdToolbar.horizontalSpan = 4; drawingComposite.setLayoutData(gdDrawing); - drawingComposite.setLocalRepos(localRepos); + drawingComposite.setLocalRepos(new String[] { ApplicationUtil.getLocalNappiRepository().getAbsolutePath() }); drawingComposite.setOnlineRepos(onlineRepos); - - //assure that the drawing composite listens to the toolbar + + // assure that the drawing composite listens to the toolbar toolbar.addToolbarListener(drawingComposite); return container; diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/src/de/uniwue/mk/kall/athen/appDelegation/util/ApplicationUtil.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/src/de/uniwue/mk/kall/athen/appDelegation/util/ApplicationUtil.java index 9d62c65342091e7bdc7b0bd02cf6bdb67076b217..368024647d7a9a509359e0580836f4bda9f9ca45 100644 --- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/src/de/uniwue/mk/kall/athen/appDelegation/util/ApplicationUtil.java +++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/src/de/uniwue/mk/kall/athen/appDelegation/util/ApplicationUtil.java @@ -404,4 +404,16 @@ public class ApplicationUtil { } return tempFile; } + + public static File getLocalNappiRepository() { + String wsPref = getFromPreferences(ApplicationPreferences.WORKSPACE, "nope"); + + if (wsPref.equals("nope")) + return null; + + File file = new File(wsPref + "/" + NAPPI_EXTERNAL_REPO_FOLDER); + if (file.exists()) + return file; + return null; + } }