X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.graph%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Frefactoring%2FRefactoringTool.java;h=c172e9839be3584f086a8e6ba737fec46d0e5c1c;hb=4ae2c9f1590b39ec61dcf2a1f27529fcefaf6f8e;hp=2de214a0887b452fc65424d23db2f7a008ae4650;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/RefactoringTool.java b/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/RefactoringTool.java index 2de214a08..c172e9839 100644 --- a/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/RefactoringTool.java +++ b/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/RefactoringTool.java @@ -1,81 +1,81 @@ -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 rules = new ArrayList(); - 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); - } - -} +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 rules = new ArrayList(); + 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); + } + +}