List of usage examples for com.liferay.portal.kernel.xml Element addAttribute
public Element addAttribute(String name, String value);
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(); }