]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Introduced possibleUriOf for Browsable class in Simantics/DB 46/1046/5
authorAntti Villberg <antti.villberg@semantum.fi>
Wed, 27 Sep 2017 14:28:14 +0000 (17:28 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Thu, 28 Sep 2017 07:28:46 +0000 (10:28 +0300)
Imported possibleUriOfResource for Browsable Resource implementation.
Browsable Variable uses the same uri implementation for both uriOf and
possibleUriOf since Variables always have a URI.

Also added yet another utility function possiblePredicateByNameFromType
to Simantics/DB.

refs #7512

Change-Id: I2363aed7ed67ba84bd992847187fe8ac6c7b6bce

bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/Layer0Utils.java
bundles/org.simantics.scl.db/scl/Simantics/DB.scl
bundles/org.simantics.scl.db/scl/Simantics/Variables.scl

index c04ca3cd1e0b758d1d66a8a8628887dab576f5cc..dc253137f7a74fc3a5cda7783c46706c8bec265c 100644 (file)
@@ -1341,6 +1341,11 @@ public class Layer0Utils {
        }
        return result;
     }
+
+    public static Resource getPossiblePredicateByNameFromType(ReadGraph graph, Resource type, String name) throws DatabaseException {
+       Map<String,Resource> domain = getDomainOf(graph, type);
+       return domain.get(name); 
+    }
     
     public static Resource getPossiblePredicateByName(ReadGraph graph, Resource instance, String predicateName) throws DatabaseException {
        for(Resource type : graph.getPrincipalTypes(instance)) {
index b24df17f8639c40cb2a020f130a911e8bf547912..a35092bd9612651f16af7502df165a34a79e6e7b 100644 (file)
@@ -58,6 +58,10 @@ importJava "org.simantics.db.ReadGraph" where
     @private
     @JavaName getURI
     uriOfResource :: Resource -> <ReadGraph> String
+
+    @private
+    @JavaName getPossibleURI
+    possibleUriOfResource :: Resource -> <ReadGraph> Maybe String
     
     @JavaName getObjects
     objects_ :: Resource -> Resource -> <ReadGraph> Collection Resource
@@ -167,7 +171,10 @@ class Browsable a where
 
     "Returns the URI of the given value."
     uriOf :: a -> <ReadGraph> String
-  
+    
+    "Returns the URI of the given value if it exists or Nothing."
+    possibleUriOf :: a -> <ReadGraph> Maybe String
+    
     "Reads the name of the value."
     nameOf :: a -> <ReadGraph> String
     possibleNameOf :: a -> <ReadGraph> Maybe String
@@ -186,6 +193,7 @@ class Browsable a where
 instance Browsable Resource where
     fromUri = resource
     uriOf = uriOfResource
+    possibleUriOf = possibleUriOfResource
     nameOf r = relatedValue r L0.HasName
     possibleNameOf r = possibleRelatedValue r L0.HasName
     @inline
@@ -356,6 +364,8 @@ importJava "org.simantics.db.layer0.util.Layer0Utils" where
     copyTo_ :: Resource -> Resource -> <WriteGraph> Collection Resource
     @JavaName getPossiblePredicateByName
     possiblePredicateByName :: Resource -> String -> <ReadGraph> Maybe Resource
+    @JavaName getPossiblePredicateByNameFromType
+    possiblePredicateByNameFromType :: Resource -> String -> <ReadGraph> Maybe Resource
 
 copyTo :: Resource -> Resource -> <WriteGraph> Resource
 copyTo targetContainer source = do
index 9a6ffde8c17267717a3113d3ecfded655e262942..d3127e69a691b530826063a77d0ea3772d217d87 100644 (file)
@@ -405,6 +405,7 @@ instance Show Variable where
 instance Browsable Variable where
     fromUri = variable
     uriOf = uri
+    possibleUriOf v = Just (uri v)
     nameOf = name
     possibleNameOf v = Just (name v)
     children v = collectionToList (children_ v)