Package pt.webdetails.cdf.dd

Source Code of pt.webdetails.cdf.dd.FsPluginResourceLocations

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

package pt.webdetails.cdf.dd;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Element;
import org.pentaho.platform.api.engine.IPluginManager;
import org.pentaho.platform.engine.core.system.PentahoSystem;

import pt.webdetails.cpf.packager.origin.PathOrigin;
import pt.webdetails.cpf.packager.origin.OtherPluginStaticSystemOrigin;
import pt.webdetails.cdf.dd.util.CdeEnvironment;
import pt.webdetails.cpf.plugins.Plugin;
import pt.webdetails.cpf.plugins.PluginsAnalyzer;
import pt.webdetails.cpf.plugins.PluginsAnalyzer.PluginPair;

/**
* @author dcleao
*/
public final class FsPluginResourceLocations
{

  private List<PathOrigin> customComponentDirectories = new ArrayList<PathOrigin>();
 
  protected static final Log logger = LogFactory.getLog(FsPluginResourceLocations.class);

  public FsPluginResourceLocations()
  {
    initLocations();
  }


  public List<PathOrigin> getCustomComponentLocations() {
    return customComponentDirectories;
  }
  private void initLocations() {

    for (PathOrigin origin: CdeSettings.getCustomComponentLocations()){
        customComponentDirectories.add(origin);
    }

    // External component locations
    PluginsAnalyzer pluginsAnalyzer =
        new PluginsAnalyzer(CdeEnvironment.getContentAccessFactory(), PentahoSystem.get(IPluginManager.class));
    pluginsAnalyzer.refresh();

    // FIXME will fail often if not everytime
    for (PluginPair<List<Element>> entry : pluginsAnalyzer.getPluginsWithSection("/cde-components/path")) {
      for (Element pathNode : entry.getValue()) {
        String path = StringUtils.strip( pathNode.getStringValue() );
        String origin = pathNode.attributeValue("origin");//TODO:hcoded
        if (StringUtils.isEmpty(origin)) {
          //FIXME:
          customComponentDirectories.add(inferPathOriginFromLegacyLocation(entry.getPlugin(), path));
          logger.debug(String.format("Found CDE components location declared in %s [%s]", entry.getPlugin().getId(), path));
        }
      }

    }
  }

  private PathOrigin inferPathOriginFromLegacyLocation(Plugin plugin, String path) {
    //FIXME need extra method! and don't always assume system
    if (path.startsWith( "system" )) {
      path = StringUtils.removeStart( path, "system/" );
      path = path.substring( path.indexOf( "/" ) );
    }
    return new OtherPluginStaticSystemOrigin(plugin.getId(), path);
  }

}
TOP

Related Classes of pt.webdetails.cdf.dd.FsPluginResourceLocations

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.