]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/view/Bean.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / view / Bean.java
diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/view/Bean.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/view/Bean.java
new file mode 100644 (file)
index 0000000..ca369d3
--- /dev/null
@@ -0,0 +1,166 @@
+package org.simantics.modeling.ui.view;\r
+\r
+import java.util.Collection;\r
+import java.util.Date;\r
+\r
+import org.simantics.charts.ontology.ChartResource;\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.util.URIStringUtils;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.utils.NameUtils;\r
+import org.simantics.db.common.utils.Versions;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.modeling.All;\r
+import org.simantics.modeling.ModelingResources;\r
+import org.simantics.modeling.adapters.ChangeInformation;\r
+import org.simantics.modeling.subscription.SubscriptionItemLabel;\r
+import org.simantics.utils.format.ValueFormat;\r
+\r
+public class Bean {\r
+\r
+       public String createdBy = "";\r
+       public String modifiedBy = "";\r
+       public long modifiedAt = 0;\r
+       public long createdAt = 0;\r
+       public String name = "";\r
+       public String path = "";\r
+       public String types = "";\r
+       \r
+       public Bean() {\r
+               \r
+       }\r
+\r
+       public Bean(ReadGraph graph, Resource r, ChangeInformation i, String baseURI) throws DatabaseException {\r
+               \r
+               Layer0 L0 = Layer0.getInstance(graph);\r
+               ModelingResources MOD = ModelingResources.getInstance(graph);\r
+               ChartResource CHART = ChartResource.getInstance(graph);\r
+\r
+               Collection<Resource> principalTypes = graph.getPrincipalTypes(r);\r
+\r
+               if (principalTypes.contains(MOD.Subscription)) {\r
+                       String label = graph.getPossibleRelatedValue2(r, L0.HasLabel, Bindings.STRING);\r
+                       setName((label != null && !label.isEmpty()) ? label : "<unnamed subscription>");\r
+               } else if (principalTypes.contains(MOD.Subscription_Item)) {\r
+                       String label = SubscriptionItemLabel.resolveLabel(graph, r, ValueFormat.Default, true, true, false);\r
+                       setName(label);\r
+               } else if (principalTypes.contains(CHART.Chart_Item)) {\r
+                       String label = graph.getPossibleRelatedValue2(r, L0.HasLabel, Bindings.STRING);\r
+                       setName((label != null && !label.isEmpty()) ? label : "<unlabeled chart item>");\r
+               } else {\r
+\r
+                       Resource possibleComponent = graph.getPossibleObject(r, MOD.ElementToComponent);\r
+                       Resource possibleComposite = graph.getPossibleObject(r, MOD.DiagramToComposite);\r
+                       \r
+                       Resource nameResource = r;\r
+                       if(possibleComponent != null) nameResource = possibleComponent;\r
+                       if(possibleComposite != null) nameResource = possibleComposite;\r
+\r
+                       String name = Versions.getStandardNameString(graph, nameResource);\r
+                       \r
+                       if(possibleComponent != null) name += " Element";\r
+                       if(possibleComposite != null) name += " Diagram";\r
+                       \r
+                       setName(name);\r
+                       \r
+               }\r
+               \r
+               StringBuilder types = new StringBuilder();\r
+               for(Resource t : principalTypes) {\r
+                       if(types.length() > 0) types.append(" ");\r
+                       types.append(NameUtils.getSafeName(graph, t));\r
+               }\r
+               \r
+               setTypes(types.toString());\r
+               \r
+               Resource parent = graph.getPossibleObject(r, L0.PartOf);\r
+               if(parent != null) {\r
+                       String uri = graph.getPossibleURI(parent);\r
+                       if(uri.endsWith("/__CONTAINER__/__DIAGRAM__")) uri = uri.substring(0, uri.length()-"/__CONTAINER__/__DIAGRAM__".length());\r
+                       if(uri.endsWith("/__CONTAINER__")) uri = uri.substring(0, uri.length()-"/__CONTAINER__".length());\r
+                       if(uri.equals(baseURI)) uri = "<selected resource>";\r
+                       if(uri.startsWith(baseURI)) uri = uri.substring(baseURI.length());\r
+                       if(uri.startsWith("/Configuration/")) uri = uri.substring("/Configuration/".length());\r
+\r
+                       uri = uri.replace("http://Projects/Development%20Project/", "");\r
+                       uri = URIStringUtils.unescape(uri);\r
+                       \r
+                       if(graph.isInstanceOf(parent, MOD.Subscription)) {\r
+\r
+                               String name = graph.getPossibleRelatedValue(parent, L0.HasName, Bindings.STRING);\r
+                               String label = graph.getPossibleRelatedValue(parent, L0.HasLabel, Bindings.STRING);\r
+                               uri = uri.replace(name, label);\r
+                               \r
+                       }\r
+                       \r
+                       setPath(uri);\r
+               } else {\r
+                       setPath("");\r
+               }\r
+               \r
+               setCreatedBy(i.createdBy);\r
+               setModifiedBy(i.modifiedBy);\r
+               setModifiedAt(i.modifiedAt);\r
+               setCreatedAt(i.createdAt);\r
+               \r
+       }\r
+\r
+       public String getCreatedBy() {\r
+               return createdBy;\r
+       }\r
+\r
+       public void setCreatedBy(String createdBy) {\r
+               this.createdBy = createdBy;\r
+       }\r
+\r
+       public String getModifiedBy() {\r
+               return modifiedBy;\r
+       }\r
+\r
+       public void setModifiedBy(String modifiedBy) {\r
+               this.modifiedBy = modifiedBy;\r
+       }\r
+\r
+       public String getModifiedAt() {\r
+               return All.sdfLong.format(new Date(modifiedAt));\r
+       }\r
+\r
+       public void setModifiedAt(long modifiedAt) {\r
+               this.modifiedAt = modifiedAt;\r
+       }\r
+\r
+       public String getCreatedAt() {\r
+               return All.sdfLong.format(new Date(createdAt));\r
+       }\r
+\r
+       public void setCreatedAt(long createdAt) {\r
+               this.createdAt = createdAt;\r
+       }\r
+\r
+       public String getName() {\r
+               return name;\r
+       }\r
+\r
+       public void setName(String name) {\r
+               this.name = name;\r
+       }\r
+\r
+       public String getPath() {\r
+               return path;\r
+       }\r
+\r
+       public void setPath(String path) {\r
+               this.path = path;\r
+       }\r
+\r
+       public String getTypes() {\r
+               return types;\r
+       }\r
+\r
+       public void setTypes(String types) {\r
+               this.types = types;\r
+       }\r
+\r
+}
\ No newline at end of file