Package railo.runtime.net.ftp

Source Code of railo.runtime.net.ftp.FTPPath

package railo.runtime.net.ftp;

import railo.runtime.PageContext;
import railo.runtime.dump.DumpData;
import railo.runtime.dump.DumpProperties;
import railo.runtime.dump.DumpTable;
import railo.runtime.dump.Dumpable;
import railo.runtime.dump.SimpleDumpData;
import railo.runtime.exp.PageException;
import railo.runtime.functions.arrays.ArrayMerge;
import railo.runtime.type.Array;
import railo.runtime.type.util.ListUtil;

/**
* represent a ftp path
*/
public final class FTPPath implements Dumpable{
   
    private String path;
    private String name;
    //private Array arrPath;

    /**
     * @param current
     * @param realpath
     * @throws PageException
     */
    public FTPPath(String current, String realpath) throws PageException {
        realpath=realpath.replace('\\','/');
        //if(realpath.startsWith("./")) realpath=realpath.substring(2);
        //if(realpath.startsWith(".")) realpath=realpath.substring(1);
        Array realpathArr=ListUtil.listToArrayTrim(realpath,'/');

        // realpath is absolute
        if(realpath.startsWith("/")) {
            init(realpathArr);
            return;
        }
        if(current==null)current="";
        else current=current.replace('\\','/');
        Array parentArr=ListUtil.listToArrayTrim(current,'/');
       
        // Single Dot .
        if(realpathArr.size()>0&&realpathArr.get(1,"").equals(".")) {
            realpathArr.removeEL(1);
        }
       
        // Double Dot ..
        while(realpathArr.size()>0&&realpathArr.get(1,"").equals("..")) {
            realpathArr.removeEL(1);
            if(parentArr.size()>0) {
                parentArr.removeEL(parentArr.size());
            }
            else {
                parentArr.prepend("..");
            }
    }
        ArrayMerge.append(parentArr,realpathArr);
        init(parentArr);
    }
   
    private void init(Array arr) throws PageException {
        if(arr.size()>0) {
          this.name=(String)arr.get(arr.size(),"");
          arr.removeEL(arr.size());
          this.path='/'+ListUtil.arrayToList(arr,"/")+'/';
        }
        else {
            this.path="/";
            this.name="";
        }
        //this.arrPath=arr;
    }
   
    /**
     * @return Returns the name.
     */
    public String getName() {
        return name;
    }
    /**
     * @return Returns the path.
     */
    public String getPath() {
        return path;
    }
   
    @Override
    public String toString() {
        return path+name;//+" - "+"path("+getPath()+");"+"name("+getName()+");"+"parent("+getParentPath()+");";
    }
   
    @Override
  public DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties dp) {
    DumpTable table = new DumpTable("string","#ff6600","#ffcc99","#000000");
    table.appendRow(1,new SimpleDumpData("FTPPath"),new SimpleDumpData(toString()));
    return table;
    }
}
TOP

Related Classes of railo.runtime.net.ftp.FTPPath

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.