diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java index f559e883c1e663b8f770b0e98b1d674d1b8ff4c3..1dd4db529faa044af6489b67189af4a97ff8c27d 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java @@ -2,12 +2,14 @@ package de.hhu.ba.yoshikoWrapper; import java.util.Properties; +import org.cytoscape.application.CyApplicationManager; import org.cytoscape.application.swing.CyAction; import org.cytoscape.application.swing.CySwingApplication; import org.cytoscape.application.swing.CytoPanelComponent; import org.cytoscape.service.util.AbstractCyActivator; import org.osgi.framework.BundleContext; +import de.hhu.ba.yoshikoWrapper.core.GraphParser; import de.hhu.ba.yoshikoWrapper.gui.MainPanel; import de.hhu.ba.yoshikoWrapper.gui.MainPanelAction; @@ -21,6 +23,9 @@ public class CyActivator extends AbstractCyActivator { @Override public void start(BundleContext context) throws Exception { //TODO: Load shared library if installed on startup + CyApplicationManager cyApplicationManager = getService(context, CyApplicationManager.class); + GraphParser.registerApplicationManager(cyApplicationManager); + CySwingApplication cytoscapeDesktopService = getService(context,CySwingApplication.class); MainPanel mainPanel = new MainPanel(); diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphParser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphParser.java new file mode 100644 index 0000000000000000000000000000000000000000..83a007cb30d92cf2903930931b2c9ea2393f9216 --- /dev/null +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphParser.java @@ -0,0 +1,52 @@ +package de.hhu.ba.yoshikoWrapper.core; + +import java.util.List; + +import org.cytoscape.application.CyApplicationManager; +import org.cytoscape.model.CyEdge; +import org.cytoscape.model.CyNetwork; +import org.cytoscape.model.CyNode; +import org.cytoscape.model.CyTable; +import org.cytoscape.model.CyTableUtil; + +import de.hhu.ba.yoshikoWrapper.swig.LibraryInterface; +import de.hhu.ba.yoshikoWrapper.swig.SWIGTYPE_p_yskInput__LibraryInput; + +public class GraphParser { + + private static CyApplicationManager cy; + //**TODO MAKE DYNAMIC + private static String weightIndex = "weight"; + + public static SWIGTYPE_p_yskInput__LibraryInput parseGraph() { + if (cy == null) { + //TODO: + } + SWIGTYPE_p_yskInput__LibraryInput generatedInput = LibraryInterface.new_LibraryInput(); + CyNetwork net = cy.getCurrentNetwork(); + if (net != null){ + LibraryInterface.LibraryInput_setSize(generatedInput, net.getNodeCount()); + List<CyEdge> edges = net.getEdgeList(); + CyTable edgeTable = net.getDefaultEdgeTable(); + for (CyEdge e : edges) { + LibraryInterface.LibraryInput_addEdge( + generatedInput, + (e.getSource().getSUID()), + (e.getTarget().getSUID()), + 0.0 + ); + + } + } + return generatedInput; + } + + public static void registerApplicationManager(CyApplicationManager cyApplicationManager) { + cy = cyApplicationManager; + } + + + + + +} diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java index e35435a77214d138dbe014310c7ae65f66634bb1..dd4457f2fc6371c592dbac2f710730ea094afcce 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java @@ -19,14 +19,28 @@ public class YoshikoLoader { } + public void loadLibrary() { + if (libraryLoaded) { + return; + } + try { + System.loadLibrary("libyoshikoLibrary"); + } + catch (Exception e) { + e.printStackTrace(); + } + } + + public void loadLibrary(String libPath) { - //TODO: IF ALREADY LOADED DON'T LOAD AGAIN!!!! + if (libraryLoaded) { + return; + } try { System.load(libPath); libraryLoaded = true; } catch(UnsatisfiedLinkError e) { - System.out.print(System.getProperty("java.version")+System.getProperty("sun.arch.data.model")); e.printStackTrace(); libraryLoaded = false; } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java index c17de29d1c3419226fceb07d864e8e561857b01b..71c6de5d171ca5d6aeeff9ec6c40af589b29e57e 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java @@ -13,6 +13,7 @@ import javax.swing.JPanel; import org.cytoscape.application.swing.CytoPanelComponent; import org.cytoscape.application.swing.CytoPanelName; +import de.hhu.ba.yoshikoWrapper.core.GraphParser; import de.hhu.ba.yoshikoWrapper.core.YoshikoLoader; import de.hhu.ba.yoshikoWrapper.swig.LibraryInterface; import de.hhu.ba.yoshikoWrapper.swig.SWIGTYPE_p_yskInput__LibraryInput; @@ -76,25 +77,8 @@ public class MainPanel extends JPanel implements CytoPanelComponent { @Override public void actionPerformed(ActionEvent e) { if (yoshikoLoader.isLibraryLoaded()){ - SWIGTYPE_p_yskInput__LibraryInput instance; - instance = LibraryInterface.new_LibraryInput(); - LibraryInterface.LibraryInput_setSize(instance, 4); - LibraryInterface.LibraryInput_addEdge(instance, 0, 1, 2); - LibraryInterface.LibraryInput_addEdge(instance, 1, 3, 5); - SWIGTYPE_p_ysk__ClusterEditingSolutions solutions = LibraryInterface.processLibraryInput(instance); - long numberOfSolutions = LibraryInterface.ClusterEditingSolutions_getNumberOfSolutions(solutions); - double totalCost = LibraryInterface.ClusterEditingSolutions_getTotalCost(solutions); - System.out.println(); - JOptionPane.showMessageDialog( - self, - "YOSHIKO FOUND "+numberOfSolutions+" solutions!\n"+ - "YOSHIKO PAID THE CRUEL PRIZE OF: "+totalCost+"\n" - - ); - - //IMPORTANT: DESTROY STUFF - LibraryInterface.delete_LibraryInput(instance); - LibraryInterface.delete_ClusterEditingSolutions(solutions); + SWIGTYPE_p_yskInput__LibraryInput input = GraphParser.parseGraph(); + LibraryInterface.delete_LibraryInput(input); } } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java index 10405b5b9b40299055c72e623f2820ae6e561e4b..b12ec2d860847a0e15ff1019f05ec2730a393f76 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java @@ -47,12 +47,16 @@ public class LibraryInterface { LibraryInterfaceJNI.delete_LibraryInput(SWIGTYPE_p_yskInput__LibraryInput.getCPtr(self)); } - public static void LibraryInput_setSize(SWIGTYPE_p_yskInput__LibraryInput self, int id) { + public static void LibraryInput_setSize(SWIGTYPE_p_yskInput__LibraryInput self, long id) { LibraryInterfaceJNI.LibraryInput_setSize(SWIGTYPE_p_yskInput__LibraryInput.getCPtr(self), id); } - public static void LibraryInput_addEdge(SWIGTYPE_p_yskInput__LibraryInput self, int sourceID, int targetID, double cost, EdgeType edgeType) { - LibraryInterfaceJNI.LibraryInput_addEdge(SWIGTYPE_p_yskInput__LibraryInput.getCPtr(self), sourceID, targetID, cost, edgeType.swigValue()); + public static void LibraryInput_addEdge(SWIGTYPE_p_yskInput__LibraryInput self, long sourceID, long targetID, double cost) { + LibraryInterfaceJNI.LibraryInput_addEdge__SWIG_0(SWIGTYPE_p_yskInput__LibraryInput.getCPtr(self), sourceID, targetID, cost); + } + + public static void LibraryInput_addEdge(SWIGTYPE_p_yskInput__LibraryInput self, long sourceID, long targetID, double cost, boolean permanent, boolean forbidden) { + LibraryInterfaceJNI.LibraryInput_addEdge__SWIG_1(SWIGTYPE_p_yskInput__LibraryInput.getCPtr(self), sourceID, targetID, cost, permanent, forbidden); } public static String getVersionString() { diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java index 7b6bc0bd0ebfcf22e568d778e8992c01d9485a44..f2e0d84d58bba6ee4bd71a5ab4d28ec07b08345f 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java @@ -18,8 +18,9 @@ public class LibraryInterfaceJNI { public final static native void delete_ClusterEditingSolutions(long jarg1); public final static native long new_LibraryInput(); public final static native void delete_LibraryInput(long jarg1); - public final static native void LibraryInput_setSize(long jarg1, int jarg2); - public final static native void LibraryInput_addEdge(long jarg1, int jarg2, int jarg3, double jarg4, int jarg5); + public final static native void LibraryInput_setSize(long jarg1, long jarg2); + public final static native void LibraryInput_addEdge__SWIG_0(long jarg1, long jarg2, long jarg3, double jarg4); + public final static native void LibraryInput_addEdge__SWIG_1(long jarg1, long jarg2, long jarg3, double jarg4, boolean jarg5, boolean jarg6); public final static native String getVersionString(); public final static native long processLibraryInput(long jarg1); }