SnapshotVariantName(VariantNameIF original, int snapshotType, Map<TMObjectIF, SnapshotTMObject> processed) { this.snapshotType = snapshotType; switch (snapshotType) { case SNAPSHOT_REFERENCE: this.objectId = original.getObjectId(); break; case SNAPSHOT_COMPLETE: this.objectId = original.getObjectId(); this.srclocs = new ArrayList<LocatorIF>(original.getItemIdentifiers()); this.basename = SnapshotTopicName.makeSnapshot(original.getTopicName(), SnapshotTopic.SNAPSHOT_REFERENCE, processed); this.topic = SnapshotTopic.makeSnapshot(original.getTopic(), SnapshotTopic.SNAPSHOT_REFERENCE, processed); this.datatype = original.getDataType(); this.value = original.getValue(); this.scope = new ArrayList<TopicIF>(); Iterator<TopicIF> siter = original.getScope().iterator(); while (siter.hasNext()) { this.scope.add(SnapshotTopic.makeSnapshot(siter.next(), snapshotType, processed)); } this.reifier = SnapshotTopic.makeSnapshot(original.getReifier(), SnapshotTopic.SNAPSHOT_REFERENCE, processed); break; default: throw new OntopiaRuntimeException("Unknown snapshot type: " + snapshotType); } }
/** * INTERNAL: Copies the variant value and datatype from the * source topic to the target topic. * * @since 4.0 */ public static void copyVariantData(VariantNameIF target, VariantNameIF source) { if (source.getLength() > DataTypes.SIZE_THRESHOLD) target.setReader(source.getReader(), source.getLength(), source.getDataType()); else target.setValue(source.getValue(), source.getDataType()); }
private void write(VariantNameIF variant, int number) { AttributesImpl attributes = reifier(variant); attributes.addAttribute("", "", AT_NUMBER, null, "" + number); startElement(EL_VARIANT, attributes); attributes.clear(); if (Objects.equals(variant.getDataType(), DataTypes.TYPE_URI)) { LocatorIF locator = variant.getLocator(); if (locator != null) write(normaliseLocatorReference(locator.getAddress())); } else { String value = variant.getValue(); if (value != null) write(value); } write(variant.getDataType(), "datatype"); write(variant.getScope()); writeLocators(variant.getItemIdentifiers(), EL_ITEMIDENTIFIERS); endElement(EL_VARIANT); }
protected static String makeDataKey(VariantNameIF variant) { return "$$" + variant.getValue() + SPACER + variant.getDataType(); } }
@Override public int compare(VariantNameIF vn1, VariantNameIF vn2) { if (Objects.equals(vn1, vn2)) return 0; int retVal = scopeComparator.compare(filterCollection(vn1.getScope()), filterCollection(vn2.getScope())); if (retVal == 0) retVal = lazyStringCompare(vn1.getValue(), vn2.getValue()); return retVal; }
else if (matches.data[ix][ix1] instanceof VariantNameIF) { VariantNameIF vn = (VariantNameIF) matches.data[ix][ix1]; if (!Objects.equals(vn.getDataType(), DataTypes.TYPE_URI)) // exclude xsd:anyURI object = vn.getValue(); } else if (matches.data[ix][ix1] instanceof OccurrenceIF) { OccurrenceIF occ2 = (OccurrenceIF) matches.data[ix][ix1]; object = ((VariantNameIF) matches.data[ix][ix1]).getTopicName(); break; case FILTER_ASSOCIATION_ROLE: object = ((OccurrenceIF) matches.data[ix][ix1]).getLocator(); else if (matches.data[ix][ix1] instanceof VariantNameIF) object = ((VariantNameIF) matches.data[ix][ix1]).getLocator(); if (object != null) object = ((LocatorIF) object).getAddress(); LocatorIF dt; if (matches.data[ix][ix1] instanceof VariantNameIF) dt = ((VariantNameIF) matches.data[ix][ix1]).getDataType(); else if (matches.data[ix][ix1] instanceof OccurrenceIF) dt = ((OccurrenceIF) matches.data[ix][ix1]).getDataType();
vn.setValue(vn_vn2, DataTypes.TYPE_INTEGER); vn.addItemIdentifier(vn_item_identifier); vn.removeItemIdentifier(vn_item_identifier); vn.addTheme(vn_theme); vn.removeTheme(vn_theme); vn.remove();
@Override public DocumentIF generate(VariantNameIF variant) { // Create document DocumentIF doc = createDocument(); // Add fields addObjectFields(doc, variant, "N"); if (Objects.equals(variant.getDataType(), DataTypes.TYPE_URI)) addLocatorField(doc, variant.getLocator()); else addContentField(doc, variant.getValue()); return doc; }
String bn_oid = bn.getObjectId(); VariantNameIF ivn = builder.makeVariantName(bn, vnval); ivn.addTheme(theme); VariantNameIF evn = builder.makeVariantName(bn, vnloc); String ivn_oid = ivn.getObjectId(); String evn_oid = evn.getObjectId(); while (viter.hasNext()) { VariantNameIF _vn = (VariantNameIF)viter.next(); if (_vn.getObjectId().equals(ivn_oid)) { assertTrue("variant name scope size not equal 1", _vn.getScope().size() == 1); assertTrue("variant name theme not equal", ((TopicIF)_vn.getScope().iterator().next()).getObjectId().equals(theme_oid)); assertTrue("variant value not equal", _vn.getValue().equals(vnval)); } else { assertTrue("remove snapshot base name does not include the right variant name", _vn.getObjectId().equals(evn_oid)); assertTrue("variant name locator not equal", _vn.getLocator().equals(vnloc)); assertTrue("variant name theme not equal", ((TopicIF)_vn.getScope().iterator().next()).getObjectId().equals(theme_oid));
@Override public int compare(Object o1, Object o2) { VariantNameIF vn1 = (VariantNameIF) o1; VariantNameIF vn2 = (VariantNameIF) o2; int cmp = compareString(vn1.getValue(), vn2.getValue()); if (cmp == 0) cmp = compareLocator(vn1.getLocator(), vn2.getLocator()); if (cmp == 0) cmp = compareTopicSet(vn1.getScope(), vn2.getScope()); return cmp; }
public VariantNameIF change(TopicMapIF tm, VariantNameIF result, VariantName variant) { // VariantNameIF if ((variant.getValue() != null) && (!variant.getValue().equals(result.getValue()))) { result.setValue(variant.getValue()); } if ((variant.getDataType() != null) && (!variant.getDataType().equals(result.getDataType()))) { result.setValue(result.getValue(), variant.getDataType()); // no shortcut } // ScopedIF scoped.setScope(result, variant.getScope()); // ReifiableIF reifiable.setReifier(result, variant.getReifier()); // TMObjectIF tmobject.setItemIdentifiers(result, variant); return result; }
public static String toString(String impl, VariantNameIF variant) { String id = UNASSIGNED; try { if (variant.getTopicMap() != null) id = variant.getObjectId(); if (Objects.equals(variant.getDataType(), DataTypes.TYPE_URI)) { return "[" + impl + ", " + id + " (" + variant.getValue() + ")]"; } else { String value = variant.getValue(); if (value == null) return "[" + impl + ", " + id + " null]"; else if (value.length() > MAX_STRING) return "[" + impl + ", " + id + " <" + value.substring(0, MAX_STRING) + "...>]"; else return "[" + impl + ", " + id + " <" + value + ">]"; } } catch (Throwable t) { return "[" + impl + ", " + variant.getObjectId() + "!]"; } }
while (it.hasNext()) { VariantNameIF svn = it.next(); Collection<TopicIF> tscope = translateScope(target, svn.getScope()); String key = KeyGenerator.makeScopeKey(tscope) + KeyGenerator.makeDataKey(svn); VariantNameIF tvn = builder.makeVariantName(tbn, svn.getValue(), svn.getDataType()); addScope(tvn, tscope); it.next().remove();
@Override public String getValue() { return wrapped.getValue(); }
/** * Write the given TopicNameIF to the given Writer, after line breaks with the * given indentString. */ private void writeVariant(VariantNameIF variant, Writer out) throws IOException { if (Objects.equals(variant.getDataType(), DataTypes.TYPE_STRING)) { String value = variant.getValue(); if (value != null) { out.write("(\""); out.write(escapeString(value)); out.write('"'); // Write the names of the scoping topics of this variant. writeScope(variant, out); out.write(')'); } } else { out.write("/* WARNING: LTM 1.3 cannot represent variant names that"); out.write(" are not of xsd:string type, hence cannot represent object ["); out.write(variant.getObjectId()); out.write("] */"); } }
err.println(" Variant name: '" + vn.getValue() + "'"); printScope(vn.getScope()); err.println(" Topic: " + printTopic(vn.getTopicName().getTopic()));
private void writeVariant(VariantNameIF variant, ContentHandler dh, ContextHolder context) throws SAXException { dh.startElement("", "", "variant", empty); writeScope(variant, dh, context); dh.startElement("", "", "variantName", empty); if (variant.getLocator() == null) writeResourceData(variant.getValue(), dh); else writeResourceRef(variant.getLocator(), dh); dh.endElement("", "", "variantName"); dh.endElement("", "", "variant"); }
@Override protected void setValue(String value, LocatorIF datatype) { wrapped.setValue(value, datatype); }
vname.setLocator(locator); for (TopicIF scope : variant.getScope()) { vname.addTheme(scope);