package org.openiaml.model.drools.rules.runtime.file_domain_object #list any import classes here. import org.openiaml.model.drools.*; import org.openiaml.model.*; import org.openiaml.model.model.*; // for ModelPackage import org.openiaml.model.model.domain.*; import org.openiaml.model.inference.*; // for handler #declare any global variables here global EcoreCreateElementsHelper handler; global DroolsInsertionQueue queue; global DroolsHelperFunctions functions; /* rule "Refresh FileDomainStore mappings" when p : Properties ( ) fds : FileDomainStore ( overridden == false, propertiesFile == p ) not ( FileDomainObject ( eContainer == fds, name == "properties" )) then FileDomainObject fdo = handler.generatedFileDomainObject(fds, fds); fdo.setName("properties"); queue.add(fdo); end */ rule "Refresh FileDomainStore mappings (2)" when $fds : DomainStore ( overridden == false, type == DomainStoreTypes.PROPERTIES_FILE ) p : ExtendedProperties ( ) from $fds.propertiesFile not ( DomainObject ( eContainer == $fds, name == "properties" )) then DomainObject fdo = handler.generatedDomainObject($fds, $fds); //handler.setValue(fdo, ModelPackage.eINSTANCE.getNamedElement_Name(), "properties"); handler.setName(fdo, "properties"); queue.add(fdo, drools); end /* this rule doesn't work unless you also insert() all the Properties. rule "Refresh FileDomainObject mappings" when $p : Properties ( ) $key : String ( ) from $p.stringPropertyNames fds : FileDomainStore ( overridden == false, propertiesFile == $p ) fdo : FileDomainObject ( eContainer == fds, name == "properties" ) not ( FileDomainAttribute ( eContainer == fdo, name == $key )) then FileDomainAttribute fda = handler.generatedFileDomainAttribute(fdo, fdo); handler.setValue(fda, ModelPackage.eINSTANCE.getNamedElement_Name(), $key); queue.add(fda, drools); end */ // unfortunately $p.stringPropertyNames() cannot be iterated over. // this is either because Drools expects getFieldName(), or it cannot // iterate over Set or Collection rule "Refresh FileDomainObject mappings (2)" when $fds : DomainStore ( overridden == false, type == DomainStoreTypes.PROPERTIES_FILE ) $p : ExtendedProperties ( ) from $fds.propertiesFile $key : String ( ) from $p.propertyNames fdo : DomainObject ( eContainer == $fds, name == "properties" ) not ( DomainAttribute ( eContainer == fdo, name == $key )) then DomainAttribute fda = handler.generatedDomainAttribute(fdo, fdo); //handler.setValue(fda, ModelPackage.eINSTANCE.getNamedElement_Name(), $key); handler.setName(fda, $key); queue.add(fda, drools); end