The Meta-Environment API

nl.cwi.sen1.modulemanager.model
Class ModuleDatabase

java.lang.Object
  extended by nl.cwi.sen1.modulemanager.model.ModuleDatabase
Direct Known Subclasses:
ModuleGraph

public class ModuleDatabase
extends java.lang.Object


Field Summary
private  java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> ascendants
           
private  AttributeUpdateRuleMap attributeUpdateRules
           
protected  java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> descendants
           
private  AttributeSetListener listener
           
private  aterm.AFun modalALL
           
private  aterm.AFun modalAND
           
private  aterm.AFun modalNOT
           
private  aterm.AFun modalONE
           
private  aterm.AFun modalOR
           
private  aterm.AFun modalSET
           
private  int moduleCount
           
protected  java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,Module> modules
           
private  java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> transDescendants
           
 
Constructor Summary
ModuleDatabase(AttributeSetListener l, aterm.pure.PureFactory factory)
           
 
Method Summary
 void addDependency(nl.cwi.sen1.moduleapi.types.ModuleId moduleFromId, nl.cwi.sen1.moduleapi.types.ModuleId moduleToId)
           
 void addModule(Module module, nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
private  boolean checkRuleViolation(aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm predicate, aterm.ATerm rule)
           
private  void deleteAllDependencies(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 void deleteDependencies(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 void deleteDependency(nl.cwi.sen1.moduleapi.types.ModuleId moduleFromId, nl.cwi.sen1.moduleapi.types.ModuleId moduleToId)
           
 void deleteModuleAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId, aterm.ATerm namespace, aterm.ATerm key)
           
private  boolean evaluateAll(aterm.ATerm op, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  boolean evaluateAnd(aterm.ATerm op1, aterm.ATerm op2, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  boolean evaluateNot(aterm.ATerm op, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  boolean evaluateOne(aterm.ATerm op, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  boolean evaluateOr(aterm.ATerm op1, aterm.ATerm op2, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  boolean evaluateSet(aterm.ATerm op, nl.cwi.sen1.moduleapi.types.ModuleId id, aterm.ATerm namespace, aterm.ATerm key)
           
private  void fireAttributeSetListener(nl.cwi.sen1.moduleapi.types.ModuleId id, aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm oldValue, aterm.ATerm newValue)
           
 nl.cwi.sen1.moduleapi.types.AttributeStore getAllAttributes(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getAllChildren(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getAllModules()
           
 java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getAllParents(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getChildren(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getClosableModules(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> getDependencies()
           
 aterm.ATerm getModuleAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId, aterm.ATerm namespace, aterm.ATerm key)
           
 nl.cwi.sen1.moduleapi.types.ModuleId getModuleIdByAttribute(aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm value)
           
 int getNextModuleId()
           
 java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getParents(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
private  boolean innermostRuleEvaluation(aterm.ATerm rule, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
 void printStatistics()
           
private  void propagate(AttributeUpdateRule rule, nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  void propagateToParents(nl.cwi.sen1.moduleapi.types.ModuleId id)
           
 void registerAttributeUpdateRule(aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm rule, aterm.ATerm value)
           
 void removeModule(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)
           
 void setAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId, aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm value)
           
private  void triggerAllAttributeUpdateRules(nl.cwi.sen1.moduleapi.types.ModuleId id)
           
private  void triggerAllAttributeUpdateRulesOnAllModules()
           
private  void updateAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId, aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm value)
           
private  void updatePredicate(nl.cwi.sen1.moduleapi.types.ModuleId moduleId, aterm.ATerm namespace, aterm.ATerm key, aterm.ATerm predicate)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

moduleCount

private int moduleCount

modules

protected java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,Module> modules

descendants

protected java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> descendants

transDescendants

private java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> transDescendants

attributeUpdateRules

private AttributeUpdateRuleMap attributeUpdateRules

ascendants

private java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> ascendants

listener

private AttributeSetListener listener

modalAND

private aterm.AFun modalAND

modalOR

private aterm.AFun modalOR

modalNOT

private aterm.AFun modalNOT

modalONE

private aterm.AFun modalONE

modalALL

private aterm.AFun modalALL

modalSET

private aterm.AFun modalSET
Constructor Detail

ModuleDatabase

public ModuleDatabase(AttributeSetListener l,
                      aterm.pure.PureFactory factory)
Method Detail

getNextModuleId

public int getNextModuleId()

addModule

public void addModule(Module module,
                      nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

removeModule

public void removeModule(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

triggerAllAttributeUpdateRulesOnAllModules

private void triggerAllAttributeUpdateRulesOnAllModules()

triggerAllAttributeUpdateRules

private void triggerAllAttributeUpdateRules(nl.cwi.sen1.moduleapi.types.ModuleId id)

setAttribute

public void setAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId,
                         aterm.ATerm namespace,
                         aterm.ATerm key,
                         aterm.ATerm value)

updateAttribute

private void updateAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId,
                             aterm.ATerm namespace,
                             aterm.ATerm key,
                             aterm.ATerm value)

updatePredicate

private void updatePredicate(nl.cwi.sen1.moduleapi.types.ModuleId moduleId,
                             aterm.ATerm namespace,
                             aterm.ATerm key,
                             aterm.ATerm predicate)

fireAttributeSetListener

private void fireAttributeSetListener(nl.cwi.sen1.moduleapi.types.ModuleId id,
                                      aterm.ATerm namespace,
                                      aterm.ATerm key,
                                      aterm.ATerm oldValue,
                                      aterm.ATerm newValue)

propagateToParents

private void propagateToParents(nl.cwi.sen1.moduleapi.types.ModuleId id)

propagate

private void propagate(AttributeUpdateRule rule,
                       nl.cwi.sen1.moduleapi.types.ModuleId id)

getModuleAttribute

public aterm.ATerm getModuleAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId,
                                      aterm.ATerm namespace,
                                      aterm.ATerm key)

getModuleIdByAttribute

public nl.cwi.sen1.moduleapi.types.ModuleId getModuleIdByAttribute(aterm.ATerm namespace,
                                                                   aterm.ATerm key,
                                                                   aterm.ATerm value)

getAllModules

public java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getAllModules()

deleteModuleAttribute

public void deleteModuleAttribute(nl.cwi.sen1.moduleapi.types.ModuleId moduleId,
                                  aterm.ATerm namespace,
                                  aterm.ATerm key)

getAllAttributes

public nl.cwi.sen1.moduleapi.types.AttributeStore getAllAttributes(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

addDependency

public void addDependency(nl.cwi.sen1.moduleapi.types.ModuleId moduleFromId,
                          nl.cwi.sen1.moduleapi.types.ModuleId moduleToId)

getChildren

public java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getChildren(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

getAllChildren

public java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getAllChildren(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

getParents

public java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getParents(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

getAllParents

public java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getAllParents(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

getClosableModules

public java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId> getClosableModules(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

deleteDependency

public void deleteDependency(nl.cwi.sen1.moduleapi.types.ModuleId moduleFromId,
                             nl.cwi.sen1.moduleapi.types.ModuleId moduleToId)

deleteDependencies

public void deleteDependencies(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

deleteAllDependencies

private void deleteAllDependencies(nl.cwi.sen1.moduleapi.types.ModuleId moduleId)

getDependencies

public java.util.Map<nl.cwi.sen1.moduleapi.types.ModuleId,java.util.Set<nl.cwi.sen1.moduleapi.types.ModuleId>> getDependencies()

printStatistics

public void printStatistics()

registerAttributeUpdateRule

public void registerAttributeUpdateRule(aterm.ATerm namespace,
                                        aterm.ATerm key,
                                        aterm.ATerm rule,
                                        aterm.ATerm value)

checkRuleViolation

private boolean checkRuleViolation(aterm.ATerm namespace,
                                   aterm.ATerm key,
                                   aterm.ATerm predicate,
                                   aterm.ATerm rule)

innermostRuleEvaluation

private boolean innermostRuleEvaluation(aterm.ATerm rule,
                                        nl.cwi.sen1.moduleapi.types.ModuleId id)

evaluateAnd

private boolean evaluateAnd(aterm.ATerm op1,
                            aterm.ATerm op2,
                            nl.cwi.sen1.moduleapi.types.ModuleId id)

evaluateOr

private boolean evaluateOr(aterm.ATerm op1,
                           aterm.ATerm op2,
                           nl.cwi.sen1.moduleapi.types.ModuleId id)

evaluateNot

private boolean evaluateNot(aterm.ATerm op,
                            nl.cwi.sen1.moduleapi.types.ModuleId id)

evaluateOne

private boolean evaluateOne(aterm.ATerm op,
                            nl.cwi.sen1.moduleapi.types.ModuleId id)

evaluateAll

private boolean evaluateAll(aterm.ATerm op,
                            nl.cwi.sen1.moduleapi.types.ModuleId id)

evaluateSet

private boolean evaluateSet(aterm.ATerm op,
                            nl.cwi.sen1.moduleapi.types.ModuleId id,
                            aterm.ATerm namespace,
                            aterm.ATerm key)

The Meta-Environment API