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