/** * Replaces all data type occurrences found in the element types for all classes with the simple data type. This * simplifies later the XSLT ddJavaAll step. */ public void preResolveDataTypes() { for (MetadataItem metadataClass : classList) { preResolveDataTypeImpl(metadataClass); } for (MetadataItem metadataClass : groupList) { preResolveDataTypeImpl(metadataClass); } }
@Override public void mixedElement(String elementName) throws SAXException { if (isVerbose) { System.out.println("mixedElement: elementName: " + elementName); } final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType(elementName); metadata.addClassElement(currentContentModel, element); }
public String getFqnClass(final MetadataElement element) { final String namespace = splitElementType(element.getType())[0]; final String localname = splitElementType(element.getType())[1]; // search in all enumeration for (final MetadataEnum metadataEnum : metadata.getEnumList()) { if (metadataEnum.getName().equals(localname) && metadataEnum.getNamespace().equals(namespace)) { return metadataEnum.getPackageApi() + "." + getPascalizeCase(metadataEnum.getName()); } } // search in all classes for (final MetadataItem metadataClass : metadata.getClassList()) { if (metadataClass.getName().equals(localname) && metadataClass.getNamespace().equals(namespace)) { return metadataClass.getPackageApi() + "." + getPascalizeCase(metadataClass.getName()); } } return null; }
/** * Adds a new reference to the specific element class. If no element class is found, then a new element class. will * be created. * * @param className * the class name * @param classReference * the new reference to be added. */ public void addClassReference(final String className, final MetadataElement classReference) { classReference.setRef(getNamespaceValue(classReference.getRef())); for (MetadataItem item : classList) { if (item.getName().equals(className) && item.getNamespace().equals(getCurrentNamespace()) && item.getPackageApi().equals(getCurrentPackageApi())) { item.getReferences().add(classReference); return; } } final MetadataItem newItem = new MetadataItem(className); newItem.getReferences().add(classReference); newItem.setNamespace(getCurrentNamespace()); newItem.setSchemaName(getCurrentSchmema()); newItem.setPackageApi(getCurrentPackageApi()); newItem.setPackageImpl(getCurrentPackageImpl()); classList.add(newItem); }
/** * Copies the optional packageInfo files into the packages. * @param path * @param metadata * @throws IOException */ public static void copyPackageInfo(final MetadataParserPath path, final Metadata metadata, final boolean verbose) throws IOException { for (final MetadataDescriptor descriptor : metadata.getMetadataDescriptorList()) { if (descriptor.getPathToPackageInfoApi() != null) { final File sourceFile = new File(descriptor.getPathToPackageInfoApi()); final String destDirectory = path.pathToApi + File.separatorChar + descriptor.getPackageApi().replace('.', '/'); deleteExistingPackageInfo(destDirectory, verbose); copy(sourceFile, destDirectory, verbose); } if (descriptor.getPathToPackageInfoImpl() != null) { final File sourceFile = new File(descriptor.getPathToPackageInfoImpl()); final String destDirectory = path.pathToImpl + File.separatorChar + descriptor.getPackageImpl().replace('.', '/'); deleteExistingPackageInfo(destDirectory, verbose); copy(sourceFile, destDirectory, verbose); } } }
/** * Returns true, if the given string argument represents a enumeration class. * * @param elementName * @return true, if the string represents a enumeration, otherwise false. */ public boolean isEnum(final String elementType) { final String namespace = splitElementType(elementType)[0]; final String localname = splitElementType(elementType)[1]; boolean isEnum = false; for (final MetadataEnum metadataEnum : metadata.getEnumList()) { if (metadataEnum.getName().equals(localname) && metadataEnum.getNamespace().equals(namespace)) { isEnum = true; break; } } return isEnum; }
private boolean isDataType(final String type, final Metadata metadata) { for (MetadataItem item : metadata.getDataTypeList()) { if (item.getMappedTo().equals(type) || item.getName().equals(type)) { return true; } } return false; } }
@Override public void execute() throws MojoExecutionException, MojoFailureException { try { final MetadataParser metadataParser = new MetadataParser(); metadataParser.parse(path, descriptors, javadocs, verbose); } catch (final Throwable t) { throw new MojoFailureException(t.getMessage(), t); } } }
private String getNamespaceValue(final String value) { if (value == null || value.contains(":") || value.equals("text")) { return value; } else { return getCurrentNamespace() + ":" + value; } }
/** * Constructs a new instance by reading the given w3c element. * * @param element * w3c element used for extracting various attributes. */ public MetadataElement(final Element element) { name = MetadataUtil.getAttributeValue(element, "name"); type = MetadataUtil.getAttributeValue(element, "type"); ref = MetadataUtil.getAttributeValue(element, "ref"); minOccurs = MetadataUtil.getAttributeValue(element, "minOccurs"); maxOccurs = MetadataUtil.getAttributeValue(element, "maxOccurs"); fixedValue = MetadataUtil.getAttributeValue(element, "fixed"); defaultValue = MetadataUtil.getAttributeValue(element, "default"); use = MetadataUtil.getAttributeValue(element, "use"); if (type == null) { type = name; // will be later added with the name-space } }
public String getFqnClass(final MetadataElement element) { final String namespace = splitElementType(element.getType())[0]; final String localname = splitElementType(element.getType())[1]; // search in all enumeration for (final MetadataEnum metadataEnum : metadata.getEnumList()) { if (metadataEnum.getName().equals(localname) && metadataEnum.getNamespace().equals(namespace)) { return metadataEnum.getPackageApi() + "." + getPascalizeCase(metadataEnum.getName()); } } // search in all classes for (final MetadataItem metadataClass : metadata.getClassList()) { if (metadataClass.getName().equals(localname) && metadataClass.getNamespace().equals(namespace)) { return metadataClass.getPackageApi() + "." + getPascalizeCase(metadataClass.getName()); } } return null; }
@Override public void mixedElement(String elementName) throws SAXException { if (isVerbose) { System.out.println("mixedElement: elementName: " + elementName); } final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType(elementName); metadata.addClassElement(currentContentModel, element); }
/** * Copies the optional packageInfo files into the packages. * @param path * @param metadata * @throws IOException */ public static void copyPackageInfo(final MetadataParserPath path, final Metadata metadata, final boolean verbose) throws IOException { for (final MetadataDescriptor descriptor : metadata.getMetadataDescriptorList()) { if (descriptor.getPathToPackageInfoApi() != null) { final File sourceFile = new File(descriptor.getPathToPackageInfoApi()); final String destDirectory = path.pathToApi + File.separatorChar + descriptor.getPackageApi().replace('.', '/'); deleteExistingPackageInfo(destDirectory, verbose); copy(sourceFile, destDirectory, verbose); } if (descriptor.getPathToPackageInfoImpl() != null) { final File sourceFile = new File(descriptor.getPathToPackageInfoImpl()); final String destDirectory = path.pathToImpl + File.separatorChar + descriptor.getPackageImpl().replace('.', '/'); deleteExistingPackageInfo(destDirectory, verbose); copy(sourceFile, destDirectory, verbose); } } }
/** * Returns true, if the given string argument represents a enumeration class. * * @param elementName * @return true, if the string represents a enumeration, otherwise false. */ public boolean isEnum(final String elementType) { final String namespace = splitElementType(elementType)[0]; final String localname = splitElementType(elementType)[1]; boolean isEnum = false; for (final MetadataEnum metadataEnum : metadata.getEnumList()) { if (metadataEnum.getName().equals(localname) && metadataEnum.getNamespace().equals(namespace)) { isEnum = true; break; } } return isEnum; }
private boolean isDataType(final String type, final Metadata metadata) { for (MetadataItem item : metadata.getDataTypeList()) { if (item.getMappedTo().equals(type) || item.getName().equals(type)) { return true; } } return false; } }
/** * Replaces all data type occurrences found in the element types for all classes with the simple data type. This * simplifies later the XSLT ddJavaAll step. */ public void preResolveDataTypes() { for (MetadataItem metadataClass : classList) { preResolveDataTypeImpl(metadataClass); } for (MetadataItem metadataClass : groupList) { preResolveDataTypeImpl(metadataClass); } }
private String getNamespaceValue(final String value) { if (value == null || value.contains(":") || value.equals("text")) { return value; } else { return getCurrentNamespace() + ":" + value; } }
/** * Constructs a new instance by reading the given w3c element. * * @param element * w3c element used for extracting various attributes. */ public MetadataElement(final Element element) { name = MetadataUtil.getAttributeValue(element, "name"); type = MetadataUtil.getAttributeValue(element, "type"); ref = MetadataUtil.getAttributeValue(element, "ref"); minOccurs = MetadataUtil.getAttributeValue(element, "minOccurs"); maxOccurs = MetadataUtil.getAttributeValue(element, "maxOccurs"); fixedValue = MetadataUtil.getAttributeValue(element, "fixed"); defaultValue = MetadataUtil.getAttributeValue(element, "default"); use = MetadataUtil.getAttributeValue(element, "use"); if (type == null) { type = name; // will be later added with the name-space } }
@Override public void attributeDecl(String elementName, String attributeName, String attributeType, String[] enumeration, short attributeUse, String defaultValue) throws SAXException { if (isVerbose) { System.out.println("attributeDecl: elementName: " + elementName + " attributeName: " + attributeName + " attributeType: " + attributeType + " enumeration: " + enumeration + " attributeUse: " + attributeUse); } /** * Don't add the system attribute id otherwise we have problems with the mixed content. */ if (!attributeType.equals("ID")) { final MetadataElement element = new MetadataElement(); element.setName(attributeName); element.setIsAttribute(true); element.setType("xsd:string"); metadata.addClassElement(elementName, element); } }
@Override public void startContentModel(String elementName, short contentModelType) throws SAXException { if (isVerbose) { System.out.println("startContentModel: elementName: " + elementName + " contentModelType: " + contentModelType); } currentContentModel = elementName; modelGroupStack = new ArrayList<Map<String, Short>>(); /** * It is a mixed model, that means body text and perhaps child elements are defined for this element. When * endContentModel is called we have to analyze if there really child elements defined. */ if (contentModelType == DTDEventListener.CONTENT_MODEL_MIXED) { final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType("text"); // body text metadata.addClassElement(elementName, element); } }