X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.mapping%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fmapping%2FMapper.java;h=5e74cf95d9c16e9464289075850637b4b4bd748f;hb=df5314af4f42f8e600d22f74e8e32e126f98a1a8;hp=6f700d3bc7a18e05badca5635de17a524693711e;hpb=bd7152b9aaac10befa93c6c1fd9e4f1f9fd15c4a;p=simantics%2Finterop.git diff --git a/org.simantics.interop.mapping/src/org/simantics/interop/mapping/Mapper.java b/org.simantics.interop.mapping/src/org/simantics/interop/mapping/Mapper.java index 6f700d3..5e74cf9 100644 --- a/org.simantics.interop.mapping/src/org/simantics/interop/mapping/Mapper.java +++ b/org.simantics.interop.mapping/src/org/simantics/interop/mapping/Mapper.java @@ -17,7 +17,6 @@ import org.simantics.db.common.request.WriteRequest; import org.simantics.db.common.request.WriteResultRequest; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; -import org.simantics.db.exception.ServiceException; import org.simantics.db.layer0.util.SessionGarbageCollection; import org.simantics.db.request.Read; import org.simantics.interop.mapping.data.GraphNode; @@ -80,6 +79,11 @@ public class Mapper { addRule(0,idRule,mappingRule); } + public void addRule(IdentificationRule idRule, MappingRule... mappingRules) { + for (MappingRule mappingRule : mappingRules) + addRule(0,idRule,mappingRule); + } + public void addRule(int pass, IdentificationRule idRule, MappingRule mappingRule) { if (idRule == null || mappingRule == null) throw new NullPointerException(); if (mappingRule instanceof ModificationRule) { @@ -95,6 +99,11 @@ public class Mapper { initializedRules.add((InitializedRule)mappingRule); } + public void addRule(int pass, IdentificationRule idRule, MappingRule... mappingRules) { + for (MappingRule mappingRule : mappingRules) + addRule(pass,idRule,mappingRule); + } + public void addRule(IdentificationRule idRule, ModificationRule... modRules) { addRule(0, idRule, modRules); } @@ -118,6 +127,10 @@ public class Mapper { addRule(0, modRule); } + public void addRule(InitializedRule initRule) { + initializedRules.add(initRule); + } + public void addRule(int pass, ModificationRule modRule) { if (modRule == null) throw new NullPointerException(); while (pass >= globalModificationRules.size()) { @@ -306,7 +319,7 @@ public class Mapper { - private void applyGenerations(WriteGraph graph, Collection> nodes, IProgressMonitor monitor) throws Exception { + protected void applyGenerations(WriteGraph graph, Collection> nodes, IProgressMonitor monitor) throws Exception { int size = nodes.size(); int count = 0; @@ -339,9 +352,11 @@ public class Mapper { for (GraphNode n : nodes) { MapList priRules = n.getHint(MappingHints.KEY_GENERATION_RULES); - List rules = priRules.getValues(stage); - for (GenerationRule r : rules) { - r.generate(graph, n); + if (priRules != null) { + List rules = priRules.getValues(stage); + for (GenerationRule r : rules) { + r.generate(graph, n); + } } monitor.subTask("Generating objects, stage " + stage + " : ("+ (++count) + "/" + size + ")"); @@ -354,7 +369,7 @@ public class Mapper { } } - private void applyConnections(WriteGraph g, Collection> nodes, IProgressMonitor monitor) throws Exception { + protected void applyConnections(WriteGraph g, Collection> nodes, IProgressMonitor monitor) throws Exception { int size = nodes.size(); int count = 0; @@ -380,41 +395,9 @@ public class Mapper { return res.toString(); } - public class WriteWrapper extends WriteGraphProxy { - - - private Collection createdResources = new ArrayList(); - - public WriteWrapper(WriteGraph graph) { - super(graph); - } - - public Collection getCreatedResources() { - return createdResources; - } - - public void clearCreated() { - createdResources = new ArrayList(); - } - - @Override - public Resource newResource() throws ServiceException { - Resource res = graph.newResource(); - createdResources.add(res); - return res; - } - - @Override - public Resource newResource(long clusterId) throws ServiceException { - Resource res = graph.newResource(clusterId); - createdResources.add(res); - return res; - } - - - } + - private void initializeRules(Session session, VirtualGraph vg, final Resource model ) throws DatabaseException{ + protected void initializeRules(Session session, VirtualGraph vg, final Resource model ) throws DatabaseException{ session.syncRequest(new WriteRequest(vg) { @Override public void perform(WriteGraph g) throws DatabaseException { @@ -426,7 +409,7 @@ public class Mapper { } - private void collect(ReadGraph g) throws DatabaseException { + protected void collect(ReadGraph g) throws DatabaseException { if (vg != null) return; SessionGarbageCollection.gc(g, 0, -1); @@ -434,7 +417,7 @@ public class Mapper { int collect = 0; - private void collect2(ReadGraph g) throws DatabaseException { + protected void collect2(ReadGraph g) throws DatabaseException { if (vg != null) return; @@ -446,7 +429,7 @@ public class Mapper { } } - private void applyModifications(Session session, final Collection> nodes, final IProgressMonitor monitor) throws Exception { + protected void applyModifications(Session session, final Collection> nodes, final IProgressMonitor monitor) throws Exception { @@ -562,7 +545,7 @@ public class Mapper { }); } - private void applyGenerations(Session session, VirtualGraph vg, Collection> nodes, IProgressMonitor monitor) throws Exception { + protected void applyGenerations(Session session, VirtualGraph vg, Collection> nodes, IProgressMonitor monitor) throws Exception { int size = nodes.size(); int count = 0; @@ -695,7 +678,7 @@ public class Mapper { } } - private void applyConnections(Session session, VirtualGraph vg, Collection> nodes, IProgressMonitor monitor) throws Exception { + protected void applyConnections(Session session, VirtualGraph vg, Collection> nodes, IProgressMonitor monitor) throws Exception { int size = nodes.size(); int count = 0; @@ -747,7 +730,7 @@ public class Mapper { }); } - private void applyModifications(ReadGraph g, GraphNode n, Pair modRule, Collection> ruleModified) throws Exception { + protected void applyModifications(ReadGraph g, GraphNode n, Pair modRule, Collection> ruleModified) throws Exception { if (!n.isDisposed() && modRule.first.matches(g, n)) { // we have to check Collection> perRule = new ArrayList>(); perRule.add(n); @@ -755,7 +738,7 @@ public class Mapper { } } - private void applyConnections(WriteGraph g, GraphNode node) throws Exception { + protected void applyConnections(WriteGraph g, GraphNode node) throws Exception { for (Link link : node.getLinks()) { if (link.isMain()) {