X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2FModelingUtils.java;h=e0551eb3e76df1a7193d6e0f4ffcbd85b0715173;hb=bf8a8b92f405dfd96198d5e1b377ce2f1059675b;hp=b4e63a6cc5c4188544baeb3eaf7abafcf6f3d6a7;hpb=6733bb2f128363c572c1a4fcf907d034060f3aae;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/ModelingUtils.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/ModelingUtils.java index b4e63a6cc..e0551eb3e 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/ModelingUtils.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/ModelingUtils.java @@ -61,13 +61,17 @@ import org.simantics.databoard.serialization.SerializationException; import org.simantics.databoard.type.Datatype; import org.simantics.databoard.util.URIStringUtils; import org.simantics.datatypes.literal.GUID; +import org.simantics.db.MetadataI; import org.simantics.db.ReadGraph; import org.simantics.db.RequestProcessor; import org.simantics.db.Resource; +import org.simantics.db.Session; import org.simantics.db.Statement; import org.simantics.db.WriteGraph; +import org.simantics.db.common.Indexing; import org.simantics.db.common.NamedResource; import org.simantics.db.common.QueryMemoryWatcher; +import org.simantics.db.common.changeset.GenericChangeListener; import org.simantics.db.common.primitiverequest.IsInstanceOf; import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener; import org.simantics.db.common.procedure.adapter.TransientCacheListener; @@ -93,6 +97,8 @@ import org.simantics.db.layer0.adapter.Instances; import org.simantics.db.layer0.adapter.impl.DefaultPasteImportAdvisor; import org.simantics.db.layer0.adapter.impl.EntityInstances.QueryIndex; import org.simantics.db.layer0.adapter.impl.ImportAdvisorFactory; +import org.simantics.db.layer0.genericrelation.DependenciesRelation.DependencyChangesRequest; +import org.simantics.db.layer0.genericrelation.DependencyChanges; import org.simantics.db.layer0.genericrelation.IndexedRelations; import org.simantics.db.layer0.migration.MigrationUtils; import org.simantics.db.layer0.request.ActivateModel; @@ -117,6 +123,7 @@ import org.simantics.db.layer0.variable.Variables; import org.simantics.db.request.Read; import org.simantics.db.service.ClusterControl; import org.simantics.db.service.CollectionSupport; +import org.simantics.db.service.GraphChangeListenerSupport; import org.simantics.db.service.QueryControl; import org.simantics.db.service.VirtualGraphSupport; import org.simantics.diagram.stubs.DiagramResource; @@ -139,6 +146,7 @@ import org.simantics.layer0.Layer0; import org.simantics.layer0.utils.direct.GraphUtils; import org.simantics.modeling.adapters.ChangeInformation; import org.simantics.modeling.template2d.ontology.Template2dResource; +import org.simantics.modeling.utils.OntologicalRequirementTracker; import org.simantics.operation.Layer0X; import org.simantics.project.ontology.ProjectResource; import org.simantics.scenegraph.profile.ProfileUtils; @@ -631,6 +639,46 @@ public class ModelingUtils { } + public static void trackOntologicalRequirements() { + Session session = Simantics.getSession(); + GraphChangeListenerSupport changeListenerSupport = session.getService(GraphChangeListenerSupport.class); + changeListenerSupport.addMetadataListener( OntologicalRequirementListener.getInstance() ); + } + + public static void untrackOntologicalRequirements() { + Session session = Simantics.getSession(); + GraphChangeListenerSupport changeListenerSupport = session.getService(GraphChangeListenerSupport.class); + changeListenerSupport.removeMetadataListener( OntologicalRequirementListener.getInstance() ); + } + + public static class OntologicalRequirementListener extends GenericChangeListener { + + private static OntologicalRequirementListener INSTANCE; + + public static OntologicalRequirementListener getInstance() { + if(INSTANCE == null) { + INSTANCE = new OntologicalRequirementListener(); + } + return INSTANCE; + } + + private OntologicalRequirementListener() { + } + + private OntologicalRequirementTracker changeInformationUpdater = new OntologicalRequirementTracker(); + + @Override + public boolean preEventRequest() { + return !Indexing.isDependenciesIndexingDisabled(); + } + + @Override + public void onEvent(ReadGraph graph, MetadataI metadata, DependencyChanges event) throws DatabaseException { + changeInformationUpdater.update(graph, metadata, event); + } + + } + public static void removeIndex(WriteGraph graph, Resource model) throws DatabaseException { Layer0X L0X = Layer0X.getInstance(graph); IndexedRelations ir = graph.getService(IndexedRelations.class); @@ -1728,6 +1776,21 @@ public class ModelingUtils { Layer0Utils.addCommentMetadata(graph, "Created SCL Module " + name + " " + sclModule.toString()); } + public static void createSCLScriptDefault(WriteGraph graph, Resource target) throws DatabaseException { + String name = NameUtils.findFreshEscapedName(graph, "SCLScript", target); + createSCLScript(graph, target, name); + } + + public static void createSCLScript(WriteGraph graph, Resource target, String name) throws DatabaseException { + graph.markUndoPoint(); + Layer0 L0 = Layer0.getInstance(graph); + Resource sclModule = GraphUtils.create2(graph, L0.SCLScript, + L0.HasName, name, + L0.PartOf, target, + L0.SCLScript_definition, ""); + Layer0Utils.addCommentMetadata(graph, "Created SCL Script " + name + " " + sclModule.toString()); + } + public static void createPGraphDefault(WriteGraph graph, Resource target) throws DatabaseException { String name = NameUtils.findFreshEscapedName(graph, "Ontology Definition File", target); createPGraph(graph, target, name);