pt.webdetails.cdf.dd.reader.factory.ResourceLoaderFactory.java Source code

Java tutorial

Introduction

Here is the source code for pt.webdetails.cdf.dd.reader.factory.ResourceLoaderFactory.java

Source

/*!
 * Copyright 2002 - 2015 Webdetails, a Pentaho company. All rights reserved.
 *
 * This software was developed by Webdetails and is provided under the terms
 * of the Mozilla Public License, Version 2.0, or any later version. You may not use
 * this file except in compliance with the license. If you need a copy of the license,
 * please go to http://mozilla.org/MPL/2.0/. The Initial Developer is Webdetails.
 *
 * Software distributed under the Mozilla Public License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
 * the license for the specific language governing your rights and limitations.
 */

package pt.webdetails.cdf.dd.reader.factory;

import org.apache.commons.lang.StringUtils;
import pt.webdetails.cdf.dd.CdeEngine;
import pt.webdetails.cdf.dd.ICdeEnvironment;
import pt.webdetails.cdf.dd.util.CdeEnvironment;
import pt.webdetails.cpf.repository.api.IContentAccessFactory;

public class ResourceLoaderFactory {

    public ResourceLoaderFactory() {
    }

    public IResourceLoader getResourceLoader(String dashboardPath) {
        if (isSystem(dashboardPath)) {
            return getSystemResourceLoader(dashboardPath);
        } else {
            return getSolutionResourceLoader(dashboardPath);
        }
    }

    protected boolean isSystem(String path) {
        if (path.isEmpty()) {
            return false;
        }

        ICdeEnvironment env = getCdeEnvironment();
        IContentAccessFactory factory = getContentAccessFactory(env);

        path = StringUtils.strip(path.toLowerCase(), "/");

        if (path.startsWith(getSystemDir(env))) {
            return true;

        } else if (path.startsWith(getPluginRepositoryDir(env))) {
            return false;

        } else {
            if (isSystemStaticResource(factory, path)) {
                return true;

            } else if (isRepositoryStaticResource(factory, path)) {
                return false;

            }
        }
        return false;
    }

    protected SystemResourceLoader getSystemResourceLoader(String path) {
        return new SystemResourceLoader(path);
    }

    protected SolutionResourceLoader getSolutionResourceLoader(String path) {
        return new SolutionResourceLoader(path);
    }

    protected ICdeEnvironment getCdeEnvironment() {
        return CdeEngine.getInstance().getEnvironment();
    }

    protected IContentAccessFactory getContentAccessFactory(ICdeEnvironment environment) {
        return environment.getContentAccessFactory();
    }

    protected String getSystemDir(ICdeEnvironment environment) {
        return environment.getSystemDir() + "/";
    }

    protected String getPluginRepositoryDir(ICdeEnvironment environment) {
        return environment.getPluginRepositoryDir() + "/";
    }

    protected boolean isSystemStaticResource(IContentAccessFactory factory, String path) {
        return factory.getPluginSystemReader(null).fileExists(path);
    }

    protected boolean isRepositoryStaticResource(IContentAccessFactory factory, String path) {
        return factory.getUserContentAccess(null).fileExists(path);
    }

}