com.liferay.resourcesimporter.util.ResourceImporter.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.resourcesimporter.util.ResourceImporter.java

Source

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.resourcesimporter.util;

import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
import com.liferay.portlet.dynamicdatamapping.model.DDMTemplateConstants;
import com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalServiceUtil;

import java.io.File;
import java.io.InputStream;

import java.net.URL;
import java.net.URLConnection;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author Raymond Aug
 * @author Ryan Park
 */
public class ResourceImporter extends FileSystemImporter {

    @Override
    public void importResources() throws Exception {
        doImportResources();
    }

    @Override
    protected void addApplicationDisplayTemplate(String parentDirName, String dirName, long classNameId)
            throws Exception {

        StringBundler sb = new StringBundler(4);

        sb.append(resourcesDir);
        sb.append(parentDirName);
        sb.append("/");
        sb.append(dirName);

        Set<String> resourcePaths = servletContext.getResourcePaths(sb.toString());

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            String script = StringUtil.read(urlConnection.getInputStream());

            if (Validator.isNull(script)) {
                continue;
            }

            File file = new File(resourcePath);

            addApplicationDisplayTemplate(script, file, classNameId);
        }
    }

    @Override
    protected void addDDLDisplayTemplates(String ddmStructureKey, String dirName, String fileName)
            throws Exception {

        DDMStructure ddmStructure = DDMStructureLocalServiceUtil.getStructure(groupId,
                PortalUtil.getClassNameId(DDLRecordSet.class), ddmStructureKey);

        StringBundler sb = new StringBundler(4);

        sb.append(resourcesDir);
        sb.append(dirName);
        sb.append(StringPool.SLASH);
        sb.append(fileName);

        Set<String> resourcePaths = servletContext.getResourcePaths(sb.toString());

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            String script = StringUtil.read(urlConnection.getInputStream());

            if (Validator.isNull(script)) {
                return;
            }

            addDDMTemplate(groupId, ddmStructure.getStructureId(), resourcePath,
                    getDDMTemplateLanguage(resourcePath), script, DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY,
                    StringPool.BLANK);
        }
    }

    @Override
    protected void addDDLFormTemplates(String ddmStructureKey, String dirName, String fileName) throws Exception {

        DDMStructure ddmStructure = DDMStructureLocalServiceUtil.getStructure(groupId,
                PortalUtil.getClassNameId(DDLRecordSet.class), ddmStructureKey);

        StringBundler sb = new StringBundler(4);

        sb.append(resourcesDir);
        sb.append(dirName);
        sb.append(StringPool.SLASH);
        sb.append(fileName);

        Set<String> resourcePaths = servletContext.getResourcePaths(sb.toString());

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            String script = StringUtil.read(urlConnection.getInputStream());

            if (Validator.isNull(script)) {
                return;
            }

            addDDMTemplate(groupId, ddmStructure.getStructureId(), resourcePath, "xsd", script,
                    DDMTemplateConstants.TEMPLATE_TYPE_FORM, DDMTemplateConstants.TEMPLATE_MODE_CREATE);
        }
    }

    @Override
    protected void addDDLStructures(String dirName) throws Exception {
        Set<String> resourcePaths = servletContext.getResourcePaths(resourcesDir.concat(dirName));

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            File file = new File(resourcePath);

            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            addDDMStructures(FileUtil.stripExtension(file.getName()), urlConnection.getInputStream());
        }
    }

    @Override
    protected void addDDMStructures(String parentStructureId, String dirName) throws Exception {

        Set<String> resourcePaths = servletContext.getResourcePaths(resourcesDir.concat(dirName));

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            if (resourcePath.endsWith(StringPool.SLASH)) {
                continue;
            }

            String name = FileUtil.getShortFileName(resourcePath);

            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            addDDMStructures(parentStructureId, name, urlConnection.getInputStream());
        }
    }

    @Override
    protected void addDDMTemplates(String ddmStructureKey, String dirName) throws Exception {

        Set<String> resourcePaths = servletContext.getResourcePaths(resourcesDir.concat(dirName));

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            if (resourcePath.endsWith(StringPool.SLASH)) {
                continue;
            }

            String name = FileUtil.getShortFileName(resourcePath);

            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            addDDMTemplates(ddmStructureKey, name, urlConnection.getInputStream());
        }
    }

    @Override
    protected void addDLFileEntries(String dirName) throws Exception {
        Set<String> resourcePaths = servletContext.getResourcePaths(resourcesDir.concat(dirName));

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            if (resourcePath.endsWith(StringPool.SLASH)) {
                addDLFolder(DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, resourcePath);
            } else {
                addDLFileEntry(resourcePath);
            }
        }
    }

    protected void addDLFileEntry(String resourcePath) throws Exception {
        Long parentFolderId = _folderIds.get(FileUtil.getPath(resourcePath) + StringPool.SLASH);

        if (parentFolderId == null) {
            parentFolderId = 0L;
        }

        URL url = servletContext.getResource(resourcePath);

        URLConnection urlConnection = url.openConnection();

        addDLFileEntry(parentFolderId, FileUtil.getShortFileName(resourcePath), urlConnection.getInputStream(),
                urlConnection.getContentLength());
    }

    @Override
    protected long addDLFolder(long parentFolderId, String resourcePath) throws Exception {

        long folderId = super.addDLFolder(parentFolderId,
                FileUtil.getShortFileName(FileUtil.getPath(resourcePath)));

        _folderIds.put(resourcePath, folderId);

        Set<String> resourcePaths = servletContext.getResourcePaths(resourcePath);

        if ((resourcePaths == null) || resourcePaths.isEmpty()) {
            return folderId;
        }

        for (String curResourcePath : resourcePaths) {
            if (curResourcePath.endsWith(StringPool.SLASH)) {
                addDLFolder(folderId, curResourcePath);
            } else {
                addDLFileEntry(curResourcePath);
            }
        }

        return folderId;
    }

    @Override
    protected void addJournalArticles(String ddmStructureKey, String ddmTemplateKey, String dirName)
            throws Exception {

        Set<String> resourcePaths = servletContext.getResourcePaths(resourcesDir.concat(dirName));

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            if (resourcePath.endsWith(StringPool.SLASH)) {
                continue;
            }

            String name = FileUtil.getShortFileName(resourcePath);

            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            addJournalArticles(ddmStructureKey, ddmTemplateKey, name, urlConnection.getInputStream());
        }
    }

    @Override
    protected void addLayoutPrototype(String dirName) throws Exception {
        Set<String> resourcePaths = servletContext.getResourcePaths(resourcesDir.concat(dirName));

        if (resourcePaths == null) {
            return;
        }

        for (String resourcePath : resourcePaths) {
            String extension = FileUtil.getExtension(resourcePath);

            if (!extension.equals("json")) {
                return;
            }

            URL url = servletContext.getResource(resourcePath);

            URLConnection urlConnection = url.openConnection();

            addLayoutPrototype(urlConnection.getInputStream());
        }
    }

    @Override
    protected InputStream getInputStream(String fileName) throws Exception {
        URL url = servletContext.getResource(resourcesDir.concat(fileName));

        if (url == null) {
            return null;
        }

        URLConnection urlConnection = url.openConnection();

        return urlConnection.getInputStream();
    }

    private Map<String, Long> _folderIds = new HashMap<String, Long>();

}