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"); }
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"); }
LocatorIF locator = ((VariantNameIF)value).getLocator(); if (locator != null) locators.add(locator);
@Override public Locator locatorValue() { Locator loc = topicMap.wrapLocator(wrapped.getLocator()); if (loc != null) { return loc; } else { try { return getTopicMap().createLocator(getValue()); } catch (MalformedIRIException ex) { throw new IllegalArgumentException( "The value cannot be represented as Locator"); } } }
@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; }
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"); }
@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; }
/** * INTERNAL: Stringifies the given basename or variant name. * * @param name the name object to use; TopicNameIF or VariantNameIF * @return string containing name value or "~~~~~" if name not set */ @Override public String toString(NameIF name) { if (name == null) return "~~~~~"; if (name instanceof TopicNameIF) { return ((TopicNameIF) name).getValue(); } else { VariantNameIF vname = (VariantNameIF) name; if (vname.getValue() != null) return vname.getValue(); else return vname.getLocator().getAddress(); } }
@Override public int compare(VariantNameIF vn1, VariantNameIF vn2) { if (vn1 == vn2) return 0; // Compare variant name values int cval1 = compareObjects(vn1.getValue(), vn2.getValue()); if (cval1 != 0) return cval1; // Compare variant name locators int cval2 = compareObjects(vn1.getLocator(), vn2.getLocator(), LocatorComparator.getInstance()); if (cval2 != 0) return cval2; // Compare scope return compareCollections(vn1.getScope(), vn2.getScope(), TopicComparator.getInstance()); } }
value = sortVariant.getValue(); else value = sortVariant.getLocator().getAddress(); value = variant.getValue(); else value = variant.getLocator().getAddress();
public void testGenericURILocator() { LocatorIF loc1 = new GenericLocator("URI", "foo:bar"); variant.setLocator(loc1); LocatorIF loc2 = variant.getLocator(); assertTrue("Locator notation is not URI", loc2.getNotation().equals("URI")); assertTrue("Locator value is not foo:bar", loc2.getAddress().equals("foo:bar")); assertTrue("Input locator is not equal output locator", loc2.equals(loc1)); assertTrue("Output locator is not equal input locator", loc1.equals(loc2)); }
value = sortVariant.getValue(); else value = sortVariant.getLocator().getAddress(); value = variant.getValue(); else value = variant.getLocator().getAddress(); } else { throw new OntopiaRuntimeException("NameComparator Error: This comparator only compares " +
public void testCompletelyOpen() 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(); Iterator it3 = bn.getVariants().iterator(); while (it3.hasNext()) { VariantNameIF vn = (VariantNameIF) it3.next(); if (vn.getLocator() != null) addMatch(matches, "OBJ", vn, "LOCATOR", vn.getLocator().getAddress()); } } it2 = topic.getOccurrences().iterator(); while (it2.hasNext()) { OccurrenceIF occ = (OccurrenceIF) it2.next(); if (occ.getLocator() != null) addMatch(matches, "OBJ", occ, "LOCATOR", occ.getLocator().getAddress()); } } verifyQuery(matches, "resource($OBJ, $LOCATOR)?"); closeStore(); }
public void testCompletelyOpen2() throws InvalidQueryException, IOException { load("uri-vn.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(); Iterator it3 = bn.getVariants().iterator(); while (it3.hasNext()) { VariantNameIF vn = (VariantNameIF) it3.next(); if (vn.getLocator() != null) addMatch(matches, "OBJ", vn, "LOCATOR", vn.getLocator().getAddress()); } } it2 = topic.getOccurrences().iterator(); while (it2.hasNext()) { OccurrenceIF occ = (OccurrenceIF) it2.next(); if (occ.getLocator() != null) addMatch(matches, "OBJ", occ, "LOCATOR", occ.getLocator().getAddress()); } } verifyQuery(matches, "resource($OBJ, $LOCATOR)?"); closeStore(); }
@Override public void run(MasterTest mt) { VariantNameIF vn = (VariantNameIF)topicmap.getObjectById(mt.objectId); assertTrue("Variant name locator is not set", URILocator.create("x:variant-locator").equals(vn.getLocator())); } });
@Override public void run(MasterTest mt) { VariantNameIF vn = (VariantNameIF)topicmap.getObjectById(mt.objectId); assertTrue("Variant name locator is not null", URILocator.create("x:variant-locator:clear").equals(vn.getLocator())); } });
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"); } }
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); }
@Override public void run(MasterTest mt) { VariantNameIF vn = (VariantNameIF)topicmap.getObjectById(mt.objectId); assertTrue("Added variant name not found", vn != null); if (testInitialProperties) { assertTrue("Source locators is set", vn.getItemIdentifiers().isEmpty()); assertTrue("Scope is set", vn.getScope().isEmpty()); assertTrue("Value is set", vn.getValue() == null); assertTrue("Locator is set", vn.getLocator() == null); } } });
/** * 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(); }