X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FDomainProcessor3.java;fp=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FDomainProcessor3.java;h=85cc8e629a5ffe341c367a3205f9af017f4d58bc;hp=07e4194276113fe56e89f8d756152cb41f285578;hb=bdab0adcee131a18290393e1c2fca72de48c10d2;hpb=93622c2baf328a90b122dd749b63676c72c839f5 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java index 07e419427..85cc8e629 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java @@ -39,12 +39,16 @@ import org.simantics.graph.db.TransferableGraphSource; import org.simantics.layer0.Layer0; import org.simantics.scl.runtime.function.Function1; import org.simantics.utils.datastructures.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import gnu.trove.list.array.TIntArrayList; import gnu.trove.map.hash.TIntIntHashMap; public class DomainProcessor3 { - + + private static final Logger LOGGER = LoggerFactory.getLogger(DomainProcessor3.class); + public enum ExclusionDecision { INCLUDE, EXCLUDE_OBJECT } @@ -115,20 +119,49 @@ public class DomainProcessor3 { deadPredicates = cs.createSet(); strongInverseSet = cs.createSet(); + if(LOGGER.isDebugEnabled()) { + + for(Map.Entry entry : conf.preStatus.entrySet()) { + LOGGER.debug("prestatus: " + NameUtils.getSafeName(graph, entry.getKey()) + " " + entry.getValue()); + } + + for(SeedSpec ss : conf.seeds) { + LOGGER.debug("seed: " + NameUtils.getSafeName(graph, ss.resource) + " " + ss.name + " " + ss.specType + " " + ss.type); + } + + } + for(Map.Entry entry : conf.preStatus.entrySet()) { // INTERNAL prestatus shall be ignored. Domain processor will initialize statuses based on seeds. - if (entry.getValue().equals(ExtentStatus.INTERNAL)) continue; - status.put(entry.getKey(), entry.getValue()); + if (entry.getValue().equals(ExtentStatus.INTERNAL)) { + LOGGER.info("Unexpected INTERNAL preStatus in DomainProcessor3 " + entry.getKey()); + } else { + status.put(entry.getKey(), entry.getValue()); + } } for(SeedSpec ss : conf.seeds) { - if(SeedSpecType.INTERNAL.equals(ss.specType)) continue; - // Non-internal resources are not reported as internals by ConsistsOfProcess so they are manually entered into fringe - fringe.add(ss.resource); - // Roots are classified in status as INTERNAL - status.put(ss.resource, ExtentStatus.INTERNAL); + ExtentStatus pre = status.get(ss.resource); + // INTERNAL seeds are feed into ConsistsOfProcess + if(SeedSpecType.INTERNAL.equals(ss.specType)) { + if(pre != null && !ExtentStatus.INTERNAL.equals(pre)) + LOGGER.info("Internal seed preclassification problem, expected INTERNAL preclassification, got " + pre.name()); + continue; + } else if(SeedSpecType.ROOT.equals(ss.specType)) { + // Non-internal resources are not reported as internals by ConsistsOfProcess so they are manually entered into fringe + fringe.add(ss.resource); + if(pre != null) + LOGGER.info("Root preclassification problem, expected no preclassification, got " + pre.name()); + // Roots are classified in status as INTERNAL + status.put(ss.resource, ExtentStatus.INTERNAL); + } else if(SeedSpecType.ROOT.equals(ss.specType)) { + // Special roots e.g. %model are marked as EXTERNAL + if(pre != null && !ExtentStatus.EXTERNAL.equals(pre)) + LOGGER.info("Special root preclassification problem, expected EXTERNAL preclassification, got " + pre.name()); + status.put(ss.resource, ExtentStatus.EXTERNAL); + } } - + if(PROFILE) startupTime += System.nanoTime();