All Downloads are FREE. Search and download functionalities are using the official Maven repository.

rapture.common.dp.WorkflowPathBuilder Maven / Gradle / Ivy

/**
 * The MIT License (MIT)
 *
 * Copyright (C) 2011-2016 Incapture Technologies LLC
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

/**
 * This file is autogenerated and any changes will be overwritten.
 */

package rapture.common.dp;

import rapture.common.RaptureConstants;
import rapture.common.RaptureURI;
import rapture.object.storage.StorageLocationFactory;
import rapture.object.storage.StoragePathBuilder;

import org.apache.log4j.Logger;
public class WorkflowPathBuilder implements StoragePathBuilder {
        private String workflowURI;

    /**
    * 
    */
        public WorkflowPathBuilder workflowURI(String workflowURI) {
            this.workflowURI = workflowURI;
            return this;
        }
        

    
    private static final Logger log = Logger.getLogger(WorkflowPathBuilder.class);

    public WorkflowPathBuilder() {
        
    }

    public String buildStoragePath() {
        StringBuilder builder = new StringBuilder();
                if (workflowURI != null) {
                    builder.append( workflowURI.toString() );
                    builder.append("/");
                }

        String ret = builder.toString();

        /**
           Multiple instances of : is illegal eg. foo://bar/baz/foo://bill/bob
           as is : anywhere after / eg. /foo:bar
        **/

        int start = ret.indexOf(":");
        if ((start != ret.lastIndexOf(":")) || (start > ret.indexOf("/"))) {
            String ret2 = ret.replaceAll("/[^/]*:", "");
            log.warn("Illegal storage path. "+ret+" - converted to "+ret2);
            ret = ret2;
        }

        /**
           Eliminate any multiple instances of / except at start or after : which is limited to two.  
           ////foo///bar becomes //foo/bar
           foo:///bar// becomes foo://bar/
           foo///bar becomes foo/bar 
        **/

        if (ret.length() > 0) {
            ret = ret.substring(0, start+2) + (ret.substring(start+2).replaceAll("//+","/"));
            return ret.substring(0, ret.length()-1);
        } else {
            return ret;
        }
    }

    public RaptureURI buildStorageLocation() {
        return StorageLocationFactory.createStorageLocation(getRepoName(), getPrefix(), buildStoragePath());
    }

    private static final String PREFIX = "dp/workflow" + "/";
    public static String getPrefix() {
        return PREFIX;
    }
    
    public String getIPrefix() {
    	return getPrefix();
    }

    public static String getRepoName() {
        return RaptureConstants.CONFIG_REPO;

    }

    public String getIRepoName() {
     	return getRepoName();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy