ext = metadata.createAndAddPDFAExtensionSchemaWithDefaultNS();
}
Field[] fields;
fields = classSchem.getFields();
SchemaExtensionDefinition schemDefAnnot;
PropertyExtensionDefinition propExtDefAnnot;
PropertyType propTypeAnnot;
String propName = null;
String propDesc;
List<PropertyDescription> xmlPropDesc = null;
if (classSchem.isAnnotationPresent(SchemaExtensionDefinition.class)) {
schemDefAnnot = classSchem
.getAnnotation(SchemaExtensionDefinition.class);
// Try to find and load XML Properties Descriptions file path
if (!schemDefAnnot.property_descriptions().equals("")) {
XMLPropertiesDescriptionManager propManag = new XMLPropertiesDescriptionManager();
propManag.loadListFromXML(classSchem, schemDefAnnot
.property_descriptions());
xmlPropDesc = propManag.getPropertiesDescriptionList();
}
SchemaDescription desc = ext.createSchemaDescription();
desc.setSchemaValue(schemDefAnnot.schema());
desc.setNameSpaceURIValue(schema.getNamespaceValue());
desc.setPrefixValue(schema.getPrefix());
ext.addSchemaDescription(desc);
// Try to find and load XML ValueType Description file path
if (!schemDefAnnot.valueType_description().equals("")) {
XMLValueTypeDescriptionManager valTypesManag = new XMLValueTypeDescriptionManager();
valTypesManag.loadListFromXML(classSchem, schemDefAnnot
.valueType_description());
addValueTypesToSchem(metadata, desc, valTypesManag
.getValueTypesDescriptionList());
}
for (Field field : fields) {
if (field
.isAnnotationPresent(PropertyExtensionDefinition.class)
&& field.isAnnotationPresent(PropertyType.class)) {
try {
propName = (String) field.get(propName);
} catch (Exception e) {
throw propertyDescriptionError(
classSchem.getName(),
field.getName(),
"Couldn't read content, please check accessibility and declaration of field associated",
e);
}
propExtDefAnnot = field
.getAnnotation(PropertyExtensionDefinition.class);
propTypeAnnot = field.getAnnotation(PropertyType.class);
try {
if (xmlPropDesc != null) {
Iterator<PropertyDescription> it = xmlPropDesc
.iterator();
PropertyDescription tmp;
propDesc = null;
while (it.hasNext() && (propDesc == null)) {
tmp = it.next();
if (tmp.getPropertyName().equals(propName)) {
propDesc = tmp.getDescription();
}
}
} else {
propDesc = propExtDefAnnot.propertyDescription();
}
if ((propDesc == null) || propDesc.equals("")) {
propDesc = "Not documented description";
}
desc.addProperty(propName,
propTypeAnnot.propertyType(), propExtDefAnnot
.propertyCategory(), propDesc);
} catch (BadFieldValueException e) {
throw propertyDescriptionError(classSchem.getName(),
propName, "Wrong value for property Category",
e);