@Override public String getXML(Document document, Fields fields) { Element rootElement = null; try { if (document != null) { rootElement = document.getRootElement(); } else { document = SAXReaderUtil.createDocument(); rootElement = document.addElement("root"); } Iterator<Field> itr = fields.iterator(true); while (itr.hasNext()) { Field field = itr.next(); List<Node> nodes = getElementsByName(document, field.getName()); for (Node node : nodes) { document.remove(node); } appendField(rootElement, field); } return document.formattedString(); } catch (IOException ioe) { throw new SystemException(ioe); } }
protected Field getFieldsDisplayField(long ddmStructureId, String value) { Field fieldsDisplayField = new Field(); fieldsDisplayField.setDDMStructureId(ddmStructureId); fieldsDisplayField.setName(DDMImpl.FIELDS_DISPLAY_NAME); fieldsDisplayField.setValue(value); return fieldsDisplayField; }
protected Field getTextAreaField(long ddmStructureId) { Field field = new Field(); field.setDDMStructureId(ddmStructureId); field.setName("text_area"); field.addValue(_enLocale, "<p>Hello World!</p>"); return field; }
protected Field getMultiListField(long ddmStructureId) { Field field = new Field(); field.setDDMStructureId(ddmStructureId); field.setName("multi-list"); field.addValue(_enLocale, "[\"a\",\"b\"]"); return field; }
protected Field getTextField(long ddmStructureId) { Field field = new Field(); field.setDDMStructureId(ddmStructureId); field.setName("text"); field.addValue(_enLocale, "one"); field.addValue(_ptLocale, "um"); return field; }
protected Field getBooleanField(long ddmStructureId) { Field field = new Field(); field.setDDMStructureId(ddmStructureId); field.setName("boolean"); List<Serializable> enValues = new ArrayList<>(); enValues.add(true); enValues.add(false); field.addValues(_enLocale, enValues); return field; }
protected Field getLinkToLayoutField(long ddmStructureId, Map<String, Layout> layoutsMap) { Field field = new Field(); field.setDDMStructureId(ddmStructureId); field.setName("link_to_layout"); List<Serializable> enValues = new ArrayList<>(); for (Layout layout : layoutsMap.values()) { enValues.add(getLinkToLayoutFieldValue(layout, false)); enValues.add(getLinkToLayoutFieldValue(layout, true)); } field.addValues(_enLocale, enValues); return field; }
protected Field getDocumentLibraryField(FileEntry fileEntry, long ddmStructureId) { Field docLibraryField = new Field(); docLibraryField.setDDMStructureId(ddmStructureId); docLibraryField.setName("document_library"); JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("groupId", fileEntry.getGroupId()); jsonObject.put("title", fileEntry.getTitle()); jsonObject.put("uuid", fileEntry.getUuid()); jsonObject.put("version", fileEntry.getVersion()); docLibraryField.addValue(_enLocale, jsonObject.toString()); return docLibraryField; }
protected HashMap<String, Fields> getFieldsMap( ServiceContext serviceContext, long fileEntryTypeId) throws PortalException, SystemException { HashMap<String, Fields> fieldsMap = new HashMap<String, Fields>(); if (fileEntryTypeId <= 0) { return fieldsMap; } DLFileEntryType fileEntryType = DLFileEntryTypeLocalServiceUtil.getFileEntryType(fileEntryTypeId); List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures(); for (DDMStructure ddmStructure : ddmStructures) { String namespace = String.valueOf(ddmStructure.getStructureId()); Set<String> fieldNames = ddmStructure.getFieldNames(); Fields fields = (Fields) serviceContext.getAttribute(Fields.class.getName() + ddmStructure.getStructureId()); if (fields == null) { fields = new Fields(); for (String name : fieldNames) { Field field = new Field(); field.setName(name); String value = ParamUtil.getString(serviceContext, namespace + name); field.setValue(value); fields.put(field); } } fieldsMap.put(ddmStructure.getStructureKey(), fields); } return fieldsMap; }
protected void appendField(Element element, Field field) { Element dynamicElementElement = element.addElement("dynamic-element"); dynamicElementElement.addAttribute( "default-language-id", LocaleUtil.toLanguageId(field.getDefaultLocale())); dynamicElementElement.addAttribute("name", field.getName()); for (Locale locale : field.getAvailableLocales()) { List<Serializable> values = field.getValues(locale); for (Serializable value : values) { Element dynamicContentElement = dynamicElementElement.addElement("dynamic-content"); dynamicContentElement.addAttribute("language-id", LocaleUtil.toLanguageId(locale)); updateField(dynamicContentElement, value); } } }
protected void updateServiceContext(String expando, long fileEntryTypeId, String metadata) throws PortalException { Map<String, Serializable> expandoBridgeAttributes = _serviceContext.getExpandoBridgeAttributes(); expandoBridgeAttributes.put(_EXPANDO_ATTRIBUTE_NAME, expando); _serviceContext.setExpandoBridgeAttributes(expandoBridgeAttributes); _serviceContext.setAttribute("fileEntryTypeId", fileEntryTypeId); if (fileEntryTypeId <= 0) { return; } DLFileEntryType fileEntryType = DLFileEntryTypeLocalServiceUtil.getFileEntryType(fileEntryTypeId); List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures(); for (DDMStructure ddmStructure : ddmStructures) { Fields fields = (Fields) _serviceContext.getAttribute(Fields.class.getName() + ddmStructure.getStructureId()); for (Field field : fields) { String type = field.getType(); if (!field.isPrivate() && type.equals("text")) { field.setValue(metadata); } } _serviceContext.setAttribute(Fields.class.getName() + ddmStructure.getStructureId(), fields); } }
protected ServiceContext getServiceContext() throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(group.getGroupId()); serviceContext.setAttribute("fileEntryTypeId", _contractDLFileEntryTypeId); Map<String, Serializable> expandoBridgeAttributes = serviceContext.getExpandoBridgeAttributes(); expandoBridgeAttributes.put(_EXPANDO_ATTRIBUTE_NAME, StringPool.BLANK); serviceContext.setExpandoBridgeAttributes(expandoBridgeAttributes); DLFileEntryType fileEntryType = DLFileEntryTypeLocalServiceUtil.getFileEntryType(_contractDLFileEntryTypeId); List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures(); for (DDMStructure ddmStructure : ddmStructures) { Fields fields = new Fields(); Set<String> names = ddmStructure.getFieldNames(); for (String name : names) { Field field = new Field(ddmStructure.getStructureId(), name, StringPool.BLANK); if (ddmStructure.isFieldPrivate(name)) { field.setValue(RandomTestUtil.randomString()); } fields.put(field); } serviceContext.setAttribute(Fields.class.getName() + ddmStructure.getStructureId(), fields); } return serviceContext; }
protected Field getTextBoxField(long ddmStructureId) { Field field = new Field(); field.setDDMStructureId(ddmStructureId); field.setName("text_box"); List<Serializable> enValues = new ArrayList<>(); enValues.add("one"); enValues.add("two"); enValues.add("three"); field.addValues(_enLocale, enValues); List<Serializable> ptValues = new ArrayList<>(); ptValues.add("um"); ptValues.add("dois"); ptValues.add("tres"); field.addValues(_ptLocale, ptValues); return field; }
@Override public Fields getFields(DDMStructure structure, XPath xPath, String xml, List<String> fieldNames) throws PortalException { Document document = null; try { document = SAXReaderUtil.read(xml); } catch (DocumentException de) { return null; } if ((xPath != null) && !xPath.booleanValueOf(document)) { return null; } Fields fields = new Fields(); Element rootElement = document.getRootElement(); List<Element> dynamicElementElements = rootElement.elements("dynamic-element"); for (Element dynamicElementElement : dynamicElementElements) { String fieldName = dynamicElementElement.attributeValue("name"); if (!structure.hasField(fieldName) || ((fieldNames != null) && !fieldNames.contains(fieldName))) { continue; } String fieldDataType = structure.getFieldDataType(fieldName); List<Element> dynamicContentElements = dynamicElementElement.elements("dynamic-content"); for (Element dynamicContentElement : dynamicContentElements) { String fieldValue = dynamicContentElement.getText(); String languageId = dynamicContentElement.attributeValue("language-id"); Locale locale = LocaleUtil.fromLanguageId(languageId); Serializable fieldValueSerializable = FieldConstants.getSerializable(fieldDataType, fieldValue); Field field = fields.get(fieldName); if (field == null) { field = new Field(); String defaultLanguageId = dynamicElementElement.attributeValue("default-language-id"); Locale defaultLocale = LocaleUtil.fromLanguageId(defaultLanguageId); field.setDefaultLocale(defaultLocale); field.setDDMStructureId(structure.getStructureId()); field.setName(fieldName); field.setValue(locale, fieldValueSerializable); fields.put(field); } else { field.addValue(locale, fieldValueSerializable); } } } return fields; }
public void addAttributes(Document document, DDMStructure ddmStructure, Fields fields) { Iterator<Field> itr = fields.iterator(); while (itr.hasNext()) { Field field = itr.next(); try { String indexType = ddmStructure.getFieldProperty(field.getName(), "indexType"); if (Validator.isNull(indexType)) { continue; } for (Locale locale : LanguageUtil.getAvailableLocales()) { String name = encodeName(ddmStructure.getStructureId(), field.getName(), locale); Serializable value = field.getValue(locale); if (value instanceof Boolean) { document.addKeyword(name, (Boolean) value); } else if (value instanceof Boolean[]) { document.addKeyword(name, (Boolean[]) value); } else if (value instanceof Date) { document.addDate(name, (Date) value); } else if (value instanceof Date[]) { document.addDate(name, (Date[]) value); } else if (value instanceof Double) { document.addKeyword(name, (Double) value); } else if (value instanceof Double[]) { document.addKeyword(name, (Double[]) value); } else if (value instanceof Integer) { document.addKeyword(name, (Integer) value); } else if (value instanceof Integer[]) { document.addKeyword(name, (Integer[]) value); } else if (value instanceof Object[]) { String[] valuesString = ArrayUtil.toStringArray((Object[]) value); if (indexType.equals("keyword")) { document.addKeyword(name, valuesString); } else { document.addText(name, valuesString); } } else { String valueString = String.valueOf(value); String type = field.getType(); if (type.equals(DDMImpl.TYPE_RADIO) || type.equals(DDMImpl.TYPE_SELECT)) { JSONArray jsonArray = JSONFactoryUtil.createJSONArray(valueString); String[] stringArray = ArrayUtil.toStringArray(jsonArray); if (indexType.equals("keyword")) { document.addKeyword(name, stringArray); } else { document.addText(name, stringArray); } } else { if (indexType.equals("keyword")) { document.addKeyword(name, valueString); } else { document.addText(name, valueString); } } } } } catch (Exception e) { if (_log.isWarnEnabled()) { _log.warn(e, e); } } } }
protected Fields getNestedFields(long ddmStructureId) { Fields fields = new Fields(); // Contact Field contact = new Field(); contact.setDDMStructureId(ddmStructureId); contact.setName("contact"); List<Serializable> enValues = new ArrayList<>(); enValues.add("joe"); enValues.add("richard"); contact.setValues(_enLocale, enValues); List<Serializable> ptValues = new ArrayList<>(); ptValues.add("joao"); ptValues.add("ricardo"); contact.addValues(_ptLocale, ptValues); fields.put(contact); // Phone Field phone = new Field(); phone.setDDMStructureId(ddmStructureId); phone.setName("phone"); List<Serializable> values = new ArrayList<>(); values.add("123"); values.add("456"); phone.setValues(_enLocale, values); phone.addValues(_ptLocale, values); fields.put(phone); // Ext Field ext = new Field(); ext.setDDMStructureId(ddmStructureId); ext.setName("ext"); values = new ArrayList<>(); values.add("1"); values.add("2"); values.add("3"); values.add("4"); values.add("5"); ext.setValues(_enLocale, values); ext.addValues(_ptLocale, values); fields.put(ext); Field fieldsDisplayField = new Field( ddmStructureId, DDMImpl.FIELDS_DISPLAY_NAME, "contact_INSTANCE_RF3do1m5,phone_INSTANCE_QK6B0wK9," + "ext_INSTANCE_L67MPqQf,ext_INSTANCE_8uxzZl41," + "ext_INSTANCE_S58K861T,contact_INSTANCE_CUeFxcrA," + "phone_INSTANCE_lVTcTviF,ext_INSTANCE_cZalDSll," + "ext_INSTANCE_HDrK2Um5"); fields.put(fieldsDisplayField); return fields; }