public BuilderEventHandler(TopicMapBuilderIF builder, ParseContextIF context) { this.builder = builder; this.context = context; this.framestack = new Stack(); this.reifiable = builder.getTopicMap(); this.generator = new PreviousEmbeddedTopicGenerator(); }
protected void processMember(TopicIF player) { // Add association role to association AssociationIF assoc = (AssociationIF)info.get(EL_ASSOCIATION); TopicIF roletype = (TopicIF)info.get(EL_ROLESPEC); if (roletype == null) roletype = getNullTopic(builder.getTopicMap()); if (player == null) player = getNullTopic(builder.getTopicMap()); AssociationRoleIF role = builder.makeAssociationRole(assoc, roletype, player); // Put previous role onto info map, so that it is possible to // recognize whether the member element was empty or not. info.put(EL_MEMBER, role); }
private static void copyAssociation(TopicMapIF targettm, AssociationIF source, Map<TopicIF, TopicIF> mergemap, Set<String> assocs) { TopicMapBuilderIF builder = targettm.getBuilder(); AssociationIF target = builder.makeAssociation(resolveTopic(builder.getTopicMap(), source.getType(), mergemap)); copyScope(target, source, mergemap); Iterator<AssociationRoleIF> it = source.getRoles().iterator(); while (it.hasNext()) { AssociationRoleIF sourceRole = it.next(); builder.makeAssociationRole(target, resolveTopic(builder.getTopicMap(), sourceRole.getType(), mergemap), resolveTopic(builder.getTopicMap(), sourceRole.getPlayer(), mergemap)); } if (assocs.contains(KeyGenerator.makeAssociationKey(target))) target.remove(); else { copyReifier(target, source, mergemap); copySourceLocators(target, source); } }
TopicIF nullTopic = getNullTopic(builder.getTopicMap()); TopicIF roletype = (TopicIF)info.get(EL_ROLESPEC); if (roletype == null) roletype = nullTopic;
@Override public void addSubjectIdentifier(ValueGeneratorIF locator) { TopicMapIF tm = builder.getTopicMap(); TopicIF other = tm.getTopicBySubjectIdentifier(locator.getLocator()); if (other != null) merge(topic, other); else topic.addSubjectIdentifier(locator.getLocator()); }
TopicIF atype = getNullTopic(builder.getTopicMap()); AssociationIF assoc = builder.makeAssociation(atype); TopicIF otype = getDefaultOccurrenceTopic(builder.getTopicMap()); OccurrenceIF occurs = builder.makeOccurrence(topic, otype, "");
nametype = copyTopic(builder.getTopicMap(), bn2.getType()); mergemap.put(bn2.getType(), nametype); copyCharacteristics(nametype, bn2.getType(), mergemap); occtype = copyTopic(builder.getTopicMap(), occ2.getType()); mergemap.put(occ2.getType(), occtype); copyCharacteristics(occtype, occ2.getType(), mergemap);
continue; TopicNameIF bntarget = builder.makeTopicName(target, resolveTopic(builder.getTopicMap(), bnsource.getType()), bnsource.getValue()); copyScope(bntarget, bnsource); continue; OccurrenceIF otarget = builder.makeOccurrence(target, resolveTopic(builder.getTopicMap(), osource.getType()), ""); CopyUtils.copyOccurrenceData(otarget, osource); AssociationIF asource = rstart.getAssociation(); AssociationIF atarget = builder.makeAssociation(resolveTopic(builder.getTopicMap(), asource.getType())); copyScope(atarget, asource); AssociationRoleIF rtarget = builder.makeAssociationRole(atarget, resolveTopic(builder.getTopicMap(), rsource.getType()), (rsource.equals(rstart) ? target : copyTopic(targettm, rsource.getPlayer()))); rtarget = resolveIdentities(rtarget, rsource);