@Override public boolean evaluate(VariantNameIF vn) { return Objects.equals(vn.getDataType(), datatype); } });
private static Collection filterVariants(Collection vns) { Collection result = new ArrayList(vns.size()); Iterator iter = vns.iterator(); while (iter.hasNext()) { VariantNameIF vn = (VariantNameIF) iter.next(); if (!Objects.equals(vn.getDataType(), DataTypes.TYPE_URI)) result.add(vn); } return result; }
@Override public Locator getDatatype() { return topicMap.wrapLocator(wrapped.getDataType()); }
protected static String makeDataKey(VariantNameIF variant) { return "$$" + variant.getValue() + SPACER + variant.getDataType(); } }
/** * 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("] */"); } }
private Map makeTypeIndex() { Map index = new HashMap(); Iterator it = topicmap.getTopics().iterator(); while (it.hasNext()) { TopicIF topic = (TopicIF) it.next(); Iterator it2 = topic.getTopicNames().iterator(); while (it2.hasNext()) { TopicNameIF bn = (TopicNameIF) it2.next(); Iterator it3 = bn.getVariants().iterator(); while (it3.hasNext()) { VariantNameIF vn = (VariantNameIF) it3.next(); add(index, vn, vn.getDataType()); } } it2 = topic.getOccurrences().iterator(); while (it2.hasNext()) { OccurrenceIF occ = (OccurrenceIF) it2.next(); add(index, occ, occ.getDataType()); } } return index; }
/** * 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()); }
protected void writeVariantName(VariantNameIF variant, ContentHandler dh) throws SAXException { dh.startElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, "variantName", EMPTY_ATTR_LIST); if (Objects.equals(variant.getDataType(), DataTypes.TYPE_URI)) { LocatorIF varloc = variant.getLocator(); if (varloc != null) { String notation = varloc.getNotation(); if (notation != null && URI.equals(notation)) { // Write resourceRef atts.clear(); atts.addAttribute(EMPTY_NAMESPACE, EMPTY_LOCALNAME, XLINK_HREF, CDATA, varloc.getExternalForm()); dh.startElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEREF, atts); dh.endElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEREF); } else reportInvalidLocator(varloc); } } else { // FIXME: what to do about data type? atts.clear(); dh.startElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEDATA, atts); String value = variant.getValue(); if (value != null && !value.equals("")) { char[] chars = value.toCharArray(); dh.characters(chars, 0, chars.length); } dh.endElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEDATA); } dh.endElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, "variantName"); }
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() + "!]"; } }
private void write(VariantNameIF vn, ContentHandler dh) throws SAXException { atts.clear(); addReifier(atts, vn); dh.startElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, "variant", atts); writeReifier(vn, dh); writeItemIdentities(vn, dh); writeScope(vn, dh); atts.clear(); if (vn.getDataType().equals(DataTypes.TYPE_URI)) { atts.addAttribute(EMPTY_NAMESPACE, EMPTY_LOCALNAME, HREF, CDATA, vn.getLocator().getExternalForm()); dh.startElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEREF, atts); dh.endElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEREF); } else { addDatatype(atts, vn.getDataType()); dh.startElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEDATA, atts); write(vn.getValue(), dh); dh.endElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, RESOURCEDATA); } dh.endElement(EMPTY_NAMESPACE, EMPTY_LOCALNAME, "variant"); }
private static void copyVariants(TopicNameIF target, TopicNameIF source, Map<TopicIF, TopicIF> mergemap) { TopicMapBuilderIF builder = target.getTopicMap().getBuilder(); Iterator<VariantNameIF> it = source.getVariants().iterator(); while (it.hasNext()) { VariantNameIF sv = it.next(); VariantNameIF tv = builder.makeVariantName(target, sv.getValue(), sv.getDataType()); copyScope(tv, sv, mergemap); copyReifier(tv, sv, mergemap); copySourceLocators(tv, sv); } }
@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; }
if (args[1].equals(((VariantNameIF)args[0]).getDataType().getAddress())) expressions.add(JDOBoolean.TRUE); else
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); } }
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); }
public void testValue() { assertTrue("initial name value not null", "".equals(variant.getValue())); variant.setValue("testfaen"); assertTrue("name not set correctly", variant.getValue().equals("testfaen")); assertTrue("data type is incorrect. should be xsd:anyURI", Objects.equals(variant.getDataType(), DataTypes.TYPE_STRING)); try { variant.setValue(null); fail("value could be set to null"); } catch (NullPointerException e) { } assertTrue("data type is incorrect. should be xsd:anyURI", Objects.equals(variant.getDataType(), DataTypes.TYPE_STRING)); }
public void testGenerateAll() throws InvalidQueryException, IOException { load("jill.xtm"); List matches = new ArrayList(); Iterator it = topicmap.getTopics().iterator(); while (it.hasNext()) { TopicIF topic = (TopicIF) it.next(); Iterator it2 = topic.getTopicNames().iterator(); while (it2.hasNext()) { TopicNameIF bn = (TopicNameIF) it2.next(); if (bn.getValue() != null) addMatch(matches, "OBJ", bn, "VALUE", bn.getValue()); Iterator it3 = bn.getVariants().iterator(); while (it3.hasNext()) { VariantNameIF vn = (VariantNameIF) it3.next(); if (vn.getValue() != null && !Objects.equals(vn.getDataType(), DataTypes.TYPE_URI)) addMatch(matches, "OBJ", vn, "VALUE", vn.getValue()); } } it2 = topic.getOccurrences().iterator(); while (it2.hasNext()) { OccurrenceIF occ = (OccurrenceIF) it2.next(); if (occ.getValue() != null && !Objects.equals(occ.getDataType(), DataTypes.TYPE_URI)) addMatch(matches, "OBJ", occ, "VALUE", occ.getValue()); } } verifyQuery(matches, "value($OBJ, $VALUE)?"); }
/** * INTERNAL: Serialize a variant to the underlying JTM stream. * * @param variant the variant to be serialized. * @param topLevel if the element is serialized as top-level element. */ private void serializeVariant(VariantNameIF variant, boolean topLevel) throws IOException { if (!topLevel) { writer.object(); } serializeValue(variant.getLocator(), variant.getValue()); serializeDataType(variant.getDataType()); serializeScope(variant); serializeItemIdentifiers(variant); serializeReifier(variant); writer.endObject(); }
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 void testLocator() { assertTrue("initial locator not null", variant.getLocator() == null); try { URILocator loc = new URILocator("http://www.ontopia.net"); variant.setLocator(loc); assertTrue("locator identity not maintained after set", variant.getLocator().equals(loc)); assertTrue("data type is incorrect. should be xsd:anyURI", Objects.equals(variant.getDataType(), DataTypes.TYPE_URI)); try { variant.setLocator(null); fail("value could be set to null"); } catch (NullPointerException e) { } } catch (MalformedURLException e) { fail("(INTERNAL) given URI was malformed"); } }