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.
|