-package org.simantics.graph.refactoring;\r
-\r
-import gnu.trove.set.hash.TIntHashSet;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.File;\r
-import java.io.FileReader;\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-\r
-import org.simantics.databoard.Files;\r
-import org.simantics.graph.query.Path;\r
-import org.simantics.graph.query.TransferableGraphConversion;\r
-import org.simantics.graph.query.UriUtils;\r
-import org.simantics.graph.refactoring.MappingSpecification.MappingRule;\r
-import org.simantics.graph.representation.old.OldTransferableGraph1;\r
-import org.simantics.graph.store.IdentityStore;\r
-\r
-\r
-public class RefactoringTool {\r
-\r
- public static void main(String[] args) throws Exception {\r
- if(args.length != 3)\r
- System.out.println("Usage: java " + RefactoringTool.class.getCanonicalName() + " mappingSpec input.tg ouput.tg");\r
- refactor(new File(args[0]), new File(args[1]), new File(args[2]));\r
- }\r
-\r
- public static void refactor(File mappingSpec, File input, File output) throws IOException, GraphRefactoringException {\r
- if(!mappingSpec.exists()) {\r
- System.out.println("Mapping specification " + mappingSpec + " does not exist.");\r
- return;\r
- }\r
- if(!input.exists()) {\r
- System.out.println("Input tg " + input + " does not exist.");\r
- return;\r
- }\r
- \r
- MappingSpecification spec = readMappingSpec(mappingSpec);\r
- \r
- // Refactor old format\r
- OldTransferableGraph1 tg = (OldTransferableGraph1)\r
- Files.readFile(input, OldTransferableGraph1.BINDING);\r
- boolean fixed = GraphRefactoringUtils.fixIncorrectRoot(tg.identities);\r
- IdentityStore idStore = TransferableGraphConversion.extractIdentities(tg);\r
- TIntHashSet parentsAffected = new TIntHashSet(); \r
- GraphRefactoringUtils.refactor(null, idStore, spec, parentsAffected);\r
- tg.resourceCount = idStore.getResourceCount();\r
- tg.identities = idStore.toArray();\r
- GraphRefactoringUtils.compactify(tg, parentsAffected);\r
- if(fixed)\r
- GraphRefactoringUtils.unfixIncorrectRoot(tg.identities);\r
- \r
- // Write to output file\r
- Files.writeFile(output, OldTransferableGraph1.BINDING, tg);\r
- }\r
-\r
- private static MappingSpecification readMappingSpec(File mappingSpec) throws IOException {\r
- BufferedReader reader = new BufferedReader(new FileReader(mappingSpec));\r
- ArrayList<MappingRule> rules = new ArrayList<MappingRule>();\r
- while(true) {\r
- String line = reader.readLine();\r
- if(line == null)\r
- break;\r
- line = line.trim();\r
- if(line.isEmpty())\r
- continue;\r
- String[] parts = line.trim().split(" ");\r
- if(parts.length != 2)\r
- throw new IOException("Invalid mapping spec format. Every non-empty line should contain two URIs.");\r
- \r
- Path from = UriUtils.uriToPath(parts[0]);\r
- Path to = UriUtils.uriToPath(parts[1]);\r
- \r
- rules.add(new MappingRule(from, to));\r
- }\r
- reader.close();\r
- \r
- return new MappingSpecification(rules);\r
- }\r
- \r
-}\r
+package org.simantics.graph.refactoring;
+
+import gnu.trove.set.hash.TIntHashSet;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.simantics.databoard.Files;
+import org.simantics.graph.query.Path;
+import org.simantics.graph.query.TransferableGraphConversion;
+import org.simantics.graph.query.UriUtils;
+import org.simantics.graph.refactoring.MappingSpecification.MappingRule;
+import org.simantics.graph.representation.old.OldTransferableGraph1;
+import org.simantics.graph.store.IdentityStore;
+
+
+public class RefactoringTool {
+
+ public static void main(String[] args) throws Exception {
+ if(args.length != 3)
+ System.out.println("Usage: java " + RefactoringTool.class.getCanonicalName() + " mappingSpec input.tg ouput.tg");
+ refactor(new File(args[0]), new File(args[1]), new File(args[2]));
+ }
+
+ public static void refactor(File mappingSpec, File input, File output) throws IOException, GraphRefactoringException {
+ if(!mappingSpec.exists()) {
+ System.out.println("Mapping specification " + mappingSpec + " does not exist.");
+ return;
+ }
+ if(!input.exists()) {
+ System.out.println("Input tg " + input + " does not exist.");
+ return;
+ }
+
+ MappingSpecification spec = readMappingSpec(mappingSpec);
+
+ // Refactor old format
+ OldTransferableGraph1 tg = (OldTransferableGraph1)
+ Files.readFile(input, OldTransferableGraph1.BINDING);
+ boolean fixed = GraphRefactoringUtils.fixIncorrectRoot(tg.identities);
+ IdentityStore idStore = TransferableGraphConversion.extractIdentities(tg);
+ TIntHashSet parentsAffected = new TIntHashSet();
+ GraphRefactoringUtils.refactor(null, idStore, spec, parentsAffected);
+ tg.resourceCount = idStore.getResourceCount();
+ tg.identities = idStore.toArray();
+ GraphRefactoringUtils.compactify(tg, parentsAffected);
+ if(fixed)
+ GraphRefactoringUtils.unfixIncorrectRoot(tg.identities);
+
+ // Write to output file
+ Files.writeFile(output, OldTransferableGraph1.BINDING, tg);
+ }
+
+ private static MappingSpecification readMappingSpec(File mappingSpec) throws IOException {
+ BufferedReader reader = new BufferedReader(new FileReader(mappingSpec));
+ ArrayList<MappingRule> rules = new ArrayList<MappingRule>();
+ while(true) {
+ String line = reader.readLine();
+ if(line == null)
+ break;
+ line = line.trim();
+ if(line.isEmpty())
+ continue;
+ String[] parts = line.trim().split(" ");
+ if(parts.length != 2)
+ throw new IOException("Invalid mapping spec format. Every non-empty line should contain two URIs.");
+
+ Path from = UriUtils.uriToPath(parts[0]);
+ Path to = UriUtils.uriToPath(parts[1]);
+
+ rules.add(new MappingRule(from, to));
+ }
+ reader.close();
+
+ return new MappingSpecification(rules);
+ }
+
+}