Revision: 440 http://cishell.svn.sourceforge.net/cishell/?rev=440&view=rev Author: teakettle22 Date: 2007-07-26 13:57:48 -0700 (Thu, 26 Jul 2007) Log Message: ----------- A functioning Converter Graph Assembler. For each file extension, it generates all valid paths that do not write out to another file extension. It also creates the shortest path from the given file extension to prefuse.data.Graph for use in the ConverterTester. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-25 20:50:58 UTC (rev 439) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-26 20:57:48 UTC (rev 440) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.osgi.framework.ServiceReference; @@ -17,11 +18,12 @@ public ConverterGraph(ServiceReference[] converters){ this.converters = converters; inDataToAlgorithm = new HashMap<String, ArrayList<ServiceReference>>(); - fileExtensionTestConverters = new HashMap<String, ArrayList<ConverterPath>>(); - fileExtensionCompareConverters = new HashMap<String, ConverterPath>(); + fileExtensionTestConverters = new ConcurrentHashMap<String, ArrayList<ConverterPath>>(); + fileExtensionCompareConverters = new ConcurrentHashMap<String, ConverterPath>(); associateAlgorithms(this.converters, this.inDataToAlgorithm); createConverterPaths(this.inDataToAlgorithm, this.fileExtensionTestConverters, this.fileExtensionCompareConverters); + //System.out.println("And here"); } private void associateAlgorithms(ServiceReference[] sr, Map<String, ArrayList<ServiceReference>> hm){ @@ -48,77 +50,140 @@ ConverterPath test = new ConverterPath(); //ConverterPath test.setInData(s); - createPaths(algorithms, testPaths, comparePaths, test, s); + //createPaths(algorithms, testPaths, comparePaths, test, s); + createPaths(algorithms.get(s), test, s); + //System.out.println("I've got here"); } } } - private void createPaths(Map<String,ArrayList<ServiceReference>> algorithms, Map<String, ArrayList<ConverterPath>> testPaths, - Map<String, ConverterPath> comparePaths, ConverterPath path, String dataType){ - /* + private ConverterPath createPaths(ArrayList<ServiceReference> algorithms, ConverterPath path, String dataType){ + ArrayList<ServiceReference> refs = removeReferences(algorithms, path); + + addCompareCycle(path); + if(path.getInData().equals(path.getOutData())){ - if(testPaths.get(path.getInData()) == null){ - ArrayList<ConverterPath> paths = new ArrayList<ConverterPath>(); - paths.add(new ConverterPath(path)); - testPaths.put(path.getInData(), paths); - System.out.println(path); - } - else{ - testPaths.get(path.getInData()).add(new ConverterPath(path)); - System.out.println(path); - } - }*/ - try{ - ArrayList<ServiceReference> algs = new ArrayList<ServiceReference>(algorithms.get(dataType)); + addTestCycle(path); + return path; + } + while(!refs.isEmpty()){ + ConverterPath p = new ConverterPath(path); + p.addAlgoritm(refs.get(0)); + refs.remove(0); + createPaths(this.inDataToAlgorithm.get(p.getOutData()), p, p.getOutData()); - algs.removeAll(path.getPath()); - for(ServiceReference sr : algs){ - //for(ServiceReference sr: algs){ - System.out.println(sr.getProperty("service.pid")); - //} - ConverterPath p = new ConverterPath(path); - System.out.println(); - if(p.addAlgoritm(sr)){ - algs.remove(sr); - createPaths(algorithms, testPaths,comparePaths,p,p.getOutData()); + } + return null; + } + + private void addTestCycle(ConverterPath cp){ + String firstOutData, lastInData; + firstOutData = cp.getPath().get(0).getProperty("out_data").toString(); + lastInData = cp.getPath().get(cp.getPath().size()-1).getProperty("in_data").toString(); + if(firstOutData.equals(lastInData)){ + addPath(cp); + } + } + + private void addCompareCycle(ConverterPath cp){ + if(cp.getOutData() != null){ + if(cp.getOutData().equals(ConverterGraph.testOutData)){ + String key = cp.getInData() + " " + cp.getPath().get(0).getProperty("out_data").toString(); + if(this.fileExtensionCompareConverters.get(key) == null){ + + System.out.println("Adding a new Comparison Path:\n" + cp); + this.fileExtensionCompareConverters.put(key, new ConverterPath(cp)); + } + else { + int pathSize = this.fileExtensionCompareConverters.get(key).getPath().size(); + if(pathSize > cp.getPath().size()){ + ConverterPath oldPath = this.fileExtensionCompareConverters.get(key); + System.out.println("Replacing Comparision Path:\n" + oldPath + "with\n" + + cp); + this.fileExtensionCompareConverters.put(key, new ConverterPath(cp)); } - - else{ - if(testPaths.get(path.getInData()) == null){ - ArrayList<ConverterPath> paths = new ArrayList<ConverterPath>(); - paths.add(p); - testPaths.put(path.getInData(), paths); - System.out.println(p); - } - else{ - testPaths.get(path.getInData()).add(p); - System.out.println(p); - } - algs.remove(sr); + } + } + } + } + + private static ArrayList<ServiceReference> removeReferences(ArrayList<ServiceReference> al, ConverterPath cp){ + ArrayList<ServiceReference> srs = new ArrayList<ServiceReference>(al); + srs.removeAll(cp.getPath()); + ArrayList<ServiceReference> forbidden = new ArrayList<ServiceReference>(); + for(ServiceReference sr: srs){ + String ss = sr.getProperty("out_data").toString(); + if(ss.startsWith("file-ext") && (!ss.equals(cp.getInData()))){ + System.out.println(sr.getProperty("service.pid") + " yes"); + forbidden.add(sr); } } - }catch(NullPointerException npe){ - npe.printStackTrace(); + srs.removeAll(forbidden); + return srs; + } + + private void addPath(ConverterPath p){ + if(this.fileExtensionTestConverters.get(p.getInData()) == null){ + System.out.println("Adding a new path"); + ArrayList<ConverterPath> paths = new ArrayList<ConverterPath>(); + paths.add(p); + this.fileExtensionTestConverters.put(p.getInData(), paths); + System.out.println("Successfully Added"); } + else{ + System.out.println("Adding a path"); + this.fileExtensionTestConverters.get(p.getInData()).add(p); + System.out.println("Successfully Added"); } + } + public String printTestConverterPath(String s){ + StringBuffer sb = new StringBuffer(); + for(ConverterPath cp : this.fileExtensionTestConverters.get(s)){ + sb.append(cp.toString()); + } + sb.trimToSize(); + return sb.toString(); + } + public String printTestConverterPaths(){ + StringBuffer sb = new StringBuffer(); + for(String s : this.fileExtensionTestConverters.keySet()){ + sb.append(printTestConverterPath(s)); + } + sb.trimToSize(); + return sb.toString(); + } + + + public String printComparisonConverterPath(String s){ + return this.fileExtensionCompareConverters.get(s).toString(); + } + + public String printComparisonConverterPaths(){ + StringBuffer sb = new StringBuffer(); + for(String s: this.fileExtensionCompareConverters.keySet()){ + sb.append(printComparisonConverterPath(s)); + } + sb.trimToSize(); + return sb.toString(); + } + + public String toString(){ - String str = ""; + StringBuffer str = new StringBuffer(); for(String s : this.inDataToAlgorithm.keySet()){ - str += s + "\n"; + str.append(s + "\n"); for(ServiceReference sr : this.inDataToAlgorithm.get(s)){ - str += "\t" + sr.getProperty("service.pid") + "\n"; + str.append("\t" + sr.getProperty("service.pid") + "\n"); } } - - for(String s : this.fileExtensionTestConverters.keySet()){ - for(ConverterPath cp : this.fileExtensionTestConverters.get(s)){ - str += cp.toString(); - } - } - - return str; + str.append("Test Paths:\n"); + str.append(printTestConverterPaths()); + str.append("Comparison Paths:\n"); + str.append(printComparisonConverterPaths()); + str.trimToSize(); + return str.toString(); } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 442 http://cishell.svn.sourceforge.net/cishell/?rev=442&view=rev Author: teakettle22 Date: 2007-07-30 10:12:48 -0700 (Mon, 30 Jul 2007) Log Message: ----------- Retrieve the list of Compare Graphs as a two dimensional array of ConverterPaths. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 16:11:36 UTC (rev 441) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 17:12:48 UTC (rev 442) @@ -200,4 +200,18 @@ str.trimToSize(); return str.toString(); } + + public ArrayList getCompareGraph(String s){ + return (ArrayList)this.fileExtensionCompareConverters.get(s); + } + + public ArrayList getCompareGraphs(){ + String[] fileExtensions = (String[])this.fileExtensionCompareConverters.keySet().toArray(); + ArrayList graphs = new ArrayList(); + for(int i = 0; i < fileExtensions.length; i++){ + graphs.add(getCompareGraph(fileExtensions[i])); + } + return graphs; + } + } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 444 http://cishell.svn.sourceforge.net/cishell/?rev=444&view=rev Author: teakettle22 Date: 2007-07-30 10:28:26 -0700 (Mon, 30 Jul 2007) Log Message: ----------- More accurate naming Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 17:25:19 UTC (rev 443) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 17:28:26 UTC (rev 444) @@ -201,28 +201,28 @@ return str.toString(); } - public ArrayList getTestGraph(String s){ + public ArrayList getTestPath(String s){ return (ArrayList)this.fileExtensionTestConverters.get(s); } - public ArrayList getTestGraphs(){ + public ArrayList getTestPaths(){ String[] fileExtensions = (String[])this.fileExtensionTestConverters.keySet().toArray(); ArrayList graphs = new ArrayList(); for(int i = 0; i < fileExtensions.length; i++){ - graphs.add(getTestGraph(fileExtensions[i])); + graphs.add(getTestPath(fileExtensions[i])); } return graphs; } - public ConverterPath getCompareGraph(String s){ + public ConverterPath getComparePath(String s){ return (ConverterPath)this.fileExtensionCompareConverters.get(s); } - public ArrayList getCompareGraphs(){ + public ArrayList getComparePaths(){ String[] fileExtensions = (String[])this.fileExtensionCompareConverters.keySet().toArray(); ArrayList graphs = new ArrayList(); for(int i = 0; i < fileExtensions.length; i++){ - graphs.add(getCompareGraph(fileExtensions[i])); + graphs.add(getComparePath(fileExtensions[i])); } return graphs; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 446 http://cishell.svn.sourceforge.net/cishell/?rev=446&view=rev Author: teakettle22 Date: 2007-07-30 10:58:27 -0700 (Mon, 30 Jul 2007) Log Message: ----------- fixed the fixes Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 17:54:45 UTC (rev 445) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 17:58:27 UTC (rev 446) @@ -204,17 +204,17 @@ return str.toString(); } - public ServiceReference[] getTestPath(String s){ - return (ServiceReference[])((ArrayList)this.fileExtensionTestConverters.get(s)).toArray(); + public ConverterPath[] getTestPath(String s){ + return (ConverterPath[])((ArrayList)this.fileExtensionTestConverters.get(s)).toArray(); } - public ServiceReference[][] getTestPaths(){ + public ConverterPath[][] getTestPaths(){ String[] fileExtensions = (String[])this.fileExtensionTestConverters.keySet().toArray(); ArrayList graphs = new ArrayList(); for(int i = 0; i < fileExtensions.length; i++){ graphs.add(getTestPath(fileExtensions[i])); } - return (ServiceReference[][])graphs.toArray(); + return (ConverterPath[][])graphs.toArray(); } public ConverterPath getComparePath(String s){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 447 http://cishell.svn.sourceforge.net/cishell/?rev=447&view=rev Author: teakettle22 Date: 2007-07-30 11:00:47 -0700 (Mon, 30 Jul 2007) Log Message: ----------- corrected return types again. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 17:58:27 UTC (rev 446) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-07-30 18:00:47 UTC (rev 447) @@ -221,12 +221,12 @@ return (ConverterPath)this.fileExtensionCompareConverters.get(s); } - public ServiceReference[] getComparePaths(){ + public ConverterPath[] getComparePaths(){ String[] fileExtensions = (String[])this.fileExtensionCompareConverters.keySet().toArray(); ArrayList graphs = new ArrayList(); for(int i = 0; i < fileExtensions.length; i++){ graphs.add(getComparePath(fileExtensions[i])); } - return (ServiceReference[])graphs.toArray(); + return (ConverterPath[])graphs.toArray(); } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 455 http://cishell.svn.sourceforge.net/cishell/?rev=455&view=rev Author: teakettle22 Date: 2007-08-01 12:15:24 -0700 (Wed, 01 Aug 2007) Log Message: ----------- Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-01 19:12:45 UTC (rev 454) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-01 19:15:24 UTC (rev 455) @@ -28,7 +28,7 @@ associateAlgorithms(this.converters, this.inDataToAlgorithm); createConverterPaths(this.inDataToAlgorithm, this.fileExtensionTestConverters, this.fileExtensionCompareConverters); - //System.out.println("And here"); + } private void associateAlgorithms(ServiceReference[] sr, Map hm){ @@ -56,11 +56,11 @@ ConverterPath test = new ConverterPath(); - //ConverterPath + test.setInData(s); - //createPaths(algorithms, testPaths, comparePaths, test, s); + createPaths((ArrayList)algorithms.get(s), test, s); - //System.out.println("I've got here"); + } } } @@ -99,16 +99,14 @@ String key = cp.getInData() + " " + ((ServiceReference)cp.getPath().get(0)).getProperty("out_data").toString(); if(this.fileExtensionCompareConverters.get(key) == null){ - // System.out.println("Adding a new Comparison Path:\n" + cp); + this.fileExtensionCompareConverters.put(key, new ConverterPath(cp)); } else { ConverterPath tempPath = (ConverterPath)this.fileExtensionCompareConverters.get(key); int pathSize = tempPath.getPath().size(); if(pathSize > cp.getPath().size()){ - //ConverterPath oldPath = (ConverterPath)this.fileExtensionCompareConverters.get(key); - //System.out.println("Replacing Comparision Path:\n" + oldPath + "with\n" - // + cp); + this.fileExtensionCompareConverters.put(key, new ConverterPath(cp)); } } @@ -124,7 +122,7 @@ ServiceReference sr = (ServiceReference)srs.get(i); String ss = sr.getProperty("out_data").toString(); if(ss.startsWith("file-ext") && (!ss.equals(cp.getInData()))){ - //System.out.println(sr.getProperty("service.pid") + " yes"); + forbidden.add(sr); } } @@ -134,16 +132,16 @@ private void addPath(ConverterPath p){ if(this.fileExtensionTestConverters.get(p.getInData()) == null){ - //System.out.println("Adding a new path"); + ArrayList paths = new ArrayList(); paths.add(p); this.fileExtensionTestConverters.put(p.getInData(), paths); - //System.out.println("Successfully Added"); + } else{ - //System.out.println("Adding a path"); + ((ArrayList)this.fileExtensionTestConverters.get(p.getInData())).add(p); - //System.out.println("Successfully Added"); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 467 http://cishell.svn.sourceforge.net/cishell/?rev=467&view=rev Author: teakettle22 Date: 2007-08-09 13:16:20 -0700 (Thu, 09 Aug 2007) Log Message: ----------- caught an extra System.out.println Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-09 19:44:36 UTC (rev 466) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-09 20:16:20 UTC (rev 467) @@ -190,7 +190,7 @@ keySet = (String[])this.fileExtensionCompareConverters.keySet().toArray(keySet); for(int i = 0; i < keySet.length; i++){ String s = keySet[i]; - System.out.println(s); + //System.out.println(s); sb.append(printComparisonConverterPath(s)); } sb.trimToSize(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 503 http://cishell.svn.sourceforge.net/cishell/?rev=503&view=rev Author: mwlinnem Date: 2007-08-30 13:38:58 -0700 (Thu, 30 Aug 2007) Log Message: ----------- Cleaned up and commented some methods while hunting for missing edge bug in Converter Graph. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-30 19:24:13 UTC (rev 502) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-30 20:38:58 UTC (rev 503) @@ -17,7 +17,7 @@ public class ConverterGraph { prefuse.data.Graph converterGraph; - Map inDataToAlgorithm; + Map inDataToConverters; Map fileExtensionTestConverters; Map fileExtensionCompareConverters; Converter[] converters; @@ -25,18 +25,22 @@ private LogService log; private static final String testOutData = "prefuse.data.Graph"; - public ConverterGraph(ServiceReference[] converterRefs, BundleContext bContext, LogService log) { + public ConverterGraph(ServiceReference[] converterRefs, + BundleContext bContext, LogService log) { this.bContext = bContext; this.log = log; this.converters = createConverters(converterRefs); - inDataToAlgorithm = new HashMap();//<String, List<Convertere>>(); - fileExtensionTestConverters = new ConcurrentHashMap();//<String, List<ConverterPath>>(); - fileExtensionCompareConverters = new ConcurrentHashMap();//<String, ConverterPath>(); + inDataToConverters = + new HashMap();//<String, List<Convertere>>(); + fileExtensionTestConverters = + new ConcurrentHashMap();//<String, List<ConverterPath>>(); + fileExtensionCompareConverters = + new ConcurrentHashMap();//<String, ConverterPath>(); - associateAlgorithms(this.converters, this.inDataToAlgorithm); - createConverterPaths(this.inDataToAlgorithm, this.fileExtensionTestConverters, this.fileExtensionCompareConverters); + associateConverters(this.converters, this.inDataToConverters); + createConverterPaths(this.inDataToConverters, this.fileExtensionTestConverters, this.fileExtensionCompareConverters); } @@ -50,10 +54,12 @@ return (Converter[]) converters.toArray(new Converter[0]); } - private void associateAlgorithms(Converter[] cs, Map hm){ + private void associateConverters(Converter[] cs, Map hm){ for (int i = 0; i < cs.length; i++){ Converter c = cs[i]; + String s = c.getInData(); + if(hm.get(s) == null){ List l = new ArrayList(); l.add(c); @@ -98,7 +104,7 @@ ConverterPath p = new ConverterPath(path, this.bContext); p.add((Converter) cs.get(0)); cs.remove(0); - createPaths((List)this.inDataToAlgorithm.get(p.getOutData()), p, p.getOutData()); + createPaths((List)this.inDataToConverters.get(p.getOutData()), p, p.getOutData()); } return null; @@ -214,12 +220,12 @@ public String toString(){ StringBuffer str = new StringBuffer(); - String[] keySet = new String[this.inDataToAlgorithm.keySet().size()]; - keySet = (String[])this.inDataToAlgorithm.keySet().toArray(keySet); + String[] keySet = new String[this.inDataToConverters.keySet().size()]; + keySet = (String[])this.inDataToConverters.keySet().toArray(keySet); for(int i = 0; i < keySet.length; i++){ String s = keySet[i]; str.append(s + "\r\n"); - List al = (List)this.inDataToAlgorithm.get(s); + List al = (List)this.inDataToConverters.get(s); for(int j = 0; j < al.size(); j++){ Converter c = (Converter)al.get(j); str.append("\t" + c.getUniqueName() + "\r\n"); @@ -274,19 +280,25 @@ } public File asNWB() { - File f = getTempFile(); + Map nodes = assembleNodesSet(); - TreeSet output = assembleEdges(nodes); - try{ - FileWriter out = new FileWriter(f); - BufferedWriter bw = new BufferedWriter(out); + TreeSet edges = assembleEdges(nodes); - writeNodes(bw,nodes); - writeEdges(bw,output); - } - catch(IOException ex){ + File f = getTempFile(); + try { + BufferedWriter writer = + new BufferedWriter(new FileWriter(f)); + + writeNodes(writer,nodes); + writeEdges(writer,edges); + + } catch(IOException e) { System.out.println("Blurt!"); + this.log.log(LogService.LOG_ERROR, + "IOException while creating converter graph file", + e); } + return f; } @@ -298,13 +310,16 @@ private void writeNodes(BufferedWriter bw, Map nodes) throws IOException{ writeNodeHeader(bw, nodes.size()); + String[] keySet = new String[nodes.keySet().size()]; + keySet = (String[])nodes.keySet().toArray(keySet); for(int i = 0; i < keySet.length; i++){ - bw.flush(); bw.write(nodes.get(keySet[i]) + " \"" + keySet[i]+"\"\r\n"); } + bw.flush(); + } private void writeEdgeHeader(BufferedWriter bw, int numEdges) throws IOException{ @@ -320,9 +335,10 @@ edgeArray = (String[])edges.toArray(edgeArray); for(int i = 0; i < edgeArray.length; i++){ - bw.flush(); bw.write(edgeArray[i]+"\r\n"); } + + bw.flush(); } private Map assembleNodesSet(){ @@ -330,54 +346,89 @@ Map nodesToInt = new ConcurrentHashMap(); //create a set of all the in_data, out_data, and algorithm names - String[] keySet = new String[this.inDataToAlgorithm.keySet().size()]; - keySet = (String[])this.inDataToAlgorithm.keySet().toArray(keySet); - TreeSet nodeNames = new TreeSet(); - for(int i = 0; i < keySet.length; i++){ - String s = keySet[i]; - nodeNames.add(s); - List paths = (List)this.inDataToAlgorithm.get(s); - Converter[] convs = new Converter[paths.size()]; - convs = (Converter[])paths.toArray(convs); + + String[] inDatas = new String[this.inDataToConverters.keySet().size()]; + inDatas = (String[])this.inDataToConverters.keySet().toArray(inDatas); + + TreeSet nodeNameList = new TreeSet(); + + //for each unique in_data... + for(int i = 0; i < inDatas.length; i++){ + String inData = inDatas[i]; + //add the in_data string to our list of node names + nodeNameList.add(inData); + + List convsList = (List)this.inDataToConverters.get(inData); + Converter[] convs = new Converter[convsList.size()]; + convs = (Converter[])convsList.toArray(convs); + + //for each converter associated with each in_data... for(int j = 0; j < convs.length; j++){ Converter c = convs[j]; - nodeNames.add(c.getUniqueName()); + //add the name of the converter to our list of node names + nodeNameList.add(c.getShortName()); } } - String[] names = new String[nodeNames.size()]; - names = (String[])nodeNames.toArray(names); + String[] names = new String[nodeNameList.size()]; + names = (String[])nodeNameList.toArray(names); + //for each node name in our list of node names ... for(int i = 0; i < names.length; i++){ + //associate that name with a unique integer in our map nodesToInt.put(names[i], new Integer(i+1)); } + //return our map of nodes to unique integers return nodesToInt; } - private TreeSet assembleEdges(Map m){ + private TreeSet assembleEdges(Map nodeNameToInt){ TreeSet edges = new TreeSet(); - String[] keySet = new String[m.size()]; - keySet = (String[])m.keySet().toArray(keySet); - for(int i = 0; i < keySet.length; i++){ - String s = keySet[i]; - List paths = (List)this.inDataToAlgorithm.get(s); - if(paths != null){ - Converter[] convs = new Converter[paths.size()]; - convs = (Converter[])paths.toArray(convs); + + + String[] nodeNames = new String[nodeNameToInt.size()]; + nodeNames = (String[])nodeNameToInt.keySet().toArray(nodeNames); + //for each node name in our list of node names... + for(int i = 0; i < nodeNames.length; i++){ + String nodeName = nodeNames[i]; - for(int j = 0; j < convs.length; j++){ - String output1 = m.get(s).toString() + " "; - String output2 = convs[j].getUniqueName(); - output1 += m.get(output2).toString(); - output2 = m.get(output2).toString() + " " + m.get(convs[j].getOutData()); - edges.add(output1); - edges.add(output2); + /* + * check to see if that node name is associated with a list of + * converters. + * + * (Node names are either the names of in_data formats or the + * names of converters) + */ + List converterList = (List)this.inDataToConverters.get(nodeName); + + //if our node name is associated with a list of converters... + if(converterList != null) { + //(then our node name must be the name of an in_data format) + Converter[] convs = new Converter[converterList.size()]; + convs = (Converter[])converterList.toArray(convs); + + //for each converter... + for(int j = 0; j < convs.length; j++){ + String convName = convs[j].getShortName(); + + String nodeNumber = nodeNameToInt.get(nodeName).toString(); + String convNumber = nodeNameToInt.get(convName).toString(); + + //add an edge from our original node to this converter + String edge1 = nodeNumber + " " + convNumber; + edges.add(edge1); + //and add an edge from this converter to our original node + String edge2 = convNumber + " " + nodeNumber; + edges.add(edge2); + + } } - } } + + //return our set of edges return edges; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 506 http://cishell.svn.sourceforge.net/cishell/?rev=506&view=rev Author: mwlinnem Date: 2007-08-30 14:19:53 -0700 (Thu, 30 Aug 2007) Log Message: ----------- Fixed error I made while refactoring, and fixed the missing edge bug. Removed Paths: ------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Deleted: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-30 20:39:55 UTC (rev 505) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-30 21:19:53 UTC (rev 506) @@ -1,452 +0,0 @@ -package org.cishell.testing.convertertester.core.converter.graph; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.TreeSet; -import java.util.concurrent.ConcurrentHashMap; - -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.service.log.LogService; - -public class ConverterGraph { - prefuse.data.Graph converterGraph; - Map inDataToConverters; - Map fileExtensionTestConverters; - Map fileExtensionCompareConverters; - Converter[] converters; - BundleContext bContext; - private LogService log; - private static final String testOutData = "prefuse.data.Graph"; - - public ConverterGraph(ServiceReference[] converterRefs, - BundleContext bContext, LogService log) { - this.bContext = bContext; - this.log = log; - - this.converters = createConverters(converterRefs); - - inDataToConverters = - new HashMap();//<String, List<Convertere>>(); - fileExtensionTestConverters = - new ConcurrentHashMap();//<String, List<ConverterPath>>(); - fileExtensionCompareConverters = - new ConcurrentHashMap();//<String, ConverterPath>(); - - associateConverters(this.converters, this.inDataToConverters); - createConverterPaths(this.inDataToConverters, this.fileExtensionTestConverters, this.fileExtensionCompareConverters); - - } - - private Converter[] createConverters(ServiceReference[] convRefs) { - List converters = new ArrayList(); - - for (int ii = 0; ii < convRefs.length; ii++) { - converters.add(new Converter(this.bContext, convRefs[ii])); - } - - return (Converter[]) converters.toArray(new Converter[0]); - } - - private void associateConverters(Converter[] cs, Map hm){ - for (int i = 0; i < cs.length; i++){ - Converter c = cs[i]; - - String s = c.getInData(); - - if(hm.get(s) == null){ - List l = new ArrayList(); - l.add(c); - hm.put(s, l); - } - else{ - ((List)hm.get(s)).add(c); - } - } - } - - private void createConverterPaths(Map algorithms, Map testPaths, - Map comparePaths){ - String[] keySet = new String[algorithms.keySet().size()]; - keySet = (String[])algorithms.keySet().toArray(keySet); - for(int i = 0; i < keySet.length; i++){ - String s = keySet[i]; - if(s.startsWith("file-ext")){ - - - ConverterPath test = new ConverterPath(this.bContext, this.log); - - test.setInData(s); - - createPaths((List)algorithms.get(s), test, s); - - } - } - - } - - private ConverterPath createPaths(List algorithms, ConverterPath path, String dataType){ - List cs = removeReferences(algorithms, path); - - addCompareCycle(path); - - if(path.getInData().equals(path.getOutData())){ - addTestCycle(path); - return path; - } - while(!cs.isEmpty()){ - ConverterPath p = new ConverterPath(path, this.bContext); - p.add((Converter) cs.get(0)); - cs.remove(0); - createPaths((List)this.inDataToConverters.get(p.getOutData()), p, p.getOutData()); - - } - return null; - } - - private void addTestCycle(ConverterPath cp){ - String firstOutData, lastInData; - firstOutData = ((Converter) cp.getPath().get(0)).getOutData(); - lastInData = ((Converter)cp.getPath().get(cp.getPath().size()-1)).getInData(); - if(firstOutData.equals(lastInData)){ - addTestPath(cp); - } - } - - private void addCompareCycle(ConverterPath cp){ - if(cp.getOutData() != null){ - if(cp.getOutData().equals(ConverterGraph.testOutData)){ - String key = cp.getInData() + " " + ((Converter) cp.getPath().get(0)).getOutData(); - //System.out.println(key); - if(this.fileExtensionCompareConverters.get(key) == null){ - - - this.fileExtensionCompareConverters.put(key, new ConverterPath(cp, this.bContext)); - } - else { - ConverterPath tempPath = (ConverterPath)this.fileExtensionCompareConverters.get(key); - int pathSize = tempPath.getPath().size(); - if(pathSize > cp.getPath().size()){ - - this.fileExtensionCompareConverters.put(key, new ConverterPath(cp, this.bContext)); - } - } - } - } - } - - private static List removeReferences(List al, ConverterPath cp){ - List cs = new ArrayList(al); - cs.removeAll(cp.getPath()); - List forbidden = new ArrayList(); - for(int i = 0; i < cs.size(); i++){ - Converter c = (Converter) cs.get(i); - String outData = c.getOutData(); - if(outData.startsWith("file-ext") && (!outData.equals(cp.getInData()))){ - - forbidden.add(c); - } - } - cs.removeAll(forbidden); - return cs; - } - - private void addTestPath(ConverterPath p){ - String key = p.getInData(); - key += " "; - key += ((Converter)p.getPath().get(0)).getOutData(); - if(this.fileExtensionTestConverters.get(key) == null){ - - List paths = new ArrayList(); - paths.add(p); - this.fileExtensionTestConverters.put(key, paths); - - } - else{ - - ((List)this.fileExtensionTestConverters.get(key)).add(p); - - } - } - - - public String printTestConverterPath(String s){ - StringBuffer sb = new StringBuffer(); - List al = (List)this.fileExtensionTestConverters.get(s); - for(int i = 0; i < al.size(); i++){ - ConverterPath cp = (ConverterPath)al.get(i); - sb.append(cp.toString()); - } - sb.trimToSize(); - return sb.toString(); - } - - public String printTestConverterPaths(){ - StringBuffer sb = new StringBuffer(); - String[] keySet = new String[this.fileExtensionTestConverters.keySet().size()]; - keySet = (String[])this.fileExtensionTestConverters.keySet().toArray(keySet); - for(int i = 0; i < keySet.length; i++){ - String s = keySet[i]; - sb.append(printTestConverterPath(s)); - } - sb.trimToSize(); - return sb.toString(); - } - - - public String printComparisonConverterPath(String s){ - return this.fileExtensionCompareConverters.get(s).toString(); - } - - public String printComparisonConverterPaths(){ - StringBuffer sb = new StringBuffer(); - String[] keySet = new String[this.fileExtensionCompareConverters.keySet().size()]; - keySet = (String[])this.fileExtensionCompareConverters.keySet().toArray(keySet); - for(int i = 0; i < keySet.length; i++){ - String s = keySet[i]; - //System.out.println(s); - sb.append(printComparisonConverterPath(s)); - } - sb.trimToSize(); - return sb.toString(); - } - - - public String toString(){ - StringBuffer str = new StringBuffer(); - String[] keySet = new String[this.inDataToConverters.keySet().size()]; - keySet = (String[])this.inDataToConverters.keySet().toArray(keySet); - for(int i = 0; i < keySet.length; i++){ - String s = keySet[i]; - str.append(s + "\r\n"); - List al = (List)this.inDataToConverters.get(s); - for(int j = 0; j < al.size(); j++){ - Converter c = (Converter)al.get(j); - str.append("\t" + c.getUniqueName() + "\r\n"); - } - } - str.append("Test Paths:\r\n"); - str.append(printTestConverterPaths()); - str.append("Comparison Paths:\r\n"); - str.append(printComparisonConverterPaths()); - str.trimToSize(); - return str.toString(); - } - - public ConverterPath[] getTestPath(String s){ - return (ConverterPath[])((List)this.fileExtensionTestConverters.get(s)).toArray(new ConverterPath[0]); - } - - public ConverterPath[][] getTestPaths(){ - ConverterPath[][] paths = new ConverterPath[this.fileExtensionTestConverters.keySet().size()][]; - String[] fileExtensions = (String[])this.fileExtensionTestConverters.keySet().toArray(new String[0]); - for(int i = 0; i < fileExtensions.length; i++){ - paths[i] = (getTestPath(fileExtensions[i])); - } - //this line may be busted - return paths; - } - - public ConverterPath getComparePath(String s){ - return (ConverterPath)this.fileExtensionCompareConverters.get(s); - } - - - public ConverterPath[] getComparePaths(){ - String[] fileExtensions = (String[])this.fileExtensionCompareConverters.keySet().toArray(new String[0]); - List graphs = new ArrayList(); - for(int i = 0; i < fileExtensions.length; i++){ - graphs.add(getComparePath(fileExtensions[i])); - } - return (ConverterPath[])graphs.toArray(new ConverterPath[0]); - } - - public Map getCompareMap(){ - return this.fileExtensionCompareConverters; - } - - public Map getTestMap(){ - return this.fileExtensionTestConverters; - } - - public Converter[] getAllConverters() { - return this.converters; - } - - public File asNWB() { - - Map nodes = assembleNodesSet(); - TreeSet edges = assembleEdges(nodes); - - File f = getTempFile(); - try { - BufferedWriter writer = - new BufferedWriter(new FileWriter(f)); - - writeNodes(writer,nodes); - writeEdges(writer,edges); - - } catch(IOException e) { - System.out.println("Blurt!"); - this.log.log(LogService.LOG_ERROR, - "IOException while creating converter graph file", - e); - } - - return f; - } - - private void writeNodeHeader(BufferedWriter bw, int numNodes) throws IOException{ - bw.flush(); - bw.write("*Nodes " + numNodes + "\r\nid*int label*string\r\n"); - - } - - private void writeNodes(BufferedWriter bw, Map nodes) throws IOException{ - writeNodeHeader(bw, nodes.size()); - - String[] keySet = new String[nodes.keySet().size()]; - - keySet = (String[])nodes.keySet().toArray(keySet); - for(int i = 0; i < keySet.length; i++){ - bw.write(nodes.get(keySet[i]) + " \"" + keySet[i]+"\"\r\n"); - } - - bw.flush(); - - } - - private void writeEdgeHeader(BufferedWriter bw, int numEdges) throws IOException{ - bw.flush(); - bw.write("*DirectedEdges " + numEdges + "\r\nsource*int target*int\r\n"); - } - - - private void writeEdges(BufferedWriter bw, TreeSet edges) throws IOException{ - writeEdgeHeader(bw,edges.size()); - - String[] edgeArray = new String[edges.size()]; - edgeArray = (String[])edges.toArray(edgeArray); - - for(int i = 0; i < edgeArray.length; i++){ - bw.write(edgeArray[i]+"\r\n"); - } - - bw.flush(); - } - - private Map assembleNodesSet(){ - - Map nodesToInt = new ConcurrentHashMap(); - - //create a set of all the in_data, out_data, and algorithm names - - String[] inDatas = new String[this.inDataToConverters.keySet().size()]; - inDatas = (String[])this.inDataToConverters.keySet().toArray(inDatas); - - TreeSet nodeNameList = new TreeSet(); - - //for each unique in_data... - for(int i = 0; i < inDatas.length; i++){ - String inData = inDatas[i]; - - //add the in_data string to our list of node names - nodeNameList.add(inData); - - List convsList = (List)this.inDataToConverters.get(inData); - Converter[] convs = new Converter[convsList.size()]; - convs = (Converter[])convsList.toArray(convs); - - //for each converter associated with each in_data... - for(int j = 0; j < convs.length; j++){ - Converter c = convs[j]; - //add the name of the converter to our list of node names - nodeNameList.add(c.getShortName()); - } - } - - String[] names = new String[nodeNameList.size()]; - names = (String[])nodeNameList.toArray(names); - - //for each node name in our list of node names ... - for(int i = 0; i < names.length; i++){ - //associate that name with a unique integer in our map - nodesToInt.put(names[i], new Integer(i+1)); - } - - //return our map of nodes to unique integers - return nodesToInt; - } - - private TreeSet assembleEdges(Map nodeNameToInt){ - TreeSet edges = new TreeSet(); - - - String[] nodeNames = new String[nodeNameToInt.size()]; - nodeNames = (String[])nodeNameToInt.keySet().toArray(nodeNames); - //for each node name in our list of node names... - for(int i = 0; i < nodeNames.length; i++){ - String nodeName = nodeNames[i]; - - /* - * check to see if that node name is associated with a list of - * converters. - * - * (Node names are either the names of in_data formats or the - * names of converters) - */ - List converterList = (List)this.inDataToConverters.get(nodeName); - - //if our node name is associated with a list of converters... - if(converterList != null) { - //(then our node name must be the name of an in_data format) - Converter[] convs = new Converter[converterList.size()]; - convs = (Converter[])converterList.toArray(convs); - - //for each converter... - for(int j = 0; j < convs.length; j++){ - String convName = convs[j].getShortName(); - - String nodeNumber = nodeNameToInt.get(nodeName).toString(); - String convNumber = nodeNameToInt.get(convName).toString(); - - //add an edge from our original node to this converter - String edge1 = nodeNumber + " " + convNumber; - edges.add(edge1); - //and add an edge from this converter to our original node - String edge2 = convNumber + " " + nodeNumber; - edges.add(edge2); - - } - } - - } - - //return our set of edges - return edges; - } - - private File getTempFile(){ - File tempFile; - - String tempPath = System.getProperty("java.io.tmpdir"); - File tempDir = new File(tempPath+File.separator+"temp"); - if(!tempDir.exists()) - tempDir.mkdir(); - try{ - tempFile = File.createTempFile("NWB-Session-", ".nwb", tempDir); - - }catch (IOException e){ - - tempFile = new File (tempPath+File.separator+"nwbTemp"+File.separator+"temp.nwb"); - - } - return tempFile; - } -} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 507 http://cishell.svn.sourceforge.net/cishell/?rev=507&view=rev Author: mwlinnem Date: 2007-08-30 14:26:38 -0700 (Thu, 30 Aug 2007) Log Message: ----------- Fixed error I made while refactoring, and fixed the missing edge bug. Added Paths: ----------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java Added: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/converter/graph/ConverterGraph.java 2007-08-30 21:26:38 UTC (rev 507) @@ -0,0 +1,459 @@ +package org.cishell.testing.convertertester.core.converter.graph; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeSet; +import java.util.concurrent.ConcurrentHashMap; + +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.log.LogService; + +public class ConverterGraph { + private prefuse.data.Graph converterGraph; + private Map inDataToConverters; + private Map fileExtensionTestConverters; + private Map fileExtensionCompareConverters; + private Converter[] converters; + private BundleContext bContext; + private LogService log; + private static final String testOutData = "prefuse.data.Graph"; + + public ConverterGraph(ServiceReference[] converterRefs, + BundleContext bContext, LogService log) { + this.bContext = bContext; + this.log = log; + + this.converters = createConverters(converterRefs); + + inDataToConverters = + new HashMap();//<String, List<Convertere>>(); + fileExtensionTestConverters = + new ConcurrentHashMap();//<String, List<ConverterPath>>(); + fileExtensionCompareConverters = + new ConcurrentHashMap();//<String, ConverterPath>(); + + associateConverters(this.converters, this.inDataToConverters); + createConverterPaths(this.inDataToConverters, this.fileExtensionTestConverters, this.fileExtensionCompareConverters); + + } + + private Converter[] createConverters(ServiceReference[] convRefs) { + List converters = new ArrayList(); + + for (int ii = 0; ii < convRefs.length; ii++) { + converters.add(new Converter(this.bContext, convRefs[ii])); + } + + return (Converter[]) converters.toArray(new Converter[0]); + } + + private void associateConverters(Converter[] cs, Map hm){ + for (int i = 0; i < cs.length; i++){ + Converter c = cs[i]; + + String s = c.getInData(); + + if(hm.get(s) == null){ + List l = new ArrayList(); + l.add(c); + hm.put(s, l); + } + else{ + ((List)hm.get(s)).add(c); + } + } + } + + private void createConverterPaths(Map algorithms, Map testPaths, + Map comparePaths){ + String[] keySet = new String[algorithms.keySet().size()]; + keySet = (String[])algorithms.keySet().toArray(keySet); + for(int i = 0; i < keySet.length; i++){ + String s = keySet[i]; + if(s.startsWith("file-ext")){ + + + ConverterPath test = new ConverterPath(this.bContext, this.log); + + test.setInData(s); + + createPaths((List)algorithms.get(s), test, s); + + } + } + + } + + private ConverterPath createPaths(List algorithms, ConverterPath path, String dataType){ + List cs = removeReferences(algorithms, path); + + addCompareCycle(path); + + if(path.getInData().equals(path.getOutData())){ + addTestCycle(path); + return path; + } + while(!cs.isEmpty()){ + ConverterPath p = new ConverterPath(path, this.bContext); + p.add((Converter) cs.get(0)); + cs.remove(0); + createPaths((List)this.inDataToConverters.get(p.getOutData()), p, p.getOutData()); + + } + return null; + } + + private void addTestCycle(ConverterPath cp){ + String firstOutData, lastInData; + firstOutData = ((Converter) cp.getPath().get(0)).getOutData(); + lastInData = ((Converter)cp.getPath().get(cp.getPath().size()-1)).getInData(); + if(firstOutData.equals(lastInData)){ + addTestPath(cp); + } + } + + private void addCompareCycle(ConverterPath cp){ + if(cp.getOutData() != null){ + if(cp.getOutData().equals(ConverterGraph.testOutData)){ + String key = cp.getInData() + " " + ((Converter) cp.getPath().get(0)).getOutData(); + //System.out.println(key); + if(this.fileExtensionCompareConverters.get(key) == null){ + + + this.fileExtensionCompareConverters.put(key, new ConverterPath(cp, this.bContext)); + } + else { + ConverterPath tempPath = (ConverterPath)this.fileExtensionCompareConverters.get(key); + int pathSize = tempPath.getPath().size(); + if(pathSize > cp.getPath().size()){ + + this.fileExtensionCompareConverters.put(key, new ConverterPath(cp, this.bContext)); + } + } + } + } + } + + private static List removeReferences(List al, ConverterPath cp){ + List cs = new ArrayList(al); + cs.removeAll(cp.getPath()); + List forbidden = new ArrayList(); + for(int i = 0; i < cs.size(); i++){ + Converter c = (Converter) cs.get(i); + String outData = c.getOutData(); + if(outData.startsWith("file-ext") && (!outData.equals(cp.getInData()))){ + + forbidden.add(c); + } + } + cs.removeAll(forbidden); + return cs; + } + + private void addTestPath(ConverterPath p){ + String key = p.getInData(); + key += " "; + key += ((Converter)p.getPath().get(0)).getOutData(); + if(this.fileExtensionTestConverters.get(key) == null){ + + List paths = new ArrayList(); + paths.add(p); + this.fileExtensionTestConverters.put(key, paths); + + } + else{ + + ((List)this.fileExtensionTestConverters.get(key)).add(p); + + } + } + + + public String printTestConverterPath(String s){ + StringBuffer sb = new StringBuffer(); + List al = (List)this.fileExtensionTestConverters.get(s); + for(int i = 0; i < al.size(); i++){ + ConverterPath cp = (ConverterPath)al.get(i); + sb.append(cp.toString()); + } + sb.trimToSize(); + return sb.toString(); + } + + public String printTestConverterPaths(){ + StringBuffer sb = new StringBuffer(); + String[] keySet = new String[this.fileExtensionTestConverters.keySet().size()]; + keySet = (String[])this.fileExtensionTestConverters.keySet().toArray(keySet); + for(int i = 0; i < keySet.length; i++){ + String s = keySet[i]; + sb.append(printTestConverterPath(s)); + } + sb.trimToSize(); + return sb.toString(); + } + + + public String printComparisonConverterPath(String s){ + return this.fileExtensionCompareConverters.get(s).toString(); + } + + public String printComparisonConverterPaths(){ + StringBuffer sb = new StringBuffer(); + String[] keySet = new String[this.fileExtensionCompareConverters.keySet().size()]; + keySet = (String[])this.fileExtensionCompareConverters.keySet().toArray(keySet); + for(int i = 0; i < keySet.length; i++){ + String s = keySet[i]; + //System.out.println(s); + sb.append(printComparisonConverterPath(s)); + } + sb.trimToSize(); + return sb.toString(); + } + + + public String toString(){ + StringBuffer str = new StringBuffer(); + String[] keySet = new String[this.inDataToConverters.keySet().size()]; + keySet = (String[])this.inDataToConverters.keySet().toArray(keySet); + for(int i = 0; i < keySet.length; i++){ + String s = keySet[i]; + str.append(s + "\r\n"); + List al = (List)this.inDataToConverters.get(s); + for(int j = 0; j < al.size(); j++){ + Converter c = (Converter)al.get(j); + str.append("\t" + c.getUniqueName() + "\r\n"); + } + } + str.append("Test Paths:\r\n"); + str.append(printTestConverterPaths()); + str.append("Comparison Paths:\r\n"); + str.append(printComparisonConverterPaths()); + str.trimToSize(); + return str.toString(); + } + + public ConverterPath[] getTestPath(String s){ + return (ConverterPath[])((List)this.fileExtensionTestConverters.get(s)).toArray(new ConverterPath[0]); + } + + public ConverterPath[][] getTestPaths(){ + ConverterPath[][] paths = new ConverterPath[this.fileExtensionTestConverters.keySet().size()][]; + String[] fileExtensions = (String[])this.fileExtensionTestConverters.keySet().toArray(new String[0]); + for(int i = 0; i < fileExtensions.length; i++){ + paths[i] = (getTestPath(fileExtensions[i])); + } + //this line may be busted + return paths; + } + + public ConverterPath getComparePath(String s){ + return (ConverterPath)this.fileExtensionCompareConverters.get(s); + } + + + public ConverterPath[] getComparePaths(){ + String[] fileExtensions = (String[])this.fileExtensionCompareConverters.keySet().toArray(new String[0]); + List graphs = new ArrayList(); + for(int i = 0; i < fileExtensions.length; i++){ + graphs.add(getComparePath(fileExtensions[i])); + } + return (ConverterPath[])graphs.toArray(new ConverterPath[0]); + } + + public Map getCompareMap(){ + return this.fileExtensionCompareConverters; + } + + public Map getTestMap(){ + return this.fileExtensionTestConverters; + } + + public Converter[] getAllConverters() { + return this.converters; + } + + public File asNWB() { + + Map nodes = assembleNodesSet(); + TreeSet edges = assembleEdges(nodes); + + File f = getTempFile(); + try { + BufferedWriter writer = + new BufferedWriter(new FileWriter(f)); + + writeNodes(writer,nodes); + writeEdges(writer,edges); + + } catch(IOException e) { + System.out.println("Blurt!"); + this.log.log(LogService.LOG_ERROR, + "IOException while creating converter graph file", + e); + } + + return f; + } + + private void writeNodeHeader(BufferedWriter bw, int numNodes) throws IOException{ + bw.flush(); + bw.write("*Nodes " + numNodes + "\r\nid*int label*string\r\n"); + + } + + private void writeNodes(BufferedWriter bw, Map nodes) throws IOException{ + writeNodeHeader(bw, nodes.size()); + + String[] keySet = new String[nodes.keySet().size()]; + + keySet = (String[])nodes.keySet().toArray(keySet); + for(int i = 0; i < keySet.length; i++){ + bw.write(nodes.get(keySet[i]) + " \"" + keySet[i]+"\"\r\n"); + } + + bw.flush(); + + } + + private void writeEdgeHeader(BufferedWriter bw, int numEdges) throws IOException{ + bw.flush(); + bw.write("*DirectedEdges " + numEdges + "\r\nsource*int target*int\r\n"); + } + + + private void writeEdges(BufferedWriter bw, TreeSet edges) throws IOException{ + writeEdgeHeader(bw,edges.size()); + + String[] edgeArray = new String[edges.size()]; + edgeArray = (String[])edges.toArray(edgeArray); + + for(int i = 0; i < edgeArray.length; i++){ + bw.write(edgeArray[i]+"\r\n"); + } + + bw.flush(); + } + + private Map assembleNodesSet(){ + + Map nodesToInt = new ConcurrentHashMap(); + + String[] inDatas = new String[this.inDataToConverters.keySet().size()]; + inDatas = (String[])this.inDataToConverters.keySet().toArray(inDatas); + + TreeSet nodeNameList = new TreeSet(); + + //for each unique in_data... + for(int i = 0; i < inDatas.length; i++){ + String inData = inDatas[i]; + + //add the in_data string to our list of node names + nodeNameList.add(inData); + + List convsList = (List)this.inDataToConverters.get(inData); + Converter[] convs = new Converter[convsList.size()]; + convs = (Converter[])convsList.toArray(convs); + + //for each converter associated with each in_data... + for(int j = 0; j < convs.length; j++){ + Converter c = convs[j]; + //add the name of the converter to our list of node names + nodeNameList.add(c.getShortName()); + } + } + + String[] names = new String[nodeNameList.size()]; + names = (String[])nodeNameList.toArray(names); + + //for each node name in our list of node names ... + for(int i = 0; i < names.length; i++){ + //associate that name with a unique integer in our map + nodesToInt.put(names[i], new Integer(i+1)); + } + + //return our map of nodes to unique integers + return nodesToInt; + } + + private TreeSet assembleEdges(Map nodeNameToInt){ + TreeSet edges = new TreeSet(); + + + String[] nodeNames = new String[nodeNameToInt.size()]; + nodeNames = (String[])nodeNameToInt.keySet().toArray(nodeNames); + //for each node name in our list of node names... + for(int i = 0; i < nodeNames.length; i++){ + String nodeName = nodeNames[i]; + + /* + * check to see if that node name is associated with a list of + * converters. + * + * (Node names are either the names of in_data formats or the + * names of converters) + */ + List converterList = (List)this.inDataToConverters.get(nodeName); + + //if our node name is associated with a list of converters... + if(converterList != null) { + //(then our node name must be the name of an in_data format) + Converter[] convs = new Converter[converterList.size()]; + convs = (Converter[])converterList.toArray(convs); + + //for each converter associated with this in_data format... + for(int j = 0; j < convs.length; j++){ + Converter c = convs[j]; + String convName = c.getShortName(); + String convsOutputFormatName = c.getOutData(); + + String nodeNumber = nodeNameToInt.get(nodeName).toString(); + String convNumber = nodeNameToInt.get(convName).toString(); + String convsOutputNodeNumber = + nodeNameToInt.get(convsOutputFormatName).toString(); + + /* + * add an edge from our original node to this converter + */ + String edge1 = nodeNumber + " " + convNumber; + edges.add(edge1); + + /* + * add an edge from this converter to this converters + * output node. + */ + String edge2 = convNumber + " " + convsOutputNodeNumber; + edges.add(edge2); + } + } + + } + + //return our set of edges + return edges; + } + + private File getTempFile(){ + File tempFile; + + String tempPath = System.getProperty("java.io.tmpdir"); + File tempDir = new File(tempPath+File.separator+"temp"); + if(!tempDir.exists()) + tempDir.mkdir(); + try{ + tempFile = File.createTempFile("NWB-Session-", ".nwb", tempDir); + + }catch (IOException e){ + + tempFile = new File (tempPath+File.separator+"nwbTemp"+File.separator+"temp.nwb"); + + } + return tempFile; + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |