Example usage for com.liferay.portal.kernel.xml Element addAttribute

List of usage examples for com.liferay.portal.kernel.xml Element addAttribute

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.xml Element addAttribute.

Prototype

public Element addAttribute(String name, String value);

Source Link

Usage

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

@Override
public String getContent(DDMStructure ddmStructure, Fields ddmFields) throws Exception {

    Document document = SAXReaderUtil.createDocument();

    Element rootElement = document.addElement("root");

    String availableLocales = getAvailableLocales(ddmFields);

    rootElement.addAttribute("available-locales", availableLocales);

    Locale defaultLocale = ddmFields.getDefaultLocale();

    rootElement.addAttribute("default-locale", LocaleUtil.toLanguageId(defaultLocale));

    DDMFieldsCounter ddmFieldsCounter = new DDMFieldsCounter();

    for (String fieldName : ddmStructure.getRootFieldNames()) {
        int repetitions = countFieldRepetition(ddmFields, fieldName, null, -1);
        for (int i = 0; i < repetitions; i++) {
            Element dynamicElementElement = rootElement.addElement("dynamic-element");

            dynamicElementElement.addAttribute("name", fieldName);
            dynamicElementElement.addAttribute("index", String.valueOf(i));
            updateContentDynamicElement(dynamicElementElement, ddmStructure, ddmFields, ddmFieldsCounter);
        }/*  w  w  w . j a v  a2  s  . co m*/
    }
    return DDMXMLUtil.formatXML(document.asXML());
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

@Override
public String getDDMXSD(String journalXSD) throws Exception {
    Document document = SAXReaderUtil.read(journalXSD);

    Element rootElement = document.getRootElement();

    Locale defaultLocale = LocaleUtil.getSiteDefault();

    rootElement.addAttribute("available-locales", defaultLocale.toString());
    rootElement.addAttribute("default-locale", defaultLocale.toString());

    List<Element> dynamicElementElements = rootElement.elements("dynamic-element");

    for (Element dynamicElementElement : dynamicElementElements) {
        updateJournalXSDDynamicElement(dynamicElementElement);
    }//from ww w.  j av  a  2  s  .  c o  m

    return DDMXMLUtil.formatXML(document);
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

protected void updateContentDynamicElement(Element dynamicElementElement, DDMStructure ddmStructure,
        Field ddmField, DDMFieldsCounter ddmFieldsCounter) throws Exception {

    String fieldName = ddmField.getName();
    String fieldType = ddmStructure.getFieldType(fieldName);
    String indexType = ddmStructure.getFieldProperty(fieldName, "indexType");
    String type = _ddmTypesToJournalTypes.get(fieldType);

    if (type == null) {
        type = fieldType;//from   ww w .  j  ava  2s. c o  m
    }

    dynamicElementElement.addAttribute("type", type);

    dynamicElementElement.addAttribute("index-type", indexType);

    for (Locale locale : ddmField.getAvailableLocales()) {
        Element dynamicContentElement = dynamicElementElement.addElement("dynamic-content");

        dynamicContentElement.addAttribute("language-id", LocaleUtil.toLanguageId(locale));

        int count = ddmFieldsCounter.get(fieldName);
        Serializable fieldValue = ddmField.getValue(locale, count);
        if ((null == fieldValue || fieldValue.equals("")) && fieldType.equalsIgnoreCase("ddm-date")) {
            fieldValue = System.currentTimeMillis();
        } else if (fieldValue instanceof Date) {
            Date valueDate = (Date) fieldValue;
            fieldValue = valueDate.getTime();
        }
        String valueString = String.valueOf(fieldValue);

        updateDynamicContentValue(dynamicContentElement, fieldType, valueString.trim());
    }

    ddmFieldsCounter.incrementKey(fieldName);
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

protected void updateContentDynamicElement(Element dynamicElementElement, DDMStructure ddmStructure,
        Fields ddmFields, DDMFieldsCounter ddmFieldsCounter) throws Exception {

    String fieldName = dynamicElementElement.attributeValue("name");
    for (String childFieldName : ddmStructure.getChildrenFieldNames(fieldName)) {

        int count = ddmFieldsCounter.get(fieldName);

        int repetitions = countFieldRepetition(ddmFields, childFieldName, fieldName, count);

        for (int i = 0; i < repetitions; i++) {
            Element childDynamicElementElement = dynamicElementElement.addElement("dynamic-element");

            childDynamicElementElement.addAttribute("name", childFieldName);
            childDynamicElementElement.addAttribute("index", String.valueOf(i));

            updateContentDynamicElement(childDynamicElementElement, ddmStructure, ddmFields, ddmFieldsCounter);
        }// ww w .j a va 2s.  c o  m
    }

    updateContentDynamicElement(dynamicElementElement, ddmStructure, ddmFields.get(fieldName),
            ddmFieldsCounter);
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

protected void updateDDMXSDDynamicElement(Element dynamicElementElement, String defaultLocale) {

    // Metadata//from   w w w . j  a v  a2s .  c  o m

    List<Element> metadataElements = dynamicElementElement.elements("meta-data");

    for (Element metadataElement : metadataElements) {
        String locale = metadataElement.attributeValue("locale");

        if (locale.equals(defaultLocale)) {
            getJournalMetadataElement(metadataElement);
        } else {
            dynamicElementElement.remove(metadataElement);
        }
    }

    Element parentElement = dynamicElementElement.getParent();

    String parentType = parentElement.attributeValue("type");

    if (Validator.equals(parentType, "list") || Validator.equals(parentType, "multi-list")) {

        String repeatable = parentElement.attributeValue("repeatable");

        String value = dynamicElementElement.attributeValue("value");

        dynamicElementElement.addAttribute("name", value);
        dynamicElementElement.addAttribute("repeatable", repeatable);
        dynamicElementElement.addAttribute("type", "value");

        removeAttribute(dynamicElementElement, "value");

        for (Element metadataElement : dynamicElementElement.elements("meta-data")) {

            dynamicElementElement.remove(metadataElement);
        }

        return;
    }

    // Index type

    String indexType = GetterUtil.getString(dynamicElementElement.attributeValue("indexType"));

    removeAttribute(dynamicElementElement, "indexType");

    dynamicElementElement.addAttribute("index-type", indexType);

    // Type

    String type = dynamicElementElement.attributeValue("type");

    boolean multiple = GetterUtil.getBoolean(dynamicElementElement.attributeValue("multiple"));

    String newType = _ddmTypesToJournalTypes.get(type);

    if (newType.equals("list") && multiple) {
        newType = "multi-list";
    }

    dynamicElementElement.addAttribute("type", newType);

    // Removable attributes

    String[] removableAttributeNames = new String[] { "dataType", "fieldNamespace", "multiple", "readOnly",
            "required", "showLabel", "width" };

    for (String removableAttributeName : removableAttributeNames) {
        removeAttribute(dynamicElementElement, removableAttributeName);
    }

    List<Element> childrenDynamicElementElements = dynamicElementElement.elements("dynamic-element");

    for (Element childrenDynamicElementElement : childrenDynamicElementElements) {

        updateDDMXSDDynamicElement(childrenDynamicElementElement, defaultLocale);
    }
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

protected void updateJournalXSDDynamicElement(Element element) {
    Locale defaultLocale = LocaleUtil.getSiteDefault();

    String name = element.attributeValue("name");
    String type = element.attributeValue("type");

    Element metadataElement = element.element("meta-data");

    if (metadataElement == null) {
        metadataElement = element.addElement("meta-data");
    }//from   ww  w.  java 2  s .  co m

    if (type.equals("multi-list")) {
        element.addAttribute("multiple", "true");
    } else if (type.equals("selection_break")) {
        Element parentElement = element.getParent();

        parentElement.remove(element);

        return;
    } else {
        Element parentElement = element.getParent();

        String parentType = parentElement.attributeValue("type");

        if ((parentType != null) && parentType.equals("select")) {
            metadataElement.addAttribute("locale", defaultLocale.toString());

            addMetadataEntry(metadataElement, "label", name);

            element.addAttribute("name", "option" + StringUtil.randomId());
            element.addAttribute("type", "option");
            element.addAttribute("value", name);

            return;
        }
    }

    String indexType = StringPool.BLANK;

    Attribute indexTypeAttribute = element.attribute("index-type");

    if (indexTypeAttribute != null) {
        indexType = indexTypeAttribute.getValue();

        element.remove(indexTypeAttribute);
    }

    element.remove(element.attribute("type"));

    String dataType = _ddmDataTypes.get(type);

    if (dataType == null) {
        dataType = "string";
    }

    element.addAttribute("dataType", dataType);
    element.addAttribute("indexType", indexType);

    String required = "false";

    Element requiredElement = fetchMetadataEntry(metadataElement, "name", "required");

    if (requiredElement != null) {
        required = requiredElement.getText();
    }

    element.addAttribute("required", required);

    element.addAttribute("showLabel", "true");

    String newType = _journalTypesToDDMTypes.get(type);

    if (newType == null) {
        newType = type;
    }

    element.addAttribute("type", newType);

    if (newType.startsWith("ddm")) {
        element.addAttribute("fieldNamespace", "ddm");
    }

    metadataElement.addAttribute("locale", defaultLocale.toString());

    List<Element> entryElements = metadataElement.elements();

    if (entryElements.isEmpty()) {
        addMetadataEntry(metadataElement, "label", name);
    } else {
        for (Element entryElement : entryElements) {
            String oldEntryName = entryElement.attributeValue("name");

            String newEntryName = _ddmMetadataAttributes.get(oldEntryName);

            if (newEntryName == null) {
                metadataElement.remove(entryElement);
            } else {
                entryElement.addAttribute("name", newEntryName);
            }
        }
    }

    if (newType.equals("ddm-date") || newType.equals("ddm-decimal") || newType.equals("ddm-integer")
            || newType.equals("ddm-link-to-page") || newType.equals("ddm-number")
            || newType.equals("ddm-text-html") || newType.equals("text") || newType.equals("textarea")) {

        element.addAttribute("width", "25");
    } else if (newType.equals("wcm-image")) {
        element.addAttribute("fieldNamespace", "wcm");
        element.addAttribute("readOnly", "false");
    }

    List<Element> dynamicElementElements = element.elements("dynamic-element");

    for (Element dynamicElementElement : dynamicElementElements) {
        updateJournalXSDDynamicElement(dynamicElementElement);
    }
}

From source file:com.liferay.portlet.journal.util.JournalUtil.java

License:Open Source License

public static String mergeArticleContent(String curContent, String newContent, boolean removeNullElements) {

    try {//from w w  w .  ja v a  2s .  com
        Document curDocument = SAXReaderUtil.read(curContent);
        Document newDocument = SAXReaderUtil.read(newContent);

        Element curRootElement = curDocument.getRootElement();
        Element newRootElement = newDocument.getRootElement();

        curRootElement.addAttribute("default-locale", newRootElement.attributeValue("default-locale"));
        curRootElement.addAttribute("available-locales", newRootElement.attributeValue("available-locales"));

        _mergeArticleContentUpdate(curDocument, newRootElement,
                LocaleUtil.toLanguageId(LocaleUtil.getDefault()));

        if (removeNullElements) {
            _mergeArticleContentDelete(curRootElement, newDocument);
        }

        curContent = DDMXMLUtil.formatXML(curDocument);
    } catch (Exception e) {
        _log.error(e, e);
    }

    return curContent;
}

From source file:com.liferay.portlet.journal.util.JournalUtil.java

License:Open Source License

public static String removeArticleLocale(String content, String languageId) {

    try {//  w  w w  .ja v  a  2  s.  c  o m
        Document document = SAXReaderUtil.read(content);

        Element rootElement = document.getRootElement();

        String availableLocales = rootElement.attributeValue("available-locales");

        if (availableLocales == null) {
            return content;
        }

        availableLocales = StringUtil.remove(availableLocales, languageId);

        if (availableLocales.endsWith(",")) {
            availableLocales = availableLocales.substring(0, availableLocales.length() - 1);
        }

        rootElement.addAttribute("available-locales", availableLocales);

        removeArticleLocale(rootElement, languageId);

        content = DDMXMLUtil.formatXML(document);
    } catch (Exception e) {
        _log.error(e, e);
    }

    return content;
}

From source file:com.liferay.portlet.journal.util.JournalUtil.java

License:Open Source License

private static void _mergeArticleContentUpdate(Element curElement, Element newElement, String defaultLocale) {

    Attribute curTypeAttribute = curElement.attribute("type");
    Attribute newTypeAttribute = newElement.attribute("type");

    curTypeAttribute.setValue(newTypeAttribute.getValue());

    Attribute curIndexTypeAttribute = curElement.attribute("index-type");
    Attribute newIndexTypeAttribute = newElement.attribute("index-type");

    if (newIndexTypeAttribute != null) {
        if (curIndexTypeAttribute == null) {
            curElement.addAttribute("index-type", newIndexTypeAttribute.getValue());
        } else {/*from w  w w .j av a 2 s  .c om*/
            curIndexTypeAttribute.setValue(newIndexTypeAttribute.getValue());
        }
    }

    Element newContentElement = newElement.elements("dynamic-content").get(0);

    String newLanguageId = newContentElement.attributeValue("language-id");
    String newValue = newContentElement.getText();

    String indexType = newElement.attributeValue("index-type");

    if (Validator.isNotNull(indexType)) {
        curElement.addAttribute("index-type", indexType);
    }

    List<Element> curContentElements = curElement.elements("dynamic-content");

    if (Validator.isNull(newLanguageId)) {
        for (Element curContentElement : curContentElements) {
            curContentElement.detach();
        }

        Element curContentElement = SAXReaderUtil.createElement("dynamic-content");

        if (newContentElement.element("option") != null) {
            _addElementOptions(curContentElement, newContentElement);
        } else {
            curContentElement.addCDATA(newValue);
        }

        curElement.add(curContentElement);
    } else {
        boolean alreadyExists = false;

        for (Element curContentElement : curContentElements) {
            String curLanguageId = curContentElement.attributeValue("language-id");

            if (newLanguageId.equals(curLanguageId)) {
                alreadyExists = true;

                curContentElement.clearContent();

                if (newContentElement.element("option") != null) {
                    _addElementOptions(curContentElement, newContentElement);
                } else {
                    curContentElement.addCDATA(newValue);
                }

                break;
            }
        }

        if (!alreadyExists) {
            Element curContentElement = curContentElements.get(0);

            String curLanguageId = curContentElement.attributeValue("language-id");

            if (Validator.isNull(curLanguageId)) {
                if (newLanguageId.equals(defaultLocale)) {
                    curContentElement.clearContent();

                    if (newContentElement.element("option") != null) {
                        _addElementOptions(curContentElement, newContentElement);
                    } else {
                        curContentElement.addCDATA(newValue);
                    }
                } else {
                    curElement.add(newContentElement.createCopy());
                }

                curContentElement.addAttribute("language-id", defaultLocale);
            } else {
                curElement.add(newContentElement.createCopy());
            }
        }
    }
}

From source file:com.liferay.portlet.messageboards.lar.MBPortletDataHandlerImpl.java

License:Open Source License

@Override
protected String doExportData(PortletDataContext portletDataContext, String portletId,
        PortletPreferences portletPreferences) throws Exception {

    portletDataContext.addPermissions("com.liferay.portlet.messageboards",
            portletDataContext.getScopeGroupId());

    Document document = SAXReaderUtil.createDocument();

    Element rootElement = document.addElement("message-boards-data");

    rootElement.addAttribute("group-id", String.valueOf(portletDataContext.getScopeGroupId()));

    Element categoriesElement = rootElement.addElement("categories");
    Element messagesElement = rootElement.addElement("messages");
    Element threadFlagsElement = rootElement.addElement("thread-flags");
    Element userBansElement = rootElement.addElement("user-bans");

    List<MBCategory> categories = MBCategoryUtil.findByGroupId(portletDataContext.getScopeGroupId());

    for (MBCategory category : categories) {
        exportCategory(portletDataContext, categoriesElement, messagesElement, threadFlagsElement, category);
    }/*from   w w  w  . j  a  va  2 s  . c  o m*/

    List<MBMessage> messages = MBMessageUtil.findByG_C(portletDataContext.getScopeGroupId(),
            MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID);

    for (MBMessage message : messages) {
        exportMessage(portletDataContext, categoriesElement, messagesElement, threadFlagsElement, message);
    }

    if (portletDataContext.getBooleanParameter(_NAMESPACE, "user-bans")) {
        List<MBBan> bans = MBBanUtil.findByGroupId(portletDataContext.getScopeGroupId());

        for (MBBan ban : bans) {
            exportBan(portletDataContext, userBansElement, ban);
        }
    }

    return document.formattedString();
}