Switch to side-by-side view

--- a/src/main/java/net/timbusproject/extractors/modules/tavernaextractor/TavernaExtractor.java
+++ b/src/main/java/net/timbusproject/extractors/modules/tavernaextractor/TavernaExtractor.java
@@ -18,6 +18,7 @@
 
 package net.timbusproject.extractors.modules.tavernaextractor;
 
+import com.jcraft.jsch.Session;
 import edu.uci.ics.jung.algorithms.layout.AbstractLayout;
 import edu.uci.ics.jung.algorithms.layout.ISOMLayout;
 import edu.uci.ics.jung.algorithms.layout.Layout;
@@ -51,13 +52,11 @@
 import net.sf.taverna.t2.workflowmodel.processor.iteration.IterationTypeMismatchException;
 import net.sf.taverna.t2.workflowmodel.serialization.DeserializationException;
 import net.timbusproject.extractors.core.*;
-import net.timbusproject.extractors.modules.tavernaextractor.utils.ArchiLayoutUtils;
-import net.timbusproject.extractors.modules.tavernaextractor.utils.ArchiUtils;
+import net.timbusproject.extractors.modules.tavernaextractor.utils.*;
 import net.timbusproject.extractors.modules.tavernaextractor.utils.Container;
 import net.timbusproject.extractors.modules.tavernaextractor.utils.Container.Orientation;
 import org.apache.batik.swing.JSVGCanvas;
 import org.apache.commons.lang.StringUtils;
-import org.apache.log4j.Level;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
@@ -179,6 +178,8 @@
 
     private Dataflow dataflow;
 
+    private SSHManager sshManager;
+
     @Autowired
     private BundleContext bundleContext;
 
@@ -188,7 +189,11 @@
     public TavernaExtractor(){}
 
     public TavernaExtractor(boolean verbose) {
-        //  intentionally left empty in the OSGi version
+       //intenionally left empty in OSGi version
+    }
+
+    public TavernaExtractor(SSHManager sshManager) {
+        this.sshManager = sshManager;
     }
 
     /*
@@ -287,6 +292,10 @@
     public HashMap<String, Parameter> getParameters() {
         HashMap<String, Parameter> parameters = new HashMap<>();
         Parameter defaultParameter = new Parameter(false, true, ParameterType.STRING);
+        parameters.put("user", new Parameter(false));
+        parameters.put("password", new Parameter(true));
+        parameters.put("port", new Parameter(false, ParameterType.NUMBER));
+        parameters.put("fqdn", new Parameter(false));
         parameters.put("tavernaHome", defaultParameter);
         parameters.put("archimateOutputPath", defaultParameter);
         parameters.put("inputFileName", defaultParameter);
@@ -297,20 +306,25 @@
     public String extract(Endpoint endpoint, boolean b) throws Exception {
 
         // setting in- and output files
+
+        //TODO ?? detect OS of endpoint and apply to paths ??
+
         Path tavernaHome = Paths.get(endpoint.getProperty("tavernaHome"));
         String archimateOutputPath = endpoint.getProperty("archimateOutputPath");
         String inputFileName = endpoint.getProperty("inputFileName");
 
-        boolean verboseMode = true;
-        TavernaExtractor extractor = new TavernaExtractor(verboseMode);
+        System.out.println(tavernaHome);
+        System.out.println(archimateOutputPath);
+        System.out.println(inputFileName);
+
+        SSHManager _sshManager = new SSHManager(endpoint.getProperty("fqdn")
+                ,new Integer(endpoint.getProperty("port")),
+                endpoint.getProperty("user"),
+                endpoint.getProperty("password"));
+        TavernaExtractor extractor = new TavernaExtractor(_sshManager);
         TavernaExtractor.setTavernaHome(tavernaHome);
         TavernaExtractor.setArchimateOutputPath(archimateOutputPath);
         TavernaExtractor.setInputFileName(inputFileName);
-
-        /*
-            Only enable if DOT is available.
-         */
-        //TavernaExtractor.setDotLocation(dotExeLocation);
 
         // starts the execution
         extractor.process();
@@ -336,7 +350,7 @@
         LOGGER.log(LogService.LOG_INFO, "TavernaHome is set to [" + TavernaExtractor.getTavernaHome() + "].");
         LOGGER.log(LogService.LOG_INFO, "TavernaHomeLib is set to [" + TavernaExtractor.getTavernaHomeLib() + "].");
         LOGGER.log(LogService.LOG_INFO, "TavernaHomeRepo is set to [" + TavernaExtractor.getTavernaHomeRepo() + "].");
-        LOGGER.log(LogService.LOG_INFO, "Worflow input file is [" + TavernaExtractor.getInputFileName() + "].");
+        LOGGER.log(LogService.LOG_INFO, "Workflow input file is [" + TavernaExtractor.getInputFileName() + "].");
         LOGGER.log(LogService.LOG_INFO, "Archimate output file is [" + TavernaExtractor.getArchimateOutputPath() + "].");
 
         inputPorts = new Container(Orientation.VERTICAL);
@@ -363,14 +377,30 @@
 
         try {
             // try to load from classpath
-            URL workflowURL = getClass().getResource(inputFileName);
-
-            if (workflowURL == null) { // if not successful, try opening file
-
-                File f = new File(inputFileName);
-                if (f.exists()) {
-                    workflowURL = f.toURI().toURL();
-                }
+//            URL workflowURL = getClass().getResource(inputFileName);
+//
+//            if (workflowURL == null) { // if not successful, try opening file
+//
+//                File f = new File(inputFileName);
+//                if (f.exists()) {
+//                    workflowURL = f.toURI().toURL();
+//                }
+//            }
+
+            URL workflowURL = null;
+            File file = null;
+            try {
+                Session session = sshManager.createSession(15000);
+                file = sshManager.readFile(session, inputFileName);
+            }
+            catch(SSHManagerException e){
+                e.printStackTrace();
+            }
+
+
+
+            if (file.exists()) {
+                    workflowURL = file.toURI().toURL();
             }
 
             LOGGER.log(LogService.LOG_INFO, "Reading workflow from " + workflowURL);
@@ -636,6 +666,11 @@
         // Adapted from {@link ArchiveManager#saveModelToXMLFile}
         ResourceSet resourceSet = ArchimateResourceFactory.createResourceSet();
         Resource resource = resourceSet.createResource(URI.createFileURI(outFile.getAbsolutePath()));
+
+        //TODO send file to endpoint
+        //TODO we need a tmp file in the mean time
+        //sshManager.send(...);
+
         resource.getContents().add(model);
         resource.save(null);
 
@@ -1808,7 +1843,6 @@
             BufferedReader br = new BufferedReader(isr);
             String line = null;
             while ((line = br.readLine()) != null) {
-                ;
             }
             process.waitFor();