+ Nothing -> fail "Couldn't resolve route graph structure."
+
+// Connection and terminal judgements
+importJava "org.simantics.structural2.modelingRules.CPTerminal" where
+ makeIConnectionPoint :: Resource -> Resource -> <Proc> IConnectionPoint
+
+importJava "org.simantics.structural2.modelingRules.ConnectionJudgementType" where
+ data ConnectionJudgementType
+ LEGAL :: ConnectionJudgementType
+ ILLEGAL :: ConnectionJudgementType
+ CANBEMADELEGAL :: ConnectionJudgementType
+
+importJava "org.simantics.structural2.modelingRules.ConnectionJudgement" where
+ data ConnectionJudgement
+ @private
+ @JavaName "type"
+ getConnectionJudgementType :: ConnectionJudgement -> ConnectionJudgementType
+
+importJava "org.simantics.structural2.modelingRules.IConnectionPoint" where
+ data IConnectionPoint
+
+
+importJava "org.simantics.modeling.ModelingUtils" where
+ getModelingRules :: Resource -> <ReadGraph, Proc> Maybe IModelingRules
+
+importJava "org.simantics.structural2.modelingRules.IModelingRules" where
+ data IModelingRules
+
+ judgeConnection :: IModelingRules -> [IConnectionPoint] -> <ReadGraph, Proc> ConnectionJudgement
+
+canTerminalBeConnected :: Resource -> Resource -> Resource -> <ReadGraph, Proc> Boolean
+canTerminalBeConnected diagram component terminal = match getModelingRules diagram with
+ Just modelingRules -> do
+ cpTerminal = makeIConnectionPoint component terminal
+ connectionJudgement = judgeConnection modelingRules [cpTerminal]
+ canBeConnected = getConnectionJudgementType connectionJudgement == LEGAL
+ LOGGER.info $ "canBeConnected : \(canBeConnected)"
+ canBeConnected
+ Nothing -> do
+ LOGGER.warn $ "No modeling rules available for diagram \(diagram) to resolve connection judgement"
+ False // true or false when no modeling rules available ?