List of usage examples for com.liferay.portal.kernel.xml Element add
public void add(Text text);
From source file:com.liferay.knowledgebase.admin.util.KBStructureContentUtil.java
License:Open Source License
protected static Element updateLocalizations(Element rootElement, Element defaultKBStructureContentElement, Map<String, Element> elements) { for (Map.Entry<String, Element> entry : elements.entrySet()) { Element oldKBStructureContentElement = entry.getValue(); Element newKBStructureContentElement = oldKBStructureContentElement.createCopy(); for (Element newKBStructureFieldElement : newKBStructureContentElement.elements()) { newKBStructureFieldElement.detach(); }/*w w w.ja va 2 s . c om*/ for (Element defaultKBStructureFieldElement : defaultKBStructureContentElement.elements()) { String defaultKBStructureFieldId = defaultKBStructureFieldElement .attributeValue("kb-structure-field-id"); Element oldKBStructureFieldElement = (Element) oldKBStructureContentElement.selectSingleNode( "kb-structure-field[@kb-structure-field-id='" + defaultKBStructureFieldId + "']"); if (oldKBStructureFieldElement == null) { newKBStructureContentElement.add(defaultKBStructureFieldElement.createCopy()); continue; } Element newKBStructureFieldElement = oldKBStructureFieldElement.createCopy(); for (Element newKBStructureOptionElement : newKBStructureFieldElement.elements()) { newKBStructureOptionElement.detach(); } for (Element defaultKBStructureOptionElement : defaultKBStructureFieldElement.elements()) { String defaultKBStructureOptionId = defaultKBStructureOptionElement .attributeValue("kb-structure-option-id"); Element oldKBStructureOptionElement = (Element) oldKBStructureFieldElement.selectSingleNode( "kb-structure-option[@kb-structure-option-id='" + defaultKBStructureOptionId + "']"); if (oldKBStructureOptionElement == null) { newKBStructureFieldElement.add(defaultKBStructureOptionElement.createCopy()); } else { newKBStructureFieldElement.add(oldKBStructureOptionElement.createCopy()); } } newKBStructureContentElement.add(newKBStructureFieldElement); } rootElement.add(newKBStructureContentElement); } return rootElement; }
From source file:com.liferay.lms.service.impl.LearningActivityLocalServiceImpl.java
License:Open Source License
@SuppressWarnings("rawtypes") public void saveHashMapToXMLExtraContent(long actId, HashMap<String, String> map) throws SystemException, PortalException { try {//from w w w .ja v a 2s .c om LearningActivity activity = learningActivityPersistence.fetchByPrimaryKey(actId); if (activity != null && !map.isEmpty()) { //Element resultadosXML=SAXReaderUtil.createElement("p2p"); Element resultadosXML = SAXReaderUtil.createElement(getNameLearningActivity(activity.getTypeId())); Document resultadosXMLDoc = SAXReaderUtil.createDocument(resultadosXML); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry e = (Map.Entry) it.next(); Element eleXML = SAXReaderUtil.createElement(String.valueOf(e.getKey())); if (e.getKey().equals("document")) { eleXML.addAttribute("id", String.valueOf(e.getValue())); } else { eleXML.addText(String.valueOf(e.getValue())); } resultadosXML.add(eleXML); } activity.setExtracontent(resultadosXMLDoc.formattedString()); learningActivityPersistence.update(activity, true); } } catch (Exception e) { } }
From source file:com.liferay.lms.servlet.SCORMFileServerServlet.java
License:Open Source License
/** * Procesa los metodos HTTP GET y POST.<br> * Busca en la ruta que se le ha pedido el comienzo del directorio * "contenidos" y sirve el fichero./*from w w w . j av a2 s. com*/ */ protected void processRequest(HttpServletRequest request, HttpServletResponse response, boolean content) throws ServletException, java.io.IOException { String mime_type; String charset; String patharchivo; String uri; try { User user = PortalUtil.getUser(request); if (user == null) { String userId = null; String companyId = null; Cookie[] cookies = ((HttpServletRequest) request).getCookies(); if (Validator.isNotNull(cookies)) { for (Cookie c : cookies) { if ("COMPANY_ID".equals(c.getName())) { companyId = c.getValue(); } else if ("ID".equals(c.getName())) { userId = hexStringToStringByAscii(c.getValue()); } } } if (userId != null && companyId != null) { try { Company company = CompanyLocalServiceUtil.getCompany(Long.parseLong(companyId)); Key key = company.getKeyObj(); String userIdPlain = Encryptor.decrypt(key, userId); user = UserLocalServiceUtil.getUser(Long.valueOf(userIdPlain)); // Now you can set the liferayUser into a thread local // for later use or // something like that. } catch (Exception pException) { throw new RuntimeException(pException); } } } String rutaDatos = SCORMContentLocalServiceUtil.getBaseDir(); // Se comprueba que el usuario tiene permisos para acceder. // Damos acceso a todo el mundo al directorio "personalizacion", // para permitir mostrar a todos la pantalla de identificacion. uri = URLDecoder.decode(request.getRequestURI(), "UTF-8"); uri = uri.substring(uri.indexOf("scorm/") + "scorm/".length()); patharchivo = rutaDatos + "/" + uri; String[] params = uri.split("/"); long groupId = GetterUtil.getLong(params[1]); String uuid = params[2]; SCORMContent scormContent = SCORMContentLocalServiceUtil.getSCORMContentByUuidAndGroupId(uuid, groupId); boolean allowed = false; if (user == null) { user = UserLocalServiceUtil.getDefaultUser(PortalUtil.getDefaultCompanyId()); } PermissionChecker pc = PermissionCheckerFactoryUtil.create(user); allowed = pc.hasPermission(groupId, SCORMContent.class.getName(), scormContent.getScormId(), ActionKeys.VIEW); if (!allowed) { AssetEntry scormAsset = AssetEntryLocalServiceUtil.getEntry(SCORMContent.class.getName(), scormContent.getPrimaryKey()); long scormAssetId = scormAsset.getEntryId(); int typeId = new Long((new SCORMLearningActivityType()).getTypeId()).intValue(); long[] groupIds = user.getGroupIds(); for (long gId : groupIds) { List<LearningActivity> acts = LearningActivityLocalServiceUtil .getLearningActivitiesOfGroupAndType(gId, typeId); for (LearningActivity act : acts) { String entryId = LearningActivityLocalServiceUtil.getExtraContentValue(act.getActId(), "assetEntry"); if (Validator.isNotNull(entryId) && Long.valueOf(entryId) == scormAssetId) { allowed = pc.hasPermission(gId, LearningActivity.class.getName(), act.getActId(), ActionKeys.VIEW); if (allowed) { break; } } } if (allowed) { break; } } } if (allowed) { File archivo = new File(patharchivo); // Si el archivo existe y no es un directorio se sirve. Si no, // no se hace nada. if (archivo.exists() && archivo.isFile()) { // El content type siempre antes del printwriter mime_type = MimeTypesUtil.getContentType(archivo); charset = ""; if (archivo.getName().toLowerCase().endsWith(".html") || archivo.getName().toLowerCase().endsWith(".htm")) { mime_type = "text/html"; if (isISO(FileUtils.readFileToString(archivo))) { charset = "ISO-8859-1"; } } if (archivo.getName().toLowerCase().endsWith(".swf")) { mime_type = "application/x-shockwave-flash"; } if (archivo.getName().toLowerCase().endsWith(".mp4")) { mime_type = "video/mp4"; } if (archivo.getName().toLowerCase().endsWith(".flv")) { mime_type = "video/x-flv"; } response.setContentType(mime_type); if (Validator.isNotNull(charset)) { response.setCharacterEncoding(charset); } response.addHeader("Content-Type", mime_type + (Validator.isNotNull(charset) ? "; " + charset : "")); /*if (archivo.getName().toLowerCase().endsWith(".swf") || archivo.getName().toLowerCase().endsWith(".flv")) { response.addHeader("Content-Length", String.valueOf(archivo.length())); } */ if (archivo.getName().toLowerCase().endsWith("imsmanifest.xml")) { FileInputStream fis = new FileInputStream(patharchivo); String sco = ParamUtil.get(request, "scoshow", ""); Document manifest = SAXReaderUtil.read(fis); if (sco.length() > 0) { Element organizatEl = manifest.getRootElement().element("organizations") .element("organization"); Element selectedItem = selectItem(organizatEl, sco); if (selectedItem != null) { selectedItem.detach(); java.util.List<Element> items = organizatEl.elements("item"); for (Element item : items) { organizatEl.remove(item); } organizatEl.add(selectedItem); } } //clean unused resources. Element resources = manifest.getRootElement().element("resources"); java.util.List<Element> theResources = resources.elements("resource"); Element organizatEl = manifest.getRootElement().element("organizations") .element("organization"); java.util.List<String> identifiers = getIdentifierRefs(organizatEl); for (Element resource : theResources) { String identifier = resource.attributeValue("identifier"); if (!identifiers.contains(identifier)) { resources.remove(resource); } } response.getWriter().print(manifest.asXML()); fis.close(); return; } if (mime_type.startsWith("text") || mime_type.endsWith("javascript") || mime_type.equals("application/xml")) { java.io.OutputStream out = response.getOutputStream(); FileInputStream fis = new FileInputStream(patharchivo); byte[] buffer = new byte[512]; int i = 0; while (fis.available() > 0) { i = fis.read(buffer); if (i == 512) out.write(buffer); else out.write(buffer, 0, i); } fis.close(); out.flush(); out.close(); return; } //If not manifest String fileName = archivo.getName(); long length = archivo.length(); long lastModified = archivo.lastModified(); String eTag = fileName + "_" + length + "_" + lastModified; long expires = System.currentTimeMillis() + DEFAULT_EXPIRE_TIME; String ifNoneMatch = request.getHeader("If-None-Match"); if (ifNoneMatch != null && matches(ifNoneMatch, eTag)) { response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); response.setHeader("ETag", eTag); // Required in 304. response.setDateHeader("Expires", expires); // Postpone cache with 1 week. return; } long ifModifiedSince = request.getDateHeader("If-Modified-Since"); if (ifNoneMatch == null && ifModifiedSince != -1 && ifModifiedSince + 1000 > lastModified) { response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); response.setHeader("ETag", eTag); // Required in 304. response.setDateHeader("Expires", expires); // Postpone cache with 1 week. return; } // If-Match header should contain "*" or ETag. If not, then return 412. String ifMatch = request.getHeader("If-Match"); if (ifMatch != null && !matches(ifMatch, eTag)) { response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED); return; } // If-Unmodified-Since header should be greater than LastModified. If not, then return 412. long ifUnmodifiedSince = request.getDateHeader("If-Unmodified-Since"); if (ifUnmodifiedSince != -1 && ifUnmodifiedSince + 1000 <= lastModified) { response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED); return; } // Validate and process range ------------------------------------------------------------- // Prepare some variables. The full Range represents the complete file. Range full = new Range(0, length - 1, length); List<Range> ranges = new ArrayList<Range>(); // Validate and process Range and If-Range headers. String range = request.getHeader("Range"); if (range != null) { // Range header should match format "bytes=n-n,n-n,n-n...". If not, then return 416. if (!range.matches("^bytes=\\d*-\\d*(,\\d*-\\d*)*$")) { response.setHeader("Content-Range", "bytes */" + length); // Required in 416. response.sendError(HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE); return; } // If-Range header should either match ETag or be greater then LastModified. If not, // then return full file. String ifRange = request.getHeader("If-Range"); if (ifRange != null && !ifRange.equals(eTag)) { try { long ifRangeTime = request.getDateHeader("If-Range"); // Throws IAE if invalid. if (ifRangeTime != -1 && ifRangeTime + 1000 < lastModified) { ranges.add(full); } } catch (IllegalArgumentException ignore) { ranges.add(full); } } // If any valid If-Range header, then process each part of byte range. if (ranges.isEmpty()) { for (String part : range.substring(6).split(",")) { // Assuming a file with length of 100, the following examples returns bytes at: // 50-80 (50 to 80), 40- (40 to length=100), -20 (length-20=80 to length=100). long start = sublong(part, 0, part.indexOf("-")); long end = sublong(part, part.indexOf("-") + 1, part.length()); if (start == -1) { start = length - end; end = length - 1; } else if (end == -1 || end > length - 1) { end = length - 1; } // Check if Range is syntactically valid. If not, then return 416. if (start > end) { response.setHeader("Content-Range", "bytes */" + length); // Required in 416. response.sendError(HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE); return; } // Add range. ranges.add(new Range(start, end, length)); } } } boolean acceptsGzip = false; String disposition = "inline"; if (mime_type.startsWith("text")) { //String acceptEncoding = request.getHeader("Accept-Encoding"); // acceptsGzip = acceptEncoding != null && accepts(acceptEncoding, "gzip"); // mime_type += ";charset=UTF-8"; } // Else, expect for images, determine content disposition. If content type is supported by // the browser, then set to inline, else attachment which will pop a 'save as' dialogue. else if (!mime_type.startsWith("image")) { String accept = request.getHeader("Accept"); disposition = accept != null && accepts(accept, mime_type) ? "inline" : "attachment"; } // Initialize response. response.reset(); response.setBufferSize(DEFAULT_BUFFER_SIZE); response.setHeader("Content-Disposition", disposition + ";filename=\"" + fileName + "\""); response.setHeader("Accept-Ranges", "bytes"); response.setHeader("ETag", eTag); response.setDateHeader("Last-Modified", lastModified); response.setDateHeader("Expires", expires); // Send requested file (part(s)) to client ------------------------------------------------ // Prepare streams. RandomAccessFile input = null; OutputStream output = null; try { // Open streams. input = new RandomAccessFile(archivo, "r"); output = response.getOutputStream(); if (ranges.isEmpty() || ranges.get(0) == full) { // Return full file. Range r = full; response.setContentType(mime_type); response.setHeader("Content-Range", "bytes " + r.start + "-" + r.end + "/" + r.total); if (content) { // Content length is not directly predictable in case of GZIP. // So only add it if there is no means of GZIP, else browser will hang. response.setHeader("Content-Length", String.valueOf(r.length)); // Copy full range. copy(input, output, r.start, r.length); } } else if (ranges.size() == 1) { // Return single part of file. Range r = ranges.get(0); response.setContentType(mime_type); response.setHeader("Content-Range", "bytes " + r.start + "-" + r.end + "/" + r.total); response.setHeader("Content-Length", String.valueOf(r.length)); response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); // 206. if (content) { // Copy single part range. copy(input, output, r.start, r.length); } } else { // Return multiple parts of file. response.setContentType("multipart/byteranges; boundary=" + MULTIPART_BOUNDARY); response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); // 206. if (content) { // Cast back to ServletOutputStream to get the easy println methods. ServletOutputStream sos = (ServletOutputStream) output; // Copy multi part range. for (Range r : ranges) { // Add multipart boundary and header fields for every range. sos.println(); sos.println("--" + MULTIPART_BOUNDARY); sos.println("Content-Type: " + mime_type); sos.println("Content-Range: bytes " + r.start + "-" + r.end + "/" + r.total); // Copy single part range of multi part range. copy(input, output, r.start, r.length); } // End with multipart boundary. sos.println(); sos.println("--" + MULTIPART_BOUNDARY + "--"); } } } finally { // Gently close streams. close(output); close(input); } } else { //java.io.OutputStream out = response.getOutputStream(); response.sendError(404); //out.write(uri.getBytes()); } } else { response.sendError(401); } } catch (Exception e) { System.out.println("Error en el processRequest() de ServidorArchivos: " + e.getMessage()); } }
From source file:com.liferay.portlet.dynamicdatalists.util.DDLImpl.java
License:Open Source License
public String getTemplateContent(long ddmTemplateId, DDLRecordSet recordSet, ThemeDisplay themeDisplay, RenderRequest renderRequest, RenderResponse renderResponse) throws Exception { String viewMode = ParamUtil.getString(renderRequest, "viewMode"); String languageId = LanguageUtil.getLanguageId(renderRequest); String xmlRequest = PortletRequestUtil.toXML(renderRequest, renderResponse); if (Validator.isNull(xmlRequest)) { xmlRequest = "<request />"; }//from w w w. j a v a 2s. c o m Map<String, String> tokens = JournalUtil.getTokens(recordSet.getGroupId(), themeDisplay, xmlRequest); String xml = StringPool.BLANK; Document document = SAXReaderUtil.createDocument(); Element rootElement = document.addElement("root"); Document requestDocument = SAXReaderUtil.read(xmlRequest); rootElement.add(requestDocument.getRootElement().createCopy()); addAllReservedEls(rootElement, tokens, recordSet); xml = DDMXMLUtil.formatXML(document); DDMTemplate template = DDMTemplateLocalServiceUtil.getTemplate(ddmTemplateId); return _transformer.transform(themeDisplay, tokens, viewMode, languageId, xml, template.getScript(), template.getLanguage()); }
From source file:com.liferay.portlet.dynamicdatamapping.service.impl.DDMStructureLocalServiceImpl.java
License:Open Source License
protected void appendNewStructureRequiredFields(DDMStructure structure, Document templateDocument) { String xsd = structure.getXsd(); Document structureDocument = null; try {/*w w w . ja v a 2s .c o m*/ structureDocument = SAXReaderUtil.read(xsd); } catch (DocumentException de) { if (_log.isWarnEnabled()) { _log.warn(de, de); } return; } Element templateElement = templateDocument.getRootElement(); XPath structureXPath = SAXReaderUtil .createXPath("//dynamic-element[.//meta-data/entry[@name=\"required\"]=" + "\"true\"]"); List<Node> nodes = structureXPath.selectNodes(structureDocument); Iterator<Node> itr = nodes.iterator(); while (itr.hasNext()) { Element element = (Element) itr.next(); String name = element.attributeValue("name"); XPath templateXPath = SAXReaderUtil.createXPath("//dynamic-element[@name=\"" + name + "\"]"); if (!templateXPath.booleanValueOf(templateDocument)) { templateElement.add(element.createCopy()); } } }
From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java
License:Open Source License
public JournalArticleDisplay getArticleDisplay(JournalArticle article, String templateId, String viewMode, String languageId, int page, String xmlRequest, ThemeDisplay themeDisplay) throws PortalException, SystemException { String content = null;/*from www .j ava 2 s. c o m*/ if (page < 1) { page = 1; } int numberOfPages = 1; boolean paginate = false; boolean pageFlow = false; boolean cacheable = true; if (Validator.isNull(xmlRequest)) { xmlRequest = "<request />"; } Map<String, String> tokens = JournalUtil.getTokens(article.getGroupId(), themeDisplay, xmlRequest); tokens.put("article_resource_pk", String.valueOf(article.getResourcePrimKey())); String defaultTemplateId = article.getTemplateId(); if (article.isTemplateDriven()) { if (Validator.isNull(templateId)) { templateId = defaultTemplateId; } tokens.put("structure_id", article.getStructureId()); tokens.put("template_id", templateId); } String xml = article.getContent(); try { Document document = null; Element rootElement = null; if (article.isTemplateDriven()) { document = SAXReaderUtil.read(xml); rootElement = document.getRootElement(); Document requestDocument = SAXReaderUtil.read(xmlRequest); List<Element> pages = rootElement.elements("page"); if (!pages.isEmpty()) { pageFlow = true; String targetPage = requestDocument .valueOf("/request/parameters/parameter[name='targetPage']/" + "value"); Element pageElement = null; if (Validator.isNotNull(targetPage)) { XPath xPathSelector = SAXReaderUtil.createXPath("/root/page[@id = '" + targetPage + "']"); pageElement = (Element) xPathSelector.selectSingleNode(document); } if (pageElement != null) { document = SAXReaderUtil.createDocument(pageElement); rootElement = document.getRootElement(); numberOfPages = pages.size(); } else { if (page > pages.size()) { page = 1; } pageElement = pages.get(page - 1); document = SAXReaderUtil.createDocument(pageElement); rootElement = document.getRootElement(); numberOfPages = pages.size(); paginate = true; } } rootElement.add(requestDocument.getRootElement().createCopy()); JournalUtil.addAllReservedEls(rootElement, tokens, article, languageId); xml = DDMXMLUtil.formatXML(document); } } catch (DocumentException de) { throw new SystemException(de); } catch (IOException ioe) { throw new SystemException(ioe); } try { if (_log.isDebugEnabled()) { _log.debug( "Transforming " + article.getArticleId() + " " + article.getVersion() + " " + languageId); } String script = null; String langType = null; if (article.isTemplateDriven()) { // Try with specified template first (in the current group and // the global group). If a template is not specified, use the // default one. If the specified template does not exit, use the // default one. If the default one does not exist, throw an // exception. JournalTemplate template = null; try { template = journalTemplatePersistence.findByG_T(article.getGroupId(), templateId); } catch (NoSuchTemplateException nste1) { try { Group companyGroup = groupLocalService.getCompanyGroup(article.getCompanyId()); template = journalTemplatePersistence.findByG_T(companyGroup.getGroupId(), templateId); tokens.put("company_group_id", String.valueOf(companyGroup.getGroupId())); } catch (NoSuchTemplateException nste2) { if (!defaultTemplateId.equals(templateId)) { template = journalTemplatePersistence.findByG_T(article.getGroupId(), defaultTemplateId); } else { throw nste1; } } } script = template.getXsl(); langType = template.getLangType(); cacheable = template.isCacheable(); } content = JournalUtil.transform(themeDisplay, tokens, viewMode, languageId, xml, script, langType); if (!pageFlow) { String[] pieces = StringUtil.split(content, PropsValues.JOURNAL_ARTICLE_TOKEN_PAGE_BREAK); if (pieces.length > 1) { if (page > pieces.length) { page = 1; } content = pieces[page - 1]; numberOfPages = pieces.length; paginate = true; } } } catch (Exception e) { throw new SystemException(e); } return new JournalArticleDisplayImpl(article.getCompanyId(), article.getId(), article.getResourcePrimKey(), article.getGroupId(), article.getUserId(), article.getArticleId(), article.getVersion(), article.getTitle(languageId), article.getUrlTitle(), article.getDescription(languageId), article.getAvailableLocales(), content, article.getType(), article.getStructureId(), templateId, article.isSmallImage(), article.getSmallImageId(), article.getSmallImageURL(), numberOfPages, page, paginate, cacheable); }
From source file:com.liferay.portlet.journal.util.JournalUtil.java
License:Open Source License
public static void addReservedEl(Element rootElement, Map<String, String> tokens, String name, String value) { // XML/*from w ww . j av a 2 s. co m*/ if (rootElement != null) { Element dynamicElementElement = SAXReaderUtil.createElement("dynamic-element"); Attribute nameAttribute = SAXReaderUtil.createAttribute(dynamicElementElement, "name", name); dynamicElementElement.add(nameAttribute); Attribute typeAttribute = SAXReaderUtil.createAttribute(dynamicElementElement, "type", "text"); dynamicElementElement.add(typeAttribute); Element dynamicContentElement = SAXReaderUtil.createElement("dynamic-content"); //dynamicContentElement.setText("<![CDATA[" + value + "]]>"); dynamicContentElement.setText(value); dynamicElementElement.add(dynamicContentElement); rootElement.add(dynamicElementElement); } // Tokens tokens.put(StringUtil.replace(name, CharPool.DASH, CharPool.UNDERLINE), value); }
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 2s .c o m 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.util.ant.Java2WsddTask.java
License:Open Source License
private static void _addElements(Element element, Map<String, Element> elements) { for (Map.Entry<String, Element> entry : elements.entrySet()) { Element childElement = entry.getValue(); element.add(childElement); }// w w w . j av a2 s.c o m }