import java.io.*; import java.util.ArrayList; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; public class Generator { public static ArrayList<Plugin> list; public static FileWriter fstream; public static BufferedWriter output; public static ArrayList<String> checkList; public Generator() throws IOException { this.list = Parser.ParserPluginFiles(); this.fstream = new FileWriter("qcadoo-plugin.gv"); this.output = new BufferedWriter(fstream); this.checkList = new ArrayList<String>(); } public static void Foo(String s) throws IOException { Plugin[] arrayOfPlugin = new Plugin[list.size()]; list.toArray(arrayOfPlugin); String str = null; Group group = null; for (int i = 0; i < list.size(); i++) { for (int j = 0; j < arrayOfPlugin[i].dependencies.length; j++) { if (arrayOfPlugin[i].dependencies[j] != null) { if (arrayOfPlugin[i].dependencies[j].equals(s)) { str = arrayOfPlugin[i].id + "->" + s + ":" + arrayOfPlugin[i].group; if (!checkList.contains(str)) { checkList.add(str); } Foo(arrayOfPlugin[i].id); } } else { str = arrayOfPlugin[i].id + ":" + arrayOfPlugin[i].group; if (!checkList.contains(str)) { checkList.add(str); Foo(arrayOfPlugin[i].id); } } } } } public static String[] GetGroups() { Plugin[] arrayOfPlugin = new Plugin[list.size()]; list.toArray(arrayOfPlugin); ArrayList<String> groupList = new ArrayList<String>(); for (int i = 0; i < arrayOfPlugin.length; i++) { if (!groupList.contains(arrayOfPlugin[i].group)) { groupList.add(arrayOfPlugin[i].group); } } String[] array = new String[groupList.size()]; groupList.toArray(array); return array; } public static void GenerateFile(String[] array) throws IOException { String[] tablica = new String[Generator.checkList.size()]; Generator.checkList.toArray(tablica); Group[] groupArray = new Group[Generator.checkList.size()]; for (int i = 0; i < tablica.length; i++) { String[] tokens = tablica[i].split(":"); Group group = new Group(tokens[0], tokens[1]); groupArray[i] = group; } for (int i = 0; i < array.length; i++) { Generator.output.write("subgraph cluster" + (i + 1) + "\n{\n"); Generator.output.write("label = \"" +array[i]+ "\";\n"); for (int j = 0; j < groupArray.length; j++) { if (groupArray != null) if (groupArray[j].group.equals(array[i])) { output.write(groupArray[j].id + "\n"); } } Generator.output.write("}\n"); } } public static void deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { deleteDir(new File(dir, children[i])); } } dir.delete(); } public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException { Generator generator = new Generator(); Plugin[] arrayOfPlugin = new Plugin[generator.list.size()]; generator.list.toArray(arrayOfPlugin); generator.output.write("digraph qcadoo\n{\n"); for (int i = 0; i < arrayOfPlugin.length; i++) { if (arrayOfPlugin[i].dependencies[0] == null) Foo(arrayOfPlugin[i].id); } GenerateFile(GetGroups()); generator.output.write("}"); generator.output.close(); File file = new File("./downloads"); deleteDir(file); } }