📄 xmpcorecoverage.java
字号:
meta.setProperty (NS1, "QualProp3", "Prop value"); meta.setQualifier (NS1, "ns1:QualProp3", XMPConst.NS_XML, "xml:lang", "en-us"); meta.setQualifier (NS1, "ns1:QualProp3", NS2, "ns2:Qual", "Qual value"); meta.setProperty (NS1, "QualProp4", "Prop value"); meta.setQualifier (NS1, "QualProp4", NS2, "Qual", "Qual value"); meta.setQualifier (NS1, "QualProp4", XMPConst.NS_XML, "lang", "en-us"); printXMPMeta(meta, "Add some qualifiers"); meta.setProperty (NS1, "QualProp1", "new value"); meta.setProperty (NS1, "QualProp2", "new value"); meta.setProperty (NS1, "QualProp3", "new value"); meta.setProperty (NS1, "QualProp4", "new value"); printXMPMeta (meta, "Change values and keep qualifiers"); return meta; } /** * Test getProperty, deleteProperty and related methods. * @param meta a predefined <code>XMPMeta</code> object. * @throws XMPException Forwards exceptions */ private static void coverGetPropertyMethods(XMPMeta meta) throws XMPException { writeMajorLabel ("Test getProperty, deleteProperty and related methods"); meta.deleteProperty (NS1, "QualProp1"); // ! Start with fresh qualifiers. meta.deleteProperty (NS1, "ns1:QualProp2"); meta.deleteProperty (NS1, "ns1:QualProp3"); meta.deleteProperty (NS1, "QualProp4"); writeMinorLabel("Set properties with qualifier"); meta.setProperty (NS1, "QualProp1", "Prop value"); meta.setQualifier (NS1, "QualProp1", NS2, "Qual1", "Qual1 value"); meta.setProperty (NS1, "QualProp2", "Prop value"); meta.setQualifier (NS1, "QualProp2", XMPConst.NS_XML, "lang", "en-us"); meta.setProperty (NS1, "QualProp3", "Prop value"); meta.setQualifier (NS1, "QualProp3", XMPConst.NS_XML, "lang", "en-us"); meta.setQualifier (NS1, "QualProp3", NS2, "Qual", "Qual value"); meta.setProperty (NS1, "QualProp4", "Prop value"); meta.setQualifier (NS1, "QualProp4", NS2, "Qual", "Qual value"); meta.setQualifier (NS1, "QualProp4", XMPConst.NS_XML, "lang", "en-us"); printXMPMeta (meta, "XMP object"); writeMinorLabel("Get simple properties"); XMPProperty property = meta.getProperty(NS1, "Prop"); println("getProperty ns1:Prop = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getProperty(NS1, "ns1:XMLProp"); println("getProperty ns1:XMLProp = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getProperty(NS1, "ns1:URIProp"); println("getProperty ns1:URIProp = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getArrayItem(NS1, "Bag", 2); println("getArrayItem ns1:Bag[2] = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); try { meta.getArrayItem(null, "ns1:Bag", 1); } catch (XMPException e) { println("getArrayItem with no schema URI - threw XMPException #" + e.getErrorCode() +" : " + e.getMessage() + ")"); } writeMinorLabel("Get array items and struct fields"); property = meta.getArrayItem(NS1, "ns1:Seq", 1); println("getArrayItem ns1:Seq[1] = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getArrayItem(NS1, "ns1:Alt", 1); println("getArrayItem ns1:Alt[1] = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); println(); property = meta.getStructField(NS1, "Struct", NS2, "Field1"); println("getStructField ns1:Struct/ns2:Field1 = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getStructField(NS1, "ns1:Struct", NS2, "Field2"); println("getStructField ns1:Struct/ns2:Field2 = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getStructField(NS1, "ns1:Struct", NS2, "ns2:Field3"); println("getStructField ns1:Struct/ns2:Field3 = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getStructField(NS1, "ns1:Struct", NS2, "ns2:Field3"); println("getStructField ns1:Struct/ns2:Field3 = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getStructField(NS1, "ns1:Struct", NS2, "ns2:Field3"); println("getStructField ns1:Struct/ns2:Field3 = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); println(); writeMinorLabel("Get qualifier"); property = meta.getQualifier(NS1, "QualProp1", NS2, "Qual1"); println("getQualifier ns1:QualProp1/?ns2:Qual1 = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); try { meta.getQualifier(null, "ns1:QualProp1", NS2, "Qual1"); } catch (XMPException e) { println("getQualifier with no schema URI - threw XMPException #" + e.getErrorCode() + " : " + e.getMessage()); } property = meta.getQualifier(NS1, "QualProp3", XMPConst.NS_XML, "xml:lang"); println("getQualifier ns1:QualProp3/@xml-lang = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getQualifier(NS1, "QualProp3", NS2, "ns2:Qual"); println("getQualifier ns1:QualProp3/?ns2:Qual = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); println(); writeMinorLabel("Get non-simple properties"); property = meta.getProperty(NS1, "Bag"); println("getProperty ns1:Bag = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getProperty(NS1, "Seq"); println("getProperty ns1:Seq = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getProperty(NS1, "Alt"); println("getProperty ns1:Alt = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); property = meta.getProperty(NS1, "Struct"); println("getProperty ns1:Struct = " + property.getValue() + " (" + property.getOptions().getOptionsString() + ")"); println(); writeMinorLabel("Get not existing properties"); try { meta.getProperty("ns:bogus/", "Bogus"); } catch (XMPException e) { println("getProperty with bogus schema URI - threw XMPException #" + e.getErrorCode() + " : " + e.getMessage()); } property = meta.getProperty (NS1, "Bogus"); println ("getProperty ns1:Bogus (not existing) = " + property); property = meta.getArrayItem(NS1, "Bag", 99); println ("ArrayItem ns1:Bag[99] (not existing) = " + property); property = meta.getStructField(NS1, "Struct", NS2, "Bogus"); println ("getStructField ns1:Struct/ns2:Bogus (not existing) = " + property); property = meta.getQualifier (NS1, "Prop", NS2, "Bogus"); println ("getQualifier ns1:Prop/?ns2:Bogus (not existing) = " + property); } /** * Test doesPropertyExist, deleteProperty, and related methods. * @param meta a predefined <code>XMPMeta</code> object. */ private static void coverExistingProperties(XMPMeta meta) { writeMajorLabel ("Test doesPropertyExist, deleteProperty, and related methods"); printXMPMeta (meta, "XMP object"); println("doesPropertyExist ns1:Prop = " + meta.doesPropertyExist(NS1, "Prop")); println("doesPropertyExist ns1:Struct = " + meta.doesPropertyExist(NS1, "ns1:Struct")); println("doesArrayItemExist ns1:Bag[2] = " + meta.doesArrayItemExist(NS1, "Bag", 2)); println("doesArrayItemExist ns1:Seq[last()] = " + meta.doesArrayItemExist(NS1, "ns1:Seq", XMPConst.ARRAY_LAST_ITEM)); println("doesStructFieldExist ns1:Struct/ns2:Field1 = " + meta.doesStructFieldExist(NS1, "Struct", NS2, "Field1")); println("doesQualifierExist ns1:QualProp1/?ns2:Qual1 = " + meta.doesQualifierExist(NS1, "QualProp1", NS2, "Qual1")); println("doesQualifierExist ns1:QualProp2/?xml:lang = " + meta.doesQualifierExist(NS1, "QualProp2", XMPConst.NS_XML, "lang")); println(); println("doesPropertyExist (namespace is null) = " + meta.doesPropertyExist(null, "ns1:Bag")); println("doesArrayItemExist (namespace is null) = " + meta.doesArrayItemExist(null, "ns1:Bag", XMPConst.ARRAY_LAST_ITEM)); println("doesQualifierExist ns:Bogus (namespace not existing) = " + meta.doesPropertyExist("ns:bogus/", "Bogus")); println("doesPropertyExist ns1:Bogus = " + meta.doesPropertyExist(NS1, "Bogus")); println("doesArrayItemExist ns1:Bag[99] = " + meta.doesArrayItemExist(NS1, "Bag", 99)); println("doesStructFieldExist ns1:Struct/ns2:Bogus = " + meta.doesStructFieldExist(NS1, "Struct", NS2, "Bogus")); println("doesQualifierExist ns1:Prop/?ns2:Bogus = " + meta.doesQualifierExist(NS1, "Prop", NS2, "Bogus")); } /** * Tests deletion of properties, array items, struct fields and qualifer. * @param meta a predefined <code>XMPMeta</code> object. */ private static void coverDeleteProperties(XMPMeta meta) { writeMajorLabel("Test deleteProperty"); meta.deleteProperty (NS1, "Prop"); meta.deleteArrayItem (NS1, "Bag", 2); meta.deleteStructField (NS1, "Struct", NS2, "Field1"); printXMPMeta (meta, "Delete Prop, Bag[2], and Struct1/Field1"); meta.deleteQualifier (NS1, "QualProp1", NS2, "Qual1"); meta.deleteQualifier (NS1, "QualProp2", XMPConst.NS_XML, "lang"); meta.deleteQualifier (NS1, "QualProp3", NS2, "Qual"); meta.deleteQualifier (NS1, "QualProp4", XMPConst.NS_XML, "lang"); printXMPMeta(meta, "Delete QualProp1/?ns2:Qual1, QualProp2/?xml:lang, " + "QualProp3:/ns2:Qual, and QualProp4/?xml:lang"); meta.deleteProperty (NS1, "Bag"); meta.deleteProperty (NS1, "Struct"); printXMPMeta (meta, "Delete all of Bag and Struct"); } /** * Localized text set/get methods. * @throws XMPException Forwards exceptions */ private static void coverLocalisedProperties() throws XMPException { writeMajorLabel ("Test setLocalizedText and getLocalizedText"); XMPMeta meta = XMPMetaFactory.create(); meta.setLocalizedText (NS1, "AltText", "", "x-default", "default value"); printXMPMeta (meta, "Set x-default value"); meta.setLocalizedText (NS1, "AltText", "en", "en-us", "en-us value"); printXMPMeta (meta, "Set en/en-us value"); meta.setLocalizedText (NS1, "AltText", "en", "en-uk", "en-uk value"); printXMPMeta (meta, "Set en/en-uk value"); println(); XMPProperty property = meta.getLocalizedText(NS1, "AltText", "en", "en-ca"); println("getLocalizedText en/en-ca = " + property.getValue() + " (lang: " + property.getLanguage() + ", opt: " + property.getOptions().getOptionsString() + ")"); property = meta.getProperty(NS1, "AltText"); println("getProperty ns1:AltText = " + property.getValue() + " (lang: " + property.getLanguage() + ", opt: " + property.getOptions().getOptionsString() + ")"); } /** * Literal value set/get methods * @throws XMPException */ private static void coverLiteralProperties() throws XMPException { writeMajorLabel("Test setProperty... and getProperty... methods " + "(set/get with literal values)"); XMPMeta meta = XMPMetaFactory.parseFromString(DATETIME_RDF); XMPDateTime dateValue = XMPDateTimeFactory.create(2000, 1, 2, 3, 4, 5, 0); meta.setPropertyBoolean (NS1, "Bool0", false); meta.setPropertyBoolean (NS1, "Bool1", true); meta.setPropertyInteger (NS1, "Int", 42); meta.setPropertyDouble (NS1, "Double", 4.2); meta.setPropertyDate (NS1, "Date10", dateValue); int offset = (/* hour */ 06 * 3600 * 1000 + /* minute */ 07 * 60 * 1000) * /* sign */ 1; dateValue.setTimeZone(new SimpleTimeZone(offset, "test")); meta.setPropertyDate (NS1, "Date11", dateValue); offset *= -1; dateValue.setTimeZone(new SimpleTimeZone(offset, "test")); meta.setPropertyDate (NS1, "Date12", dateValue); dateValue.setNanoSecond(9); meta.setPropertyDate (NS1, "Date13", dateValue); printXMPMeta (meta, "A few basic binary Set... calls"); println(); Boolean bool = meta.getPropertyBoolean(NS1, "Bool0"); println ("getPropertyBoolean ns1:Bool0 = " + bool); bool = meta.getPropertyBoolean(NS1, "Bool1"); println ("getPropertyBoolean ns1:Bool1 = " + bool); Integer integer = meta.getPropertyInteger(NS1, "Int"); println ("getPropertyBoolean ns1:Int = " + integer); Double d = meta.getPropertyDouble(NS1, "Double"); println ("getPropertyBoolean ns1:Int = " + d); println(); for (int i = 1; i <= 13; i++) { String dateName = "Date" + i; XMPDateTime dt = meta.getPropertyDate (NS1, dateName); println ("getPropertyDate (" + i + ") = " + dt); meta.setPropertyDate (NS2, dateName, dateValue); } printXMPMeta (meta, "Get and re-set the dates in NS2"); } /** * Parse and serialize methods. * @throws XMPException Forwards exceptions */ private static void coverParsing() throws XMPException { writeMajorLabel ("Test parsing with multiple buffers and various options"); XMPMeta meta = XMPMetaFactory.parseFromString(SIMPLE_RDF); printXMPMeta (meta, "Parse from String"); meta = XMPMetaFactory.parseFromString(SIMPLE_RDF, new ParseOptions() .setRequireXMPMeta(true)); printXMPMeta(meta, "Parse and require xmpmeta element, which is missing"); meta = XMPMetaFactory.parseFromString(NAMESPACE_RDF); printXMPMeta(meta, "Parse RDF with multiple nested namespaces"); meta = XMPMetaFactory.parseFromString(XMPMETA_RDF, new ParseOptions() .setRequireXMPMeta(true)); printXMPMeta(meta, "Parse and require xmpmeta element, which is present"); meta = XMPMetaFactory.parseFromString(INCONSISTENT_RDF); printXMPMeta(meta, "Parse and reconcile inconsistent aliases"); try { XMPMetaFactory.parseFromString(INCONSISTENT_RDF, new ParseOptions() .setStrictAliasing(true)); } catch (XMPException e) { println("Parse and do not reconcile inconsistent aliases - threw XMPException #" + e.getErrorCode() + " : " + e.getMessage()); } } /** * Test CR and LF in values.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -