import org.simantics.db.Statement;
import org.simantics.db.VirtualGraph;
import org.simantics.db.WriteGraph;
+import org.simantics.db.WriteOnlyGraph;
import org.simantics.db.common.Indexing;
import org.simantics.db.common.NamedResource;
import org.simantics.db.common.QueryMemoryWatcher;
import org.simantics.db.common.request.PossibleIndexRoot;
import org.simantics.db.common.request.ReadRequest;
import org.simantics.db.common.request.ResourceRead2;
+import org.simantics.db.common.request.WriteOnlyRequest;
import org.simantics.db.common.request.WriteRequest;
import org.simantics.db.common.request.WriteResultRequest;
import org.simantics.db.common.utils.ListUtils;
import org.simantics.db.layer0.util.TransferableGraphConfiguration2;
import org.simantics.db.layer0.variable.Variable;
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;
return DiagramGraphUtil.getModelingRules(graph, diagramResource, null);
}
+ //-------------------------------------------------------------------------
+
+ private static final String VG_CHANGE_INFORMATION = "changeInformation"; //$NON-NLS-1$
+
public static void markChanged(WriteGraph graph, Resource r) throws DatabaseException {
- VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);
- VirtualGraph vg = support.getWorkspacePersistent("changeInformation");
- graph.syncRequest(new WriteRequest(vg) {
+ VirtualGraph vg = Simantics.getSession().getService(VirtualGraphSupport.class)
+ .getWorkspacePersistent(VG_CHANGE_INFORMATION);
+ ModelingResources MOD = ModelingResources.getInstance(graph);
+ graph.syncRequest(new WriteOnlyRequest(vg) {
@Override
- public void perform(WriteGraph graph) throws DatabaseException {
- ModelingResources MOD = ModelingResources.getInstance(graph);
+ public void perform(WriteOnlyGraph graph) throws DatabaseException {
graph.claim(r, MOD.changed, MOD.changed, r);
}
});
}
-
+
+ public static void markChanged(RequestProcessor processor, Iterable<Resource> rs) throws DatabaseException {
+ VirtualGraph vg = Simantics.getSession().getService(VirtualGraphSupport.class)
+ .getWorkspacePersistent(VG_CHANGE_INFORMATION);
+ ModelingResources MOD = ModelingResources.getInstance(processor);
+ processor.syncRequest(new WriteOnlyRequest(vg) {
+ @Override
+ public void perform(WriteOnlyGraph graph) throws DatabaseException {
+ for (Resource r : rs) {
+ graph.claim(r, MOD.changed, MOD.changed, r);
+ }
+ }
+ });
+ }
+
}
*/
public class OntologicalRequirementEnforceRequest extends WriteRequest {
+ private static final String PROP_WRITE_CHANGED_TAGS = "org.simantics.modeling.writeChangedTags"; //$NON-NLS-1$
+
private Collection<Resource> creates;
private Collection<Resource> modis;
private Collection<Resource> ids;
private String author;
private long time;
+ private static String getAuthor() {
+ return System.getProperty("user.name", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private static boolean writeChangedTags() {
+ return !System.getProperty(PROP_WRITE_CHANGED_TAGS, "") //$NON-NLS-1$
+ .equalsIgnoreCase("false"); //$NON-NLS-1$
+ }
+
public OntologicalRequirementEnforceRequest(Collection<Resource> creates, Collection<Resource> modis, Collection<Resource> ids) {
this(creates,
modis,
ids,
- System.getProperty("user.name", ""),
+ getAuthor(),
System.currentTimeMillis());
}
@Override
public void perform(WriteGraph graph) throws DatabaseException {
- update(graph, creates, modis, ids, true, author, time, true);
+ update(graph, creates, modis, ids, true, author, time, true, writeChangedTags());
}
public static void update(
modis,
ids,
addComment,
- System.getProperty("user.name", ""),
+ getAuthor(),
System.currentTimeMillis(),
disableDependencyIndexing);
String author,
long time,
boolean disableDependencyIndexing) throws DatabaseException
+ {
+ update(graph, creates, modis, ids, addComment, author, time, disableDependencyIndexing, writeChangedTags());
+ }
+
+ public static void update(
+ WriteGraph graph,
+ Collection<Resource> creates,
+ Collection<Resource> modis,
+ Collection<Resource> ids,
+ boolean addComment,
+ String author,
+ long time,
+ boolean disableDependencyIndexing,
+ boolean writeChangedTags) throws DatabaseException
{
if (disableDependencyIndexing)
Layer0Utils.setDependenciesIndexingDisabled(graph, true);
-
+
ModelingResources MOD = ModelingResources.getInstance(graph);
Layer0 L0 = Layer0.getInstance(graph);
for (Resource c : creates) {
CommonDBUtils.selectClusterSet(graph, c);
graph.claimLiteral(c, MOD.changeInformation, MOD.changeInformation_Inverse, MOD.ChangeInformation, info, ChangeInformation.BINDING);
- ModelingUtils.markChanged(graph, c);
}
+ if (writeChangedTags)
+ ModelingUtils.markChanged(graph, creates);
}
for (Resource m : modis) {
info.modifiedBy = author;
CommonDBUtils.selectClusterSet(graph, m);
graph.claimLiteral(m, MOD.changeInformation, MOD.changeInformation_Inverse, MOD.ChangeInformation, info, ChangeInformation.BINDING);
- ModelingUtils.markChanged(graph, m);
}
-
+ if (writeChangedTags)
+ ModelingUtils.markChanged(graph, modis);
+
for (Resource r : ids) {
if (!graph.hasStatement(r, L0.identifier)) {
CommonDBUtils.selectClusterSet(graph, r);
}
}
- graph.addMetadata( graph.getMetadata(CommentMetadata.class).add("Updated change information") );
-
+ graph.addMetadata( graph.getMetadata(CommentMetadata.class).add("Updated change information") ); //$NON-NLS-1$
graph.addMetadata( graph.getMetadata(ChangeHistoryUpdated.class) );
-
}
}
\ No newline at end of file