X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.common%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fcommon%2Fissue%2FAnonymousIssue.java;fp=bundles%2Forg.simantics.db.common%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fcommon%2Fissue%2FAnonymousIssue.java;h=1fe2466b2a8025f94afea222710f6e8b4a7fd19b;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=0a98dc29ac20bc3c3ca25fd3164ebc8192517797;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.common/src/org/simantics/db/common/issue/AnonymousIssue.java b/bundles/org.simantics.db.common/src/org/simantics/db/common/issue/AnonymousIssue.java index 0a98dc29a..1fe2466b2 100644 --- a/bundles/org.simantics.db.common/src/org/simantics/db/common/issue/AnonymousIssue.java +++ b/bundles/org.simantics.db.common/src/org/simantics/db/common/issue/AnonymousIssue.java @@ -1,101 +1,101 @@ -package org.simantics.db.common.issue; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - -import org.simantics.databoard.Bindings; -import org.simantics.db.Issue; -import org.simantics.db.Resource; -import org.simantics.db.WriteGraph; -import org.simantics.db.common.procedure.adapter.TransientCacheListener; -import org.simantics.db.common.request.IndexRoot; -import org.simantics.db.common.utils.ListUtils; -import org.simantics.db.exception.DatabaseException; -import org.simantics.issues.ontology.IssueResource; -import org.simantics.layer0.Layer0; - -public class AnonymousIssue implements Issue { - - public final Resource type; - public final Resource[] contexts; - - public AnonymousIssue(Resource type, Resource ... contexts) { - this.type = type; - this.contexts = contexts; - } - - public AnonymousIssue(Resource type, Collection contexts) { - this.type = type; - this.contexts = contexts.toArray(new Resource[contexts.size()]); - } - - public void writeAdditionalContext(WriteGraph graph, Resource issue) throws DatabaseException { - - IssueResource IR = IssueResource.getInstance(graph); - - // The main context - graph.claim(issue, IR.Issue_HasContext, IR.Issue_HasContext_Inverse, contexts[0]); - // A possible parent - Layer0 L0 = Layer0.getInstance(graph); - Resource parent = graph.getPossibleObject(contexts[0], L0.PartOf); - if(parent != null) { - graph.claim(issue, IR.Issue_HasContext, IR.Issue_HasContext_Inverse, parent); - } - - } - - @Override - public Resource write(WriteGraph graph, Resource source) throws DatabaseException { - - Layer0 L0 = Layer0.getInstance(graph); - IssueResource IR = IssueResource.getInstance(graph); - - Resource model = graph.syncRequest(new IndexRoot(source), TransientCacheListener.instance()); - - Resource issue = graph.newResource(); - graph.claim(issue, L0.InstanceOf, null, type); - graph.addLiteral(issue, L0.HasName, L0.NameOf, L0.String, UUID.randomUUID().toString(), Bindings.STRING); - - graph.claim(issue, IR.Issue_HasContexts, IR.Issue_HasContexts_Inverse, ListUtils.create(graph, L0.List, contexts)); - - writeAdditionalContext(graph, issue); - - DateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - String created = format.format(Calendar.getInstance().getTime()); - graph.addLiteral(issue, IR.Issue_creationTime, IR.Issue_creationTime_Inverse, L0.String, created, Bindings.STRING); - graph.claim(source, IR.IssueSource_Manages, IR.IssueSource_Manages_Inverse, issue); - graph.claim(model, L0.ConsistsOf, L0.PartOf, issue); - - return issue; - - } - - @Override - public String toString() { - return Arrays.toString(contexts); - } - - @Override - public Resource getType() { - return type; - } - - @Override - public Object getMainContext() { - return contexts[0]; - } - - @Override - public Set getContexts() { - HashSet result = new HashSet(); - for(Resource context : contexts) result.add(context); - return result; - } - -} +package org.simantics.db.common.issue; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +import org.simantics.databoard.Bindings; +import org.simantics.db.Issue; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.procedure.adapter.TransientCacheListener; +import org.simantics.db.common.request.IndexRoot; +import org.simantics.db.common.utils.ListUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.issues.ontology.IssueResource; +import org.simantics.layer0.Layer0; + +public class AnonymousIssue implements Issue { + + public final Resource type; + public final Resource[] contexts; + + public AnonymousIssue(Resource type, Resource ... contexts) { + this.type = type; + this.contexts = contexts; + } + + public AnonymousIssue(Resource type, Collection contexts) { + this.type = type; + this.contexts = contexts.toArray(new Resource[contexts.size()]); + } + + public void writeAdditionalContext(WriteGraph graph, Resource issue) throws DatabaseException { + + IssueResource IR = IssueResource.getInstance(graph); + + // The main context + graph.claim(issue, IR.Issue_HasContext, IR.Issue_HasContext_Inverse, contexts[0]); + // A possible parent + Layer0 L0 = Layer0.getInstance(graph); + Resource parent = graph.getPossibleObject(contexts[0], L0.PartOf); + if(parent != null) { + graph.claim(issue, IR.Issue_HasContext, IR.Issue_HasContext_Inverse, parent); + } + + } + + @Override + public Resource write(WriteGraph graph, Resource source) throws DatabaseException { + + Layer0 L0 = Layer0.getInstance(graph); + IssueResource IR = IssueResource.getInstance(graph); + + Resource model = graph.syncRequest(new IndexRoot(source), TransientCacheListener.instance()); + + Resource issue = graph.newResource(); + graph.claim(issue, L0.InstanceOf, null, type); + graph.addLiteral(issue, L0.HasName, L0.NameOf, L0.String, UUID.randomUUID().toString(), Bindings.STRING); + + graph.claim(issue, IR.Issue_HasContexts, IR.Issue_HasContexts_Inverse, ListUtils.create(graph, L0.List, contexts)); + + writeAdditionalContext(graph, issue); + + DateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + String created = format.format(Calendar.getInstance().getTime()); + graph.addLiteral(issue, IR.Issue_creationTime, IR.Issue_creationTime_Inverse, L0.String, created, Bindings.STRING); + graph.claim(source, IR.IssueSource_Manages, IR.IssueSource_Manages_Inverse, issue); + graph.claim(model, L0.ConsistsOf, L0.PartOf, issue); + + return issue; + + } + + @Override + public String toString() { + return Arrays.toString(contexts); + } + + @Override + public Resource getType() { + return type; + } + + @Override + public Object getMainContext() { + return contexts[0]; + } + + @Override + public Set getContexts() { + HashSet result = new HashSet(); + for(Resource context : contexts) result.add(context); + return result; + } + +}