|
From: Xuan B. <med...@us...> - 2008-01-23 22:38:22
|
Update of /cvsroot/tm4j/tm4j/src/org/tm4j/topicmap/tmdm/merged In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv23515/src/org/tm4j/topicmap/tmdm/merged Modified Files: MergedTopicMapView.java Log Message: Support for MergedOccurrence. Index: MergedTopicMapView.java =================================================================== RCS file: /cvsroot/tm4j/tm4j/src/org/tm4j/topicmap/tmdm/merged/MergedTopicMapView.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** MergedTopicMapView.java 22 Jan 2008 20:22:03 -0000 1.8 --- MergedTopicMapView.java 23 Jan 2008 22:38:26 -0000 1.9 *************** *** 86,91 **** protected Map<MergedAssociationKey,MergedAssociation> mergedAssociationByKey; ! protected Map<MergedAssociationKey,MergedAssociation> mergedAssociationRoleByKey; protected Map<MergedTopicNameKey,MergedTopicName> mergedTopicNameByKey; --- 86,92 ---- protected Map<MergedAssociationKey,MergedAssociation> mergedAssociationByKey; ! protected Map<MergedAssociationRoleKey,MergedAssociationRole> mergedAssociationRoleByKey; protected Map<MergedTopicNameKey,MergedTopicName> mergedTopicNameByKey; + protected Map<MergedOccurrenceKey,MergedOccurrence> mergedOccurrenceByKey; *************** *** 106,113 **** topicNameToMergedTopicName = createMap(); variantToMergedVariant = createMap(); ! occurrenceToMergedOccurrence = createMap(); mergedAssociationByKey = createMap(); mergedTopicNameByKey = createMap(); mergedTopicMap = new MergedTopicMap(this); --- 107,115 ---- topicNameToMergedTopicName = createMap(); variantToMergedVariant = createMap(); ! occurrenceToMergedOccurrence = createMap(); mergedAssociationByKey = createMap(); mergedTopicNameByKey = createMap(); + mergedOccurrenceByKey = createMap(); mergedTopicMap = new MergedTopicMap(this); *************** *** 915,918 **** --- 917,925 ---- } + protected void internalNotifyMergedOccurrenceCreated(MergedOccurrence occurrence) { + + getEventListener().notifyOccurrenceCreated(getMergedTopicMap(),occurrence.getParent(),occurrence); + } + protected void unindexKeys(Set<MergedAssociation> dependentAssociations,Set<MergedAssociationKey> dependentAssociationKeys) { *************** *** 1001,1004 **** --- 1008,1040 ---- } + protected void indexOccurrence(ReadableOccurrence occurrence,boolean notifyListener) { + MergedOccurrenceKey key = createOccurrenceKey(occurrence); + + MergedOccurrence mergedOccurrence = mergedOccurrenceByKey.get(key); + + if (mergedOccurrence==null) { + mergedOccurrence = new MergedOccurrence(/*getMergedTopicMap()*/this,/*mergedOccurrence.getParent(),*/key,occurrence); + mergedOccurrenceByKey.put(key,mergedOccurrence); + + if (notifyListener) { + internalNotifyMergedOccurrenceCreated(mergedOccurrence); + } + } else { + mergedOccurrence.addComponent(occurrence); + } + + MergedOccurrence oldValue = occurrenceToMergedOccurrence.put(occurrence,mergedOccurrence); + + assert oldValue==null; + + /* + FIXME: What if the components of the key change over time? + They do not change, but they may become invalid. + If a topic merges, for example, all its dependent keys should be reevaluated, as some dependent + keys may now be equal as well. + + */ + } + protected MergedAssociation getMergedAssociation(MergedAssociationKey key) { return mergedAssociationByKey.get(key); *************** *** 1132,1135 **** --- 1168,1175 ---- } + protected MergedOccurrenceKey createOccurrenceKey(ReadableOccurrence source) { + return new MergedOccurrenceKey(getMergedTopic(source.getParent()),getMergedTopic(source.getType()),source.getDatatype(),source.getValue(),createScopeKey(source.getScope())); + } + protected MergedScopeKey createScopeKey(ReadableScope scope) { return new MergedScopeKey(null); // FIXME *************** *** 1142,1145 **** --- 1182,1191 ---- } + public void notifyOccurrenceCreated(ReadableTopicMap topicMap,ReadableTopic topic,ReadableOccurrence occurrence) { + assert isRepresentedTopicMap(topicMap); + + indexOccurrence(occurrence,true); + } + public void notifyAssociationRoleCreated(ReadableTopicMap topicMap,ReadableAssociation association,ReadableAssociationRole associationRole) { assert isRepresentedTopicMap(topicMap); |