private static void parseVDB(XMLStreamReader reader, VDBMetaData vdb) throws XMLStreamException { while (reader.hasNext() && (reader.nextTag() != XMLStreamConstants.END_ELEMENT)) { Element element = Element.forName(reader.getLocalName()); switch (element) { case DESCRIPTION: vdb.setDescription(reader.getElementText()); break; case PROPERTY: parseProperty(reader, vdb); break; case MODEL: ModelMetaData model = new ModelMetaData(); parseModel(reader, model); vdb.addModel(model); break; case TRANSLATOR: VDBTranslatorMetaData translator = new VDBTranslatorMetaData(); parseTranslator(reader, translator); vdb.addOverideTranslator(translator); break; case DATA_ROLE: DataPolicyMetadata policy = new DataPolicyMetadata(); parseDataRole(reader, policy); vdb.addDataPolicy(policy); break; case IMPORT_VDB: VDBImportMetadata vdbImport = new VDBImportMetadata(); Properties props = getAttributes(reader); vdbImport.setName(props.getProperty(Element.NAME.getLocalName())); vdbImport.setVersion(Integer.parseInt(props.getProperty(Element.VERSION.getLocalName()))); vdbImport.setImportDataPolicies( Boolean.parseBoolean( props.getProperty(Element.IMPORT_POLICIES.getLocalName(), "true"))); vdb.getVDBImports().add(vdbImport); ignoreTillEnd(reader); break; case ENTRY: EntryMetaData entry = new EntryMetaData(); parseEntry(reader, entry); vdb.getEntries().add(entry); break; default: throw new XMLStreamException( AdminPlugin.Util.gs( "unexpected_element5", reader.getName(), Element.DESCRIPTION.getLocalName(), Element.PROPERTY.getLocalName(), Element.MODEL.getLocalName(), Element.TRANSLATOR.getLocalName(), Element.DATA_ROLE.getLocalName()), reader.getLocation()); } } }
private static void writeModel(final XMLStreamWriter writer, ModelMetaData model) throws XMLStreamException { writer.writeStartElement(Element.MODEL.getLocalName()); writeAttribute(writer, Element.NAME.getLocalName(), model.getName()); writeAttribute(writer, Element.TYPE.getLocalName(), model.getModelType().name()); writeAttribute(writer, Element.VISIBLE.getLocalName(), String.valueOf(model.isVisible())); writeAttribute(writer, Element.PATH.getLocalName(), model.getPath()); if (model.getDescription() != null) { writeElement(writer, Element.DESCRIPTION, model.getDescription()); } writeProperties(writer, model.getProperties()); // source mappings for (SourceMappingMetadata source : model.getSourceMappings()) { writer.writeStartElement(Element.SOURCE.getLocalName()); writeAttribute(writer, Element.NAME.getLocalName(), source.getName()); writeAttribute( writer, Element.SOURCE_TRANSLATOR_NAME_ATTR.getLocalName(), source.getTranslatorName()); writeAttribute( writer, Element.SOURCE_CONNECTION_JNDI_NAME_ATTR.getLocalName(), source.getConnectionJndiName()); writer.writeEndElement(); } if (model.getSchemaSourceType() != null) { writer.writeStartElement(Element.METADATA.getLocalName()); writeAttribute(writer, Element.TYPE.getLocalName(), model.getSchemaSourceType()); writer.writeCData(model.getSchemaText()); writer.writeEndElement(); } // model validation errors for (Message ve : model.getMessages(false)) { writer.writeStartElement(Element.VALIDATION_ERROR.getLocalName()); writeAttribute( writer, Element.VALIDATION_SEVERITY_ATTR.getLocalName(), ve.getSeverity().name()); writeAttribute(writer, Element.PATH.getLocalName(), ve.getPath()); writer.writeCharacters(ve.getValue()); writer.writeEndElement(); } writer.writeEndElement(); }