de.deepamehta.core.impl
Class AttachedType

Show UML class diagram
java.lang.Object
  extended by de.deepamehta.core.impl.AttachedDeepaMehtaObject
      extended by de.deepamehta.core.impl.AttachedTopic
          extended by de.deepamehta.core.impl.AttachedType
All Implemented Interfaces:
DeepaMehtaObject, Identifiable, JSONEnabled, Topic, Type
Direct Known Subclasses:
AttachedAssociationType, AttachedTopicType

abstract class AttachedType
extends AttachedTopic
implements Type


Nested Class Summary
private  class AttachedType.JSONWrapper
           
 
Field Summary
private  Map<String,AssociationDefinition> assocDefs
           
private  Logger logger
           
private  ViewConfiguration viewConfig
           
 
Fields inherited from class de.deepamehta.core.impl.AttachedDeepaMehtaObject
dms
 
Constructor Summary
AttachedType(TypeModel model, EmbeddedService dms)
           
 
Method Summary
private  void _addAssocDef(AssociationDefinitionModel model)
           
private  void _removeAssocDef(String childTypeUri)
           
private  void _removeFromTypeCache()
          Removes this type from type cache and adds a DELETE TYPE directive to the given set of directives.
 void addAssocDef(AssociationDefinitionModel model)
           
private  void addDeleteTypeDirective()
           
 void addIndexMode(IndexMode indexMode)
           
 void delete()
          Deletes all sub-topics of this DeepaMehta object (associated via "dm4.core.composition", recursively) and deletes all the remaining direct associations of this DeepaMehta object.
(package private) abstract  List<? extends DeepaMehtaObject> getAllInstances()
           
 AssociationDefinition getAssocDef(String childTypeUri)
           
 Collection<AssociationDefinition> getAssocDefs()
           
 String getDataTypeUri()
           
(package private) abstract  Directive getDeleteTypeDirective()
           
 List<IndexMode> getIndexModes()
           
 List<String> getLabelConfig()
           
 TypeModel getModel()
           
 ViewConfiguration getViewConfig()
           
 Object getViewConfig(String typeUri, String settingUri)
           
 boolean hasAssocDef(String childTypeUri)
           
private  boolean hasSequenceChanged(Collection<AssociationDefinitionModel> newAssocDefs)
           
private  boolean hasUriChanged(String newUri)
           
private  void indexAllInstances(IndexMode indexMode)
           
protected  void initAssocDefs()
           
private  void initViewConfig()
           
private  AssociationDefinitionModel lastAssocDef()
          Returns the last association definition of this type or null if there are no association definitions.
(package private) abstract  void putInTypeCache()
           
 void removeAssocDef(String childTypeUri)
           
(package private)  void removeAssocDefFromMemoryAndRebuildSequence(String childTypeUri)
           
(package private) abstract  void removeFromTypeCache()
           
 void setDataTypeUri(String dataTypeUri)
           
 void setLabelConfig(List<String> labelConfig)
           
private  void storeDataTypeUri(String dataTypeUri)
           
 void update(TypeModel model)
           
 void updateAssocDef(AssociationDefinitionModel model)
          Note: in contrast to the other "update" methods this one updates the memory only, not the DB! If you want to update memory and DB use AssociationDefinition.update(de.deepamehta.core.model.AssociationDefinitionModel).
private  void updateAssocDefs(Collection<AssociationDefinitionModel> newAssocDefs)
           
private  void updateDataTypeUri(String newDataTypeUri)
           
private  void updateLabelConfig(List<String> newLabelConfig)
           
private  void updateSequence(Collection<AssociationDefinitionModel> newAssocDefs)
           
 
Methods inherited from class de.deepamehta.core.impl.AttachedTopic
_update, addUpdateDirective, className, fetchRelatedTopic, fetchRelatedTopics, getAssociation, getAssociations, getProperty, getRelatedAssociation, getRelatedAssociations, getRelatedTopics, getTopicType, hasProperty, loadChildTopics, loadChildTopics, removeProperty, setProperty, storeTypeUri, storeUri, update
 
Methods inherited from class de.deepamehta.core.impl.AttachedDeepaMehtaObject
equals, getChildTopics, getDatabaseVendorObject, getId, getRelatedTopic, getRelatedTopics, getRelatedTopics, getSimpleValue, getType, getTypeUri, getUri, hashCode, setChildTopics, setSimpleValue, setSimpleValue, setSimpleValue, setSimpleValue, setSimpleValue, setTypeUri, setUri, toJSON, toString, update, updateChildTopic, updateChildTopics
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.deepamehta.core.Topic
loadChildTopics, loadChildTopics, update
 
Methods inherited from interface de.deepamehta.core.DeepaMehtaObject
getAssociation, getAssociations, getChildTopics, getDatabaseVendorObject, getId, getProperty, getRelatedAssociation, getRelatedAssociations, getRelatedTopic, getRelatedTopics, getRelatedTopics, getRelatedTopics, getSimpleValue, getTypeUri, getUri, hasProperty, removeProperty, setChildTopics, setProperty, setSimpleValue, setSimpleValue, setSimpleValue, setSimpleValue, setSimpleValue, setTypeUri, setUri, update, updateChildTopic, updateChildTopics
 
Methods inherited from interface de.deepamehta.core.JSONEnabled
toJSON
 

Field Detail

assocDefs

private Map<String,AssociationDefinition> assocDefs

viewConfig

private ViewConfiguration viewConfig

logger

private Logger logger
Constructor Detail

AttachedType

AttachedType(TypeModel model,
             EmbeddedService dms)
Method Detail

update

public void update(TypeModel model)
Specified by:
update in interface Type

delete

public void delete()
Description copied from class: AttachedDeepaMehtaObject
Deletes all sub-topics of this DeepaMehta object (associated via "dm4.core.composition", recursively) and deletes all the remaining direct associations of this DeepaMehta object.

Note: deletion of the object itself is up to the subclasses.

Specified by:
delete in interface DeepaMehtaObject
Overrides:
delete in class AttachedTopic

getDataTypeUri

public String getDataTypeUri()
Specified by:
getDataTypeUri in interface Type

setDataTypeUri

public void setDataTypeUri(String dataTypeUri)
Specified by:
setDataTypeUri in interface Type

getIndexModes

public List<IndexMode> getIndexModes()
Specified by:
getIndexModes in interface Type

addIndexMode

public void addIndexMode(IndexMode indexMode)
Specified by:
addIndexMode in interface Type

getAssocDefs

public Collection<AssociationDefinition> getAssocDefs()
Specified by:
getAssocDefs in interface Type

getAssocDef

public AssociationDefinition getAssocDef(String childTypeUri)
Specified by:
getAssocDef in interface Type

hasAssocDef

public boolean hasAssocDef(String childTypeUri)
Specified by:
hasAssocDef in interface Type

addAssocDef

public void addAssocDef(AssociationDefinitionModel model)
Specified by:
addAssocDef in interface Type

updateAssocDef

public void updateAssocDef(AssociationDefinitionModel model)
Description copied from interface: Type
Note: in contrast to the other "update" methods this one updates the memory only, not the DB! If you want to update memory and DB use AssociationDefinition.update(de.deepamehta.core.model.AssociationDefinitionModel).

This method is here to support a special case: the user retypes an association which results in a changed type definition. In this case the DB is already up-to-date and only the type's memory representation must be updated. So, here the DB update is the *cause* for a necessary memory-update. Normally the situation is vice-versa: the DB update is the necessary *effect* of a memory-update.

### TODO: get rid of this peculiar situation and remove this method. This might be achieved by using the PRE_UPDATE_ASSOCIATION hook instead the POST_UPDATE_ASSOCIATION hook in the Type Editor module. On pre-update we would perform a regular AssociationDefinition.update(de.deepamehta.core.model.AssociationDefinitionModel) and suppress further processing by returning false.

Specified by:
updateAssocDef in interface Type
Parameters:
model - the new association definition. Note: in contrast to the other "update" methods this one does not support partial updates. That is all association definition fields must be initialized.

removeAssocDef

public void removeAssocDef(String childTypeUri)
Specified by:
removeAssocDef in interface Type

getLabelConfig

public List<String> getLabelConfig()
Specified by:
getLabelConfig in interface Type

setLabelConfig

public void setLabelConfig(List<String> labelConfig)
Specified by:
setLabelConfig in interface Type

getViewConfig

public ViewConfiguration getViewConfig()
Specified by:
getViewConfig in interface Type

getViewConfig

public Object getViewConfig(String typeUri,
                            String settingUri)
Specified by:
getViewConfig in interface Type

getModel

public TypeModel getModel()
Specified by:
getModel in interface DeepaMehtaObject
Specified by:
getModel in interface Topic
Specified by:
getModel in interface Type
Overrides:
getModel in class AttachedTopic

putInTypeCache

abstract void putInTypeCache()

removeFromTypeCache

abstract void removeFromTypeCache()

getDeleteTypeDirective

abstract Directive getDeleteTypeDirective()

getAllInstances

abstract List<? extends DeepaMehtaObject> getAllInstances()

removeAssocDefFromMemoryAndRebuildSequence

void removeAssocDefFromMemoryAndRebuildSequence(String childTypeUri)

hasUriChanged

private boolean hasUriChanged(String newUri)

updateDataTypeUri

private void updateDataTypeUri(String newDataTypeUri)

storeDataTypeUri

private void storeDataTypeUri(String dataTypeUri)

indexAllInstances

private void indexAllInstances(IndexMode indexMode)

updateAssocDefs

private void updateAssocDefs(Collection<AssociationDefinitionModel> newAssocDefs)

updateSequence

private void updateSequence(Collection<AssociationDefinitionModel> newAssocDefs)

hasSequenceChanged

private boolean hasSequenceChanged(Collection<AssociationDefinitionModel> newAssocDefs)

updateLabelConfig

private void updateLabelConfig(List<String> newLabelConfig)

lastAssocDef

private AssociationDefinitionModel lastAssocDef()
Returns the last association definition of this type or null if there are no association definitions. ### TODO: move to class TypeModel?


initAssocDefs

protected void initAssocDefs()

_addAssocDef

private void _addAssocDef(AssociationDefinitionModel model)
Parameters:
model - the new association definition. Note: all fields must be initialized.

_removeAssocDef

private void _removeAssocDef(String childTypeUri)

initViewConfig

private void initViewConfig()

_removeFromTypeCache

private void _removeFromTypeCache()
Removes this type from type cache and adds a DELETE TYPE directive to the given set of directives.


addDeleteTypeDirective

private void addDeleteTypeDirective()


Copyright © 2014. All Rights Reserved.