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

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

Introduction

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

Prototype

public String attributeValue(String name);

Source Link

Usage

From source file:com.liferay.portlet.journal.lar.JournalPortletDataHandlerImpl.java

License:Open Source License

public static void importStructure(PortletDataContext portletDataContext, Element structureElement)
        throws Exception {

    String path = structureElement.attributeValue("path");

    if (!portletDataContext.isPathNotProcessed(path)) {
        return;//w  w  w . j a  va  2s  .  c  o  m
    }

    JournalStructure structure = (JournalStructure) portletDataContext.getZipEntryAsObject(path);

    long userId = portletDataContext.getUserId(structure.getUserUuid());

    JournalCreationStrategy creationStrategy = JournalCreationStrategyFactory.getInstance();

    long authorId = creationStrategy.getAuthorUserId(portletDataContext, structure);

    if (authorId != JournalCreationStrategy.USE_DEFAULT_USER_ID_STRATEGY) {
        userId = authorId;
    }

    String structureId = structure.getStructureId();
    boolean autoStructureId = false;

    if (Validator.isNumber(structureId)
            || (JournalStructureUtil.fetchByG_S(portletDataContext.getScopeGroupId(), structureId) != null)) {

        autoStructureId = true;
    }

    Map<String, String> structureIds = (Map<String, String>) portletDataContext
            .getNewPrimaryKeysMap(JournalStructure.class + ".structureId");

    String parentStructureId = MapUtil.getString(structureIds, structure.getParentStructureId(),
            structure.getParentStructureId());

    Document document = structureElement.getDocument();

    Element rootElement = document.getRootElement();

    Element parentStructureElement = (Element) rootElement
            .selectSingleNode("./structures/structure[@structure-id='" + parentStructureId + "']");

    String parentStructureUuid = GetterUtil.getString(structureElement.attributeValue("parent-structure-uuid"));

    if ((parentStructureElement != null) && Validator.isNotNull(parentStructureId)) {

        importStructure(portletDataContext, parentStructureElement);

        parentStructureId = structureIds.get(parentStructureId);
    } else if (Validator.isNotNull(parentStructureUuid)) {
        JournalStructure parentStructure = JournalStructureLocalServiceUtil
                .getJournalStructureByUuidAndGroupId(parentStructureUuid, portletDataContext.getGroupId());

        parentStructureId = parentStructure.getStructureId();
    }

    boolean addGroupPermissions = creationStrategy.addGroupPermissions(portletDataContext, structure);
    boolean addGuestPermissions = creationStrategy.addGuestPermissions(portletDataContext, structure);

    ServiceContext serviceContext = portletDataContext.createServiceContext(structureElement, structure,
            _NAMESPACE);

    serviceContext.setAddGroupPermissions(addGroupPermissions);
    serviceContext.setAddGuestPermissions(addGuestPermissions);

    JournalStructure importedStructure = null;

    if (portletDataContext.isDataStrategyMirror()) {
        JournalStructure existingStructure = JournalStructureUtil.fetchByUUID_G(structure.getUuid(),
                portletDataContext.getScopeGroupId());

        if (existingStructure == null) {
            Group companyGroup = GroupLocalServiceUtil.getCompanyGroup(portletDataContext.getCompanyId());

            long companyGroupId = companyGroup.getGroupId();

            existingStructure = JournalStructureUtil.fetchByUUID_G(structure.getUuid(), companyGroupId);
        }

        if (existingStructure == null) {
            serviceContext.setUuid(structure.getUuid());

            importedStructure = JournalStructureLocalServiceUtil.addStructure(userId,
                    portletDataContext.getScopeGroupId(), structureId, autoStructureId, parentStructureId,
                    structure.getNameMap(), structure.getDescriptionMap(), structure.getXsd(), serviceContext);
        } else {
            importedStructure = JournalStructureLocalServiceUtil.updateStructure(existingStructure.getGroupId(),
                    existingStructure.getStructureId(), parentStructureId, structure.getNameMap(),
                    structure.getDescriptionMap(), structure.getXsd(), serviceContext);
        }
    } else {
        importedStructure = JournalStructureLocalServiceUtil.addStructure(userId,
                portletDataContext.getScopeGroupId(), structureId, autoStructureId, parentStructureId,
                structure.getNameMap(), structure.getDescriptionMap(), structure.getXsd(), serviceContext);
    }

    portletDataContext.importClassedModel(structure, importedStructure, _NAMESPACE);

    structureIds.put(structureId, importedStructure.getStructureId());

    if (!structureId.equals(importedStructure.getStructureId())) {
        if (_log.isWarnEnabled()) {
            _log.warn("A structure with the ID " + structureId + " already "
                    + "exists. The new generated ID is " + importedStructure.getStructureId());
        }
    }
}

From source file:com.liferay.portlet.journal.lar.JournalPortletDataHandlerImpl.java

License:Open Source License

public static void importTemplate(PortletDataContext portletDataContext, Element templateElement)
        throws Exception {

    String path = templateElement.attributeValue("path");

    if (!portletDataContext.isPathNotProcessed(path)) {
        return;/*from   w  w  w .  j  av  a  2  s  .  co m*/
    }

    JournalTemplate template = (JournalTemplate) portletDataContext.getZipEntryAsObject(path);

    long userId = portletDataContext.getUserId(template.getUserUuid());

    JournalCreationStrategy creationStrategy = JournalCreationStrategyFactory.getInstance();

    long authorId = creationStrategy.getAuthorUserId(portletDataContext, template);

    if (authorId != JournalCreationStrategy.USE_DEFAULT_USER_ID_STRATEGY) {
        userId = authorId;
    }

    String templateId = template.getTemplateId();
    boolean autoTemplateId = false;

    if (Validator.isNumber(templateId)
            || (JournalTemplateUtil.fetchByG_T(portletDataContext.getScopeGroupId(), templateId) != null)) {

        autoTemplateId = true;
    }

    Map<String, String> structureIds = (Map<String, String>) portletDataContext
            .getNewPrimaryKeysMap(JournalStructure.class + ".structureId");

    String parentStructureId = MapUtil.getString(structureIds, template.getStructureId(),
            template.getStructureId());

    String xsl = template.getXsl();

    xsl = importDLFileEntries(portletDataContext, templateElement, xsl);

    Group group = GroupLocalServiceUtil.getGroup(portletDataContext.getScopeGroupId());

    xsl = StringUtil.replace(xsl, "@data_handler_group_friendly_url@", group.getFriendlyURL());

    template.setXsl(xsl);

    boolean formatXsl = false;

    boolean addGroupPermissions = creationStrategy.addGroupPermissions(portletDataContext, template);
    boolean addGuestPermissions = creationStrategy.addGuestPermissions(portletDataContext, template);

    ServiceContext serviceContext = portletDataContext.createServiceContext(templateElement, template,
            _NAMESPACE);

    serviceContext.setAddGroupPermissions(addGroupPermissions);
    serviceContext.setAddGuestPermissions(addGuestPermissions);

    File smallFile = null;

    String smallImagePath = templateElement.attributeValue("small-image-path");

    if (template.isSmallImage() && Validator.isNotNull(smallImagePath)) {
        if (smallImagePath.endsWith(StringPool.PERIOD)) {
            smallImagePath += template.getSmallImageType();
        }

        byte[] bytes = portletDataContext.getZipEntryAsByteArray(smallImagePath);

        if (bytes != null) {
            smallFile = FileUtil.createTempFile(template.getSmallImageType());

            FileUtil.write(smallFile, bytes);
        }
    }

    JournalTemplate importedTemplate = null;

    if (portletDataContext.isDataStrategyMirror()) {
        JournalTemplate existingTemplate = JournalTemplateUtil.fetchByUUID_G(template.getUuid(),
                portletDataContext.getScopeGroupId());

        if (existingTemplate == null) {
            Group companyGroup = GroupLocalServiceUtil.getCompanyGroup(portletDataContext.getCompanyId());

            long companyGroupId = companyGroup.getGroupId();

            existingTemplate = JournalTemplateUtil.fetchByUUID_G(template.getUuid(), companyGroupId);
        }

        if (existingTemplate == null) {
            serviceContext.setUuid(template.getUuid());

            importedTemplate = JournalTemplateLocalServiceUtil.addTemplate(userId,
                    portletDataContext.getScopeGroupId(), templateId, autoTemplateId, parentStructureId,
                    template.getNameMap(), template.getDescriptionMap(), template.getXsl(), formatXsl,
                    template.getLangType(), template.getCacheable(), template.isSmallImage(),
                    template.getSmallImageURL(), smallFile, serviceContext);
        } else {
            String structureId = existingTemplate.getStructureId();

            if (Validator.isNull(structureId) && Validator.isNotNull(template.getStructureId())) {

                JournalStructure structure = JournalStructureUtil.fetchByG_S(template.getGroupId(),
                        template.getStructureId());

                if (structure == null) {
                    structureId = template.getStructureId();
                } else {
                    JournalStructure existingStructure = JournalStructureUtil.findByUUID_G(structure.getUuid(),
                            portletDataContext.getScopeGroupId());

                    structureId = existingStructure.getStructureId();
                }
            }

            importedTemplate = JournalTemplateLocalServiceUtil.updateTemplate(existingTemplate.getGroupId(),
                    existingTemplate.getTemplateId(), structureId, template.getNameMap(),
                    template.getDescriptionMap(), template.getXsl(), formatXsl, template.getLangType(),
                    template.getCacheable(), template.isSmallImage(), template.getSmallImageURL(), smallFile,
                    serviceContext);
        }
    } else {
        importedTemplate = JournalTemplateLocalServiceUtil.addTemplate(userId,
                portletDataContext.getScopeGroupId(), templateId, autoTemplateId, parentStructureId,
                template.getNameMap(), template.getDescriptionMap(), template.getXsl(), formatXsl,
                template.getLangType(), template.getCacheable(), template.isSmallImage(),
                template.getSmallImageURL(), smallFile, serviceContext);
    }

    if (smallFile != null) {
        smallFile.delete();
    }

    portletDataContext.importClassedModel(template, importedTemplate, _NAMESPACE);

    Map<String, String> templateIds = (Map<String, String>) portletDataContext
            .getNewPrimaryKeysMap(JournalTemplate.class + ".templateId");

    templateIds.put(template.getTemplateId(), importedTemplate.getTemplateId());

    if (!templateId.equals(importedTemplate.getTemplateId())) {
        if (_log.isWarnEnabled()) {
            _log.warn("A template with the ID " + templateId + " already " + "exists. The new generated ID is "
                    + importedTemplate.getTemplateId());
        }
    }
}

From source file:com.liferay.portlet.journal.lar.JournalPortletDataHandlerImpl.java

License:Open Source License

protected static String importDLFileEntries(PortletDataContext portletDataContext, Element parentElement,
        String content) throws Exception {

    List<Element> dlReferenceElements = parentElement.elements("dl-reference");

    for (Element dlReferenceElement : dlReferenceElements) {
        String dlReferencePath = dlReferenceElement.attributeValue("path");

        String fileEntryUUID = null;

        try {//from w  ww . j av  a 2s .c  om
            Object zipEntryObject = portletDataContext.getZipEntryAsObject(dlReferencePath);

            if (zipEntryObject == null) {
                if (_log.isWarnEnabled()) {
                    _log.warn("Unable to reference " + dlReferencePath);
                }

                continue;
            }

            boolean defaultRepository = GetterUtil
                    .getBoolean(dlReferenceElement.attributeValue("default-repository"));

            if (defaultRepository) {
                FileEntry fileEntry = (FileEntry) zipEntryObject;

                fileEntryUUID = fileEntry.getUuid();
            } else {
                RepositoryEntry repositoryEntry = (RepositoryEntry) zipEntryObject;

                fileEntryUUID = repositoryEntry.getUuid();
            }
        } catch (Exception e) {
            if (_log.isDebugEnabled()) {
                _log.debug(e, e);
            } else if (_log.isWarnEnabled()) {
                _log.warn(e.getMessage());
            }
        }

        if (fileEntryUUID == null) {
            continue;
        }

        FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileEntryUUID,
                portletDataContext.getGroupId());

        if (fileEntry == null) {
            continue;
        }

        String dlReference = "[$dl-reference=" + dlReferencePath + "$]";

        String url = DLUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), null, StringPool.BLANK, false,
                false);

        content = StringUtil.replace(content, dlReference, url);
    }

    return content;
}

From source file:com.liferay.portlet.journal.lar.JournalPortletDataHandlerImpl.java

License:Open Source License

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

    portletDataContext.importPermissions("com.liferay.portlet.journal", portletDataContext.getSourceGroupId(),
            portletDataContext.getScopeGroupId());

    Document document = SAXReaderUtil.read(data);

    Element rootElement = document.getRootElement();

    importReferencedData(portletDataContext, rootElement);

    Element structuresElement = rootElement.element("structures");

    List<Element> structureElements = structuresElement.elements("structure");

    //Modification start
    long processedItems = 0, itemsToprocess = 0;

    itemsToprocess += structureElements.size();

    Element templatesElement = rootElement.element("templates");
    List<Element> templateElements = templatesElement.elements("template");
    itemsToprocess += templateElements.size();

    Element feedsElement = rootElement.element("feeds");
    List<Element> feedElements = feedsElement.elements("feed");
    itemsToprocess += feedElements.size();

    List<Element> articleElements = new ArrayList<Element>();
    if (portletDataContext.getBooleanParameter(_NAMESPACE, "web-content")) {
        Element articlesElement = rootElement.element("articles");

        articleElements = articlesElement.elements("article");
        itemsToprocess += articleElements.size();
    }//from   w ww  .  j  a  va 2  s .co  m
    StagingProgressUpdaterThreadLocal.getMonitor().getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
            .setItemsCount(itemsToprocess);

    for (Element structureElement : structureElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        importStructure(portletDataContext, structureElement);
    }

    for (Element templateElement : templateElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        importTemplate(portletDataContext, templateElement);
    }

    for (Element feedElement : feedElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        importFeed(portletDataContext, feedElement);
    }

    for (Element articleElement : articleElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        try {
            importArticle(portletDataContext, articleElement);
        } catch (ArticleContentException ace) {
            if (_log.isWarnEnabled()) {
                String path = articleElement.attributeValue("path");

                _log.warn("Skipping article with path " + path + " because of invalid content");
            }
        }
    }
    //Modification end

    return portletPreferences;
}

From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java

License:Open Source License

protected void checkStructureField(Element el, Document contentDoc) throws PortalException {

    StringBuilder elPath = new StringBuilder();

    elPath.append(el.attributeValue("name"));

    Element elParent = el.getParent();

    for (;;) {/* w  ww  . j a  v a  2s  .c  o  m*/
        if ((elParent == null) || (elParent.getName().equals("root"))) {
            break;
        }

        elPath.insert(0, elParent.attributeValue("name") + StringPool.COMMA);

        elParent = elParent.getParent();
    }

    String[] elPathNames = StringUtil.split(elPath.toString());

    Element contentEl = contentDoc.getRootElement();

    for (String _elPathName : elPathNames) {
        boolean foundEl = false;

        for (Element tempEl : contentEl.elements()) {
            if (_elPathName.equals(tempEl.attributeValue("name", StringPool.BLANK))) {

                contentEl = tempEl;
                foundEl = true;

                break;
            }
        }

        if (!foundEl) {
            String elType = contentEl.attributeValue("type", StringPool.BLANK);

            if (!elType.equals("list") && !elType.equals("multi-list")) {
                throw new StructureXsdException(elPath.toString());
            }

            break;
        }
    }
}

From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java

License:Open Source License

protected void copyArticleImages(JournalArticle oldArticle, JournalArticle newArticle) throws Exception {

    Document contentDoc = SAXReaderUtil.read(oldArticle.getContent());

    XPath xPathSelector = SAXReaderUtil.createXPath("//dynamic-element[@type='image']");

    List<Node> imageNodes = xPathSelector.selectNodes(contentDoc);

    for (Node imageNode : imageNodes) {
        Element imageEl = (Element) imageNode;

        String instanceId = imageEl.attributeValue("instance-id");
        String name = imageEl.attributeValue("name");

        List<Element> dynamicContentEls = imageEl.elements("dynamic-content");

        for (Element dynamicContentEl : dynamicContentEls) {
            long imageId = GetterUtil.getLong(dynamicContentEl.attributeValue("id"));
            String languageId = dynamicContentEl.attributeValue("language-id");

            Image oldImage = null;

            try {
                oldImage = imageLocalService.getImage(imageId);
            } catch (NoSuchImageException nsie) {
                continue;
            }/*w ww. ja  v a2 s  .com*/

            imageId = journalArticleImageLocalService.getArticleImageId(newArticle.getGroupId(),
                    newArticle.getArticleId(), newArticle.getVersion(), instanceId, name, languageId);

            imageLocalService.updateImage(imageId, oldImage.getTextObj());

            String elContent = "/image/journal/article?img_id=" + imageId + "&t="
                    + WebServerServletTokenUtil.getToken(imageId);

            dynamicContentEl.setText(elContent);
            dynamicContentEl.addAttribute("id", String.valueOf(imageId));
        }
    }

    newArticle.setContent(contentDoc.formattedString());
}

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

License:Open Source License

protected String injectEditInPlace(String xml, String script) {
    try {/*from  w  w  w . j a  v  a 2  s .c o m*/
        Document document = SAXReaderUtil.read(xml);

        List<Node> nodes = document.selectNodes("//dynamic-element");

        for (Node node : nodes) {
            Element element = (Element) node;

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

            if ((!name.startsWith("reserved-"))
                    && (type.equals("text") || type.equals("text_area") || type.equals("text_box"))) {

                script = wrapEditInPlaceField(script, name, type, "data");
                script = wrapEditInPlaceField(script, name, type, "getData()");
            }
        }
    } catch (Exception e) {
        _log.warn(e.getMessage());
    }

    return script;
}

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

License:Open Source License

@Override
public Fields getDDMFields(DDMStructure ddmStructure, String content) throws Exception {

    Document document = SAXReaderUtil.read(content);

    Field fieldsDisplayField = new Field(ddmStructure.getStructureId(), DDMImpl.FIELDS_DISPLAY_NAME,
            StringPool.BLANK);/*w w  w .ja va 2 s.c o m*/
    Fields ddmFields = new Fields();
    ddmFields.put(fieldsDisplayField);

    Element rootElement = document.getRootElement();

    String defaultLocale = rootElement.attributeValue("default-locale");

    List<Element> dynamicElementElements = rootElement.elements("dynamic-element");
    for (Element dynamicElementElement : dynamicElementElements) {
        addDDMFields(dynamicElementElement, ddmStructure, ddmFields, defaultLocale);
    }

    return ddmFields;
}

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

License:Open Source License

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

    Element rootElement = document.getRootElement();

    String defaultLocale = rootElement.attributeValue("default-locale");

    removeAttribute(rootElement, "available-locales");
    removeAttribute(rootElement, "default-locale");

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

    for (Element dynamicElementElement : dynamicElementElements) {
        updateDDMXSDDynamicElement(dynamicElementElement, defaultLocale);
    }//from  ww  w .  j  av a 2s  . co m

    return DDMXMLUtil.formatXML(document);
}

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

License:Open Source License

protected void addDDMFields(Element dynamicElementElement, DDMStructure ddmStructure, Fields ddmFields,
        String defaultLocale) throws Exception {

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

    if (!ddmStructure.hasField(name)) {
        return;/* w w  w . j  a  v a2 s  .c  om*/
    }
    Field ddmField = getField(dynamicElementElement, ddmStructure, defaultLocale);

    String fieldName = ddmField.getName();

    Field existingDDMField = ddmFields.get(fieldName);

    if (existingDDMField != null) {
        for (Locale locale : ddmField.getAvailableLocales()) {
            existingDDMField.addValues(locale, ddmField.getValues(locale));
        }
    } else {
        ddmFields.put(ddmField);
    }

    updateFieldsDisplay(ddmFields, fieldName);

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

    for (Element childrenDynamicElementElement : childrenDynamicElementElements) {

        addDDMFields(childrenDynamicElementElement, ddmStructure, ddmFields, defaultLocale);
    }
}