Example usage for org.w3c.dom Element removeAttribute

List of usage examples for org.w3c.dom Element removeAttribute

Introduction

In this page you can find the example usage for org.w3c.dom Element removeAttribute.

Prototype

public void removeAttribute(String name) throws DOMException;

Source Link

Document

Removes an attribute by name.

Usage

From source file:dk.dbc.rawrepo.oai.OAIWorker.java

private void fixXmlNamespacePrefix(Element element, String metadataPrefix, String namespaceURI)
        throws DOMException {
    String prefix = null;//  w w w.j a  va 2  s .  c o m
    if (namespaceURI.equals(element.getNamespaceURI())) {
        prefix = element.getPrefix();
        if (prefix == null) {
            prefix = "";
        }
        element.setPrefix(metadataPrefix);
    }
    for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling()) {
        if (child.getNodeType() == Node.ELEMENT_NODE) {
            fixXmlNamespacePrefix((Element) child, metadataPrefix, namespaceURI);
        }
    }
    if (prefix != null) {
        element.removeAttribute(prefix.isEmpty() ? "xmlns" : ("xmlns:" + prefix));
    }
}

From source file:org.alfresco.web.config.WebConfigRuntime.java

/**
 * @param configElem// w  ww . jav  a 2s .  co m
 * @param attrName
 * @param properties
 * @return
 */
private boolean manageAttribute(Element configElem, String attrName, HashMap<String, String> properties) {
    boolean status = false;
    String newValue = properties.get(attrName);
    if (newValue != null && !newValue.equals("")) {
        if (!configElem.hasAttribute(attrName) || !configElem.getAttribute(attrName).equals(newValue)) {
            status = true;
        }
        configElem.setAttribute(attrName, newValue);
    } else {
        if (configElem.hasAttribute(attrName)) {
            configElem.removeAttribute(attrName);
            status = true;
        }
    }
    return status;
}

From source file:com.enonic.vertical.adminweb.ContentObjectHandlerServlet.java

public void handlerForm(HttpServletRequest request, HttpServletResponse response, HttpSession session,
        AdminService admin, ExtendedMap formItems) throws VerticalAdminException {

    User user = securityService.getLoggedInAdminConsoleUser();
    boolean createContentObject = false;
    String xmlData = null;//from  w  w w .j  a  v  a2 s  .co m
    Document doc;
    String queryParam = "";
    String script = "";

    int menuKey = formItems.getInt("menukey");

    if (request.getParameter("key") == null || request.getParameter("key").equals("")) {
        // Blank form, make dummy document
        doc = XMLTool.createDocument("contentobjects");
        createContentObject = true;
    } else {
        int cobKey = Integer.parseInt(request.getParameter("key"));

        xmlData = admin.getContentObject(cobKey);

        doc = XMLTool.domparse(xmlData);

        NodeList coNodes = doc.getElementsByTagName("contentobject");
        Element contentobject = (Element) coNodes.item(0);
        String contentKeyStr = contentobject.getAttribute("contentkey");
        if (contentKeyStr != null && contentKeyStr.length() > 0) {
            int contentKey = Integer.parseInt(contentKeyStr);

            String contentXML = admin.getContent(user, contentKey, 0, 0, 0);
            Document contentDoc = XMLTool.domparse(contentXML);
            NodeList contentNodes = contentDoc.getElementsByTagName("content");
            Element content = (Element) contentNodes.item(0);
            content = (Element) doc.importNode(content, true);
            contentobject.appendChild(content);
        }

        String menuItemsXML;
        menuItemsXML = admin.getMenuItemsByContentObject(user, cobKey);
        Document menuItemsDoc = XMLTool.domparse(menuItemsXML);
        contentobject.appendChild(doc.importNode(menuItemsDoc.getDocumentElement(), true));

        // Henter ut pagetemplates/frameworks som bruker dette contentobject
        String pageTemplatesXML = admin.getPageTemplatesByContentObject(cobKey);
        Document pageTemplatesDoc = XMLTool.domparse(pageTemplatesXML);
        contentobject.appendChild(doc.importNode(pageTemplatesDoc.getDocumentElement(), true));

        Element objectstylesheetElem = XMLTool.getElement(contentobject, "objectstylesheet");
        ResourceKey objectStyleSheetKey = new ResourceKey(objectstylesheetElem.getAttribute("key"));

        ResourceFile res = resourceService.getResourceFile(objectStyleSheetKey);
        objectstylesheetElem.setAttribute("exist", res == null ? "false" : "true");

        if (res != null) {
            try {
                Document styleSheetDoc = res.getDataAsXml().getAsDOMDocument();
                objectstylesheetElem.setAttribute("valid", "true");

                Element styleSheetRoot = styleSheetDoc.getDocumentElement();
                String attr = styleSheetRoot.getAttribute("xmlns:xsl");
                styleSheetRoot.removeAttribute("xmlns:xsl");
                styleSheetRoot.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsl", attr);
                Element elem = XMLTool.createElement(doc, contentobject, "objectstylesheet_xsl");
                elem.appendChild(doc.importNode(styleSheetRoot, true));
            } catch (XMLException e) {
                objectstylesheetElem.setAttribute("valid", "false");
            }
        }

        Element borderstylesheetElem = XMLTool.getElement(contentobject, "borderstylesheet");
        if (borderstylesheetElem != null) {
            ResourceKey borderStyleSheetKey = ResourceKey.parse(borderstylesheetElem.getAttribute("key"));
            if (borderStyleSheetKey != null) {
                res = resourceService.getResourceFile(borderStyleSheetKey);
                borderstylesheetElem.setAttribute("exist", res == null ? "false" : "true");
                if (res != null) {
                    try {
                        Document borderStyleSheetDoc = res.getDataAsXml().getAsDOMDocument();
                        borderstylesheetElem.setAttribute("valid", "true");

                        Element styleSheetRoot = borderStyleSheetDoc.getDocumentElement();
                        String attr = styleSheetRoot.getAttribute("xmlns:xsl");
                        styleSheetRoot.removeAttribute("xmlns:xsl");
                        styleSheetRoot.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsl", attr);
                        Element elem = XMLTool.createElement(doc, contentobject, "borderstylesheet_xsl");
                        elem.appendChild(doc.importNode(styleSheetRoot, true));
                    } catch (XMLException e) {
                        borderstylesheetElem.setAttribute("valid", "false");
                    }
                }
            }
        }
    }

    if (xmlData != null) {
        Map subelems = XMLTool.filterElements(doc.getDocumentElement().getChildNodes());
        if (subelems.get("contentobject") != null) {
            Element tempElem = (Element) subelems.get("contentobject");
            Map contentobjectmap = XMLTool.filterElements(tempElem.getChildNodes());

            Element contentobjectdata = (Element) contentobjectmap.get("contentobjectdata");
            Map queryparammap = XMLTool.filterElements(contentobjectdata.getChildNodes());
            tempElem = (Element) queryparammap.get("datasources");

            Document queryParamDoc = XMLTool.createDocument();
            tempElem = (Element) queryParamDoc.importNode(tempElem, true);
            queryParamDoc.appendChild(tempElem);

            StringWriter sw = new StringWriter();
            queryParamDoc.normalize();
            XMLTool.printDocument(sw, queryParamDoc, 0);
            queryParam = sw.toString();

            // Find the script data
            Element scriptElem = (Element) queryparammap.get("script");
            if (scriptElem != null) {
                script = XMLTool.getElementText(scriptElem);
            }

            Element[] paramElems = XMLTool.getElements(contentobjectdata, "stylesheetparam");
            for (Element paramElem1 : paramElems) {
                String type = paramElem1.getAttribute("type");
                if ("page".equals(type)) {
                    String menuItemKeyStr = XMLTool.getElementText(paramElem1);
                    int menuItemKey = Integer.parseInt(menuItemKeyStr);
                    String name = admin.getMenuItemName(menuItemKey);
                    paramElem1.setAttribute("valuename", name);
                } else if ("category".equals(type)) {
                    String categoryKeyStr = XMLTool.getElementText(paramElem1);
                    int categoryKey = Integer.parseInt(categoryKeyStr);
                    String name = admin.getMenuItemName(categoryKey);
                    paramElem1.setAttribute("valuename", name);
                }
            }

            paramElems = XMLTool.getElements(contentobjectdata, "borderparam");
            for (Element paramElem : paramElems) {
                String type = paramElem.getAttribute("type");
                if ("page".equals(type)) {
                    String menuItemKeyStr = XMLTool.getElementText(paramElem);
                    int menuItemKey = Integer.parseInt(menuItemKeyStr);
                    String name = admin.getMenuItemName(menuItemKey);
                    paramElem.setAttribute("valuename", name);
                } else if ("category".equals(type)) {
                    String categoryKeyStr = XMLTool.getElementText(paramElem);
                    int categoryKey = Integer.parseInt(categoryKeyStr);
                    String name = admin.getMenuItemName(categoryKey);
                    paramElem.setAttribute("valuename", name);
                }
            }
        }
    }

    ExtendedMap parameters = new ExtendedMap();

    // Get default css if present
    ResourceKey defaultCSS = admin.getDefaultCSSByMenu(menuKey);
    if (defaultCSS != null) {
        parameters.put("defaultcsskey", defaultCSS.toString());
        parameters.put("defaultcsskeyExist",
                resourceService.getResourceFile(defaultCSS) == null ? "false" : "true");
    }

    VerticalAdminLogger.debug(this.getClass(), 0, doc);

    addCommonParameters(admin, user, request, parameters, -1, menuKey);

    if (createContentObject) {
        parameters.put("create", "1");
        parameters.put("queryparam", "<?xml version=\"1.0\" ?>\n<datasources/>");
    } else {
        parameters.put("create", "0");
        queryParam = StringUtil.formatXML(queryParam, 2);
        parameters.put("queryparam", queryParam);
    }

    parameters.put("menukey", String.valueOf(menuKey));

    parameters.put("page", String.valueOf(request.getParameter("page")));

    String subop = formItems.getString("subop", "");
    if ("popup".equals(subop)) {
        URL redirectURL = new URL("adminpage");
        redirectURL.setParameter("op", "callback");
        redirectURL.setParameter("callback", formItems.getString("callback"));
        redirectURL.setParameter("page", 991);
        redirectURL.setParameter("key", Integer.parseInt(request.getParameter("key")));
        redirectURL.setParameter("fieldname", formItems.getString("fieldname"));
        redirectURL.setParameter("fieldrow", formItems.getString("fieldrow"));
        parameters.put("referer", redirectURL.toString());
        parameters.put("subop", "popup");
    } else {
        parameters.put("referer", request.getHeader("referer"));
    }

    parameters.put("subop", subop);
    parameters.put("fieldname", formItems.getString("fieldname", null));
    parameters.put("fieldrow", formItems.getString("fieldrow", null));
    parameters.put("script", script);

    addAccessLevelParameters(user, parameters);

    UserEntity defaultRunAsUser = siteDao.findByKey(menuKey).resolveDefaultRunAsUser();
    String defaultRunAsUserName = "NA";
    if (defaultRunAsUser != null) {
        defaultRunAsUserName = defaultRunAsUser.getDisplayName();
    }
    parameters.put("defaultRunAsUser", defaultRunAsUserName);

    transformXML(request, response, doc, "contentobject_form.xsl", parameters);
}

From source file:jef.tools.XMLUtils.java

/**
 * XSD Schema//from   ww w . ja  va 2 s  .  c  o m
 * 
 * @param node
 *            DOM
 * @param schemaURL
 *            XSDURL
 */
public static void setXsdSchema(Node node, String schemaURL) {
    Document doc;
    if (node.getNodeType() != Node.DOCUMENT_NODE) {
        doc = node.getOwnerDocument();
    } else {
        doc = (Document) node;
    }
    Element root = doc.getDocumentElement();
    if (schemaURL == null) {
        root.removeAttribute("xmlns:xsi");
        root.removeAttribute("xsi:noNamespaceSchemaLocation");
    } else {
        root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
        root.setAttribute("xsi:noNamespaceSchemaLocation", schemaURL);
    }
}

From source file:com.enonic.cms.web.portal.services.ContentServicesBase.java

protected String buildXML(UserServicesService userServices, User user, ExtendedMap formItems, SiteKey siteKey,
        int contentTypeKey, String contentTitle, boolean skipEmptyElements) {

    Document doc;/* w ww.  j a  va2  s .  c o  m*/
    Element contentElem;
    Element contentdataElem;
    int contentKey = formItems.getInt("key", -1);

    if (contentKey == -1) {
        contentKey = formItems.getInt("contentkey", -1);
    }

    if (contentKey == -1) {
        doc = XMLTool.createDocument("content");
        contentElem = doc.getDocumentElement();

        int categoryKey = formItems.getInt("categorykey");
        CategoryEntity categoryEntity = categoryDao.findByKey(new CategoryKey(categoryKey));

        if (categoryEntity.getAutoMakeAvailableAsBoolean()) {
            contentElem.setAttribute("publishfrom", CalendarUtil.formatCurrentDate());
            contentElem.setAttribute("status", "2");
        } else {
            // new content is created as draft
            contentElem.setAttribute("status", "0");
            contentElem.removeAttribute("publishfrom");
            contentElem.removeAttribute("publishto");
        }

        contentElem.setAttribute("contenttypekey", String.valueOf(contentTypeKey));
        contentElem.setAttribute("priority", "0");

        // category:
        Element category = XMLTool.createElement(doc, contentElem, "categoryname");
        category.setAttribute("key", String.valueOf(categoryKey));

        // content title
        XMLTool.createElement(doc, contentElem, "title", contentTitle);

        // content data
        contentdataElem = XMLTool.createElement(doc, contentElem, "contentdata");
    } else {
        doc = userServices.getContent(user, contentKey, false, 0, 0, 0).getAsDOMDocument();
        Element rootElem = doc.getDocumentElement();
        contentElem = XMLTool.getFirstElement(rootElem);
        rootElem.removeChild(contentElem);
        doc.replaceChild(contentElem, rootElem);

        // modifier/@key
        Element modifierElem = XMLTool.getElement(contentElem, "modifier");
        XMLTool.removeChildFromParent(contentElem, modifierElem);
        modifierElem = XMLTool.createElement(contentElem, "modifier");
        modifierElem.setAttribute("key", String.valueOf(user.getKey()));

        // version/@key
        int versionKey = userServices.getCurrentVersionKey(contentKey);
        contentElem.setAttribute("versionkey", String.valueOf(versionKey));

        // content title
        Element title = XMLTool.getElement(contentElem, "title");
        XMLTool.removeChildNodes(title);
        XMLTool.createTextNode(doc, title, contentTitle);

        // content data
        contentdataElem = XMLTool.getElement(contentElem, "contentdata");
        XMLTool.removeChildNodes(contentdataElem, true);
    }

    buildContentTypeXML(userServices, contentdataElem, formItems, skipEmptyElements);

    return XMLTool.documentToString(doc);
}

From source file:com.enonic.vertical.userservices.ContentHandlerBaseController.java

protected String buildXML(UserServicesService userServices, User user, ExtendedMap formItems, SiteKey siteKey,
        int contentTypeKey, String contentTitle, boolean skipEmptyElements)
        throws VerticalUserServicesException, RemoteException {

    Document doc;/*  w  w  w.  j a va  2 s.  co  m*/
    Element contentElem;
    Element contentdataElem;
    int contentKey = formItems.getInt("key", -1);

    if (contentKey == -1) {
        contentKey = formItems.getInt("contentkey", -1);
    }

    if (contentKey == -1) {
        doc = XMLTool.createDocument("content");
        contentElem = doc.getDocumentElement();

        int categoryKey = formItems.getInt("categorykey");
        CategoryEntity categoryEntity = categoryDao.findByKey(new CategoryKey(categoryKey));

        if (categoryEntity.getAutoMakeAvailableAsBoolean()) {
            contentElem.setAttribute("publishfrom", CalendarUtil.formatCurrentDate());
            contentElem.setAttribute("status", "2");
        } else {
            // new content is created as draft
            contentElem.setAttribute("status", "0");
            contentElem.removeAttribute("publishfrom");
            contentElem.removeAttribute("publishto");
        }

        contentElem.setAttribute("contenttypekey", String.valueOf(contentTypeKey));
        contentElem.setAttribute("priority", "0");

        // category:
        Element category = XMLTool.createElement(doc, contentElem, "categoryname");
        category.setAttribute("key", String.valueOf(categoryKey));

        // content title
        XMLTool.createElement(doc, contentElem, "title", contentTitle);

        // content data
        contentdataElem = XMLTool.createElement(doc, contentElem, "contentdata");
    } else {
        doc = XMLTool.domparse(userServices.getContent(user, contentKey, false, 0, 0, 0));
        Element rootElem = doc.getDocumentElement();
        contentElem = XMLTool.getFirstElement(rootElem);
        rootElem.removeChild(contentElem);
        doc.replaceChild(contentElem, rootElem);

        // modifier/@key
        Element modifierElem = XMLTool.getElement(contentElem, "modifier");
        XMLTool.removeChildFromParent(contentElem, modifierElem);
        modifierElem = XMLTool.createElement(contentElem, "modifier");
        modifierElem.setAttribute("key", String.valueOf(user.getKey()));

        // version/@key
        int versionKey = userServices.getCurrentVersionKey(contentKey);
        contentElem.setAttribute("versionkey", String.valueOf(versionKey));

        // content title
        Element title = XMLTool.getElement(contentElem, "title");
        XMLTool.removeChildNodes(title);
        XMLTool.createTextNode(doc, title, contentTitle);

        // content data
        contentdataElem = XMLTool.getElement(contentElem, "contentdata");
        XMLTool.removeChildNodes(contentdataElem, true);
    }

    buildContentTypeXML(userServices, contentdataElem, formItems, skipEmptyElements);

    return XMLTool.documentToString(doc);
}

From source file:edu.uams.clara.webapp.xml.processor.impl.DefaultXmlProcessorImpl.java

@Override
public String deleteAttributeByPathAndAttributeName(String path, String attributeName, final String xmlData)
        throws SAXException, IOException, XPathExpressionException {
    Assert.hasText(path);/*from  w  w  w. ja v a 2 s .  co m*/
    Assert.hasText(xmlData);

    Document finalDom = parse(xmlData);

    XPath xPath = getXPathInstance();

    NodeList nodeList = (NodeList) (xPath.evaluate(path, finalDom, XPathConstants.NODESET));

    int l = nodeList.getLength();

    Element currentElement = null;
    for (int i = 0; i < l; i++) {
        if (nodeList.item(i) == null)
            continue;
        currentElement = (Element) nodeList.item(i);
        currentElement.removeAttribute(attributeName);
    }

    return DomUtils.elementToString(finalDom.getFirstChild());
}

From source file:com.icesoft.faces.context.effects.CurrentStyle.java

/**
 * Apply css changes to rendered component
 *
 * @param facesContext/*from  www  .  ja  v  a2  s .  c o m*/
 * @param uiComponent
 * @param targetElement
 * @param style
 */
public static void apply(FacesContext facesContext, UIComponent uiComponent, Element targetElement,
        String style, ResponseWriter writer) {
    if (targetElement == null && writer == null) {
        DOMContext domContext = DOMContext.getDOMContext(facesContext, uiComponent);
        Object node = domContext.getRootNode();
        if (node == null || !(node instanceof Element)) {
            return;
        }
        Element root = (Element) node;
        targetElement = root;
    }
    String jspStyle = (String) uiComponent.getAttributes().get("style");
    if (log.isTraceEnabled()) {
        if (jspStyle != null) {
            log.trace("Existing style [" + jspStyle + "]");
        }
    }

    if (style != null) {
        if (jspStyle == null) {
            jspStyle = "";
        }
        jspStyle += style;
    }

    Boolean visibility = (Boolean) uiComponent.getAttributes().get("visible");
    // default to true if visibility is null
    boolean visible = true;
    if (visibility != null) {
        visible = visibility.booleanValue();
    }
    CurrentStyle currentStyle = (CurrentStyle) uiComponent.getAttributes().get("currentStyle");
    if (currentStyle != null) {
        String appendedStyle = currentStyle.cssString;

        currentStyle.lastCssString = currentStyle.cssString;
        if (appendedStyle != null) {
            if (jspStyle == null) {
                jspStyle = appendedStyle;
            } else {
                jspStyle += ";" + appendedStyle;
            }
        }

    }

    if (visible) {
        if (jspStyle != null) {
            int startI = jspStyle.indexOf(DISPLAY_OFF);
            if (startI != -1) {
                String start = "";
                if (startI > 0) {
                    start = jspStyle.substring(0, startI);
                }
                int endI = startI + DISPLAY_OFF.length();
                String end = "";
                if (endI < jspStyle.length()) {
                    end = jspStyle.substring(endI);
                }
                jspStyle = start + end;
            }
        }
    } else {

        if (jspStyle == null) {
            jspStyle = DISPLAY_OFF;
        } else {
            jspStyle += DISPLAY_OFF;
        }
    }
    if (log.isTraceEnabled()) {
        if (jspStyle != null) {
            log.trace("JSP Style [" + jspStyle + "]");
        }
    }
    if (targetElement != null) {
        if (jspStyle != null && jspStyle.length() > 0)
            targetElement.setAttribute(HTML.STYLE_ATTR, jspStyle);
        else
            targetElement.removeAttribute(HTML.STYLE_ATTR);
    }
    if (writer != null && jspStyle != null) {
        try {
            writer.writeAttribute(HTML.STYLE_ATTR, jspStyle, null);
        } catch (IOException exception) {
            if (log.isErrorEnabled()) {
                log.error("Exception setting style attribute", exception);
            }
        }
    }
}

From source file:com.google.appengine.tools.mapreduce.ConfigurationTemplatePreprocessor.java

/**
 * Substitutes in the values in params for templated values. After this method
 * is called, any subsequent calls to this method for the same object result in
 * an {@link IllegalStateException}. To preprocess the template again,
 * create another {@code ConfigurationTemplatePreprocessor} from the source XML.
 *
 * @param params a map from key to value of all the template parameters
 * @return the document as an XML string with the template parameters filled
 * in//from   w  w w .  jav a 2s. c  om
 * @throws MissingTemplateParameterException if any required parameter is
 * omitted
 * @throws IllegalStateException if this method has previously been called
 * on this object
 */
public String preprocess(Map<String, String> params) {
    HashMap<String, String> paramsCopy = new HashMap<String, String>(params);
    if (preprocessCalled) {
        throw new IllegalStateException("Preprocess can't be called twice for the same object");
    }
    preprocessCalled = true;

    for (Entry<String, Element> entry : nameToValueElement.entrySet()) {
        Element valueElem = entry.getValue();
        boolean isTemplateValue = valueElem.hasAttribute("template");
        if (paramsCopy.containsKey(entry.getKey()) && isTemplateValue) {
            // Modifies the map in place, but that's fine for our use.
            Text valueData = (Text) valueElem.getFirstChild();
            String newValue = paramsCopy.get(entry.getKey());
            if (valueData != null) {
                valueData.setData(newValue);
            } else {
                valueElem.appendChild(doc.createTextNode(newValue));
            }
            // Remove parameter, so we can tell if they gave us extras.
            paramsCopy.remove(entry.getKey());
        } else if (isTemplateValue) {
            String templateAttribute = valueElem.getAttribute("template");
            if ("required".equals(templateAttribute)) {
                throw new MissingTemplateParameterException(
                        "Couldn't find expected parameter " + entry.getKey());
            } else if ("optional".equals(templateAttribute)) {
                // The default value is the one already in the value text, so
                // leave it be. The one exception is if they self-closed the value tag,
                // so go ahead and add a Text child so Configuration doesn't barf.
                if (valueElem.getFirstChild() == null) {
                    valueElem.appendChild(doc.createTextNode(""));
                }
            } else {
                throw new IllegalArgumentException("Value " + templateAttribute + " is not a valid template "
                        + "attribute. Valid possibilities are: \"required\" or \"optional\".");
            }
            // Remove parameter, so we can tell if they gave us extras.
            paramsCopy.remove(entry.getKey());
        } else {
            throw new IllegalArgumentException(
                    "Configuration property " + entry.getKey() + " is not a template property");
        }

        // removeAttribute has no effect if the attributes don't exist
        valueElem.removeAttribute("template");
    }

    if (paramsCopy.size() > 0) {
        // TODO(user): Is there a good way to bubble up all bad parameters?
        throw new UnexpectedTemplateParameterException("Parameter " + paramsCopy.keySet().iterator().next()
                + " wasn't found in the configuration template.");
    }

    return getDocAsXmlString();
}

From source file:de.interactive_instruments.ShapeChange.Target.ReplicationSchema.ReplicationXmlSchema.java

/** Process a single property. */
protected Element addProperty(PropertyInfo pi) {

    ClassInfo inClass = pi.inClass();/*from www .  j  ava  2  s  .c  o  m*/

    Element e1 = document.createElementNS(Options.W3C_XML_SCHEMA, "element");
    addGlobalIdentifierAnnotation(e1, pi);

    String piName = pi.name();
    if (pi.categoryOfValue() == Options.FEATURE) {
        piName = pi.name() + suffixForPropWithFeatureValueType;
    } else if (pi.categoryOfValue() == Options.OBJECT) {
        piName = pi.name() + suffixForPropWithObjectValueType;
    }
    addAttribute(e1, "name", piName);

    mapPropertyType(pi, e1);
    addMinMaxOccurs(e1, pi);

    // add maxLength restriction if applicable
    ProcessMapEntry pme = mapEntryByType.get(pi.typeInfo().name);
    if (pme != null && pme.hasParam() && pme.getParam().trim().equals(MAP_ENTRY_PARAM_MAXLENGTHFROMSIZE)) {

        int size = -1;

        if (pi.taggedValue(TV_SIZE) != null && pi.taggedValue(TV_SIZE).trim().length() > 0) {
            try {
                size = Integer.parseInt(pi.taggedValue(TV_SIZE).trim());
            } catch (NumberFormatException e) {
                result.addWarning(this, 14, TV_SIZE, pi.name(), inClass.name(), e.getMessage());
            }
        }

        if (size <= 0 && this.defaultSize != null) {
            size = this.defaultSize;
        }

        if (size > 0) {

            Element simpleType = document.createElementNS(Options.W3C_XML_SCHEMA, "simpleType");
            e1.appendChild(simpleType);

            Element restriction = document.createElementNS(Options.W3C_XML_SCHEMA, "restriction");
            addAttribute(restriction, "base", "string");
            e1.removeAttribute("type");
            simpleType.appendChild(restriction);

            Element concreteRestriction = document.createElementNS(Options.W3C_XML_SCHEMA, "maxLength");
            addAttribute(concreteRestriction, "value", "" + size);
            restriction.appendChild(concreteRestriction);
        }
    }

    return e1;
}