Package com.liferay.resourcesimporter.util

Source Code of com.liferay.resourcesimporter.util.ResourceImporter

/**
* Copyright (c) 2000-2013 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 {


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


  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);
    }
  }


  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);
    }
  }


  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);
    }
  }


  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());
    }
  }


  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());
    }
  }


  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());
    }
  }


  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());
  }


  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;
  }


  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());
    }
  }


  protected void addLayoutTemplate(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();

      addLayoutTemplate(urlConnection.getInputStream());
    }
  }


  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>();

}
TOP

Related Classes of com.liferay.resourcesimporter.util.ResourceImporter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.