package org.trianacode.http; import org.thinginitself.http.util.Coder; import org.trianacode.taskgraph.tool.Tool; import org.trianacode.taskgraph.tool.Toolbox; /** * @author Andrew Harrison * @version 1.0.0 Oct 30, 2010 */ public class PathController { private static PathController pathController = new PathController(); private PathController() { } public static PathController getInstance() { return pathController; } public String getToolboxes() { return "toolboxes/"; } public String getResources() { return "files/"; } public String getRoot() { return "/triana/"; } public String getToolboxesRoot() { return getRoot() + getToolboxes(); } public String getResourcesRoot() { return getRoot() + getResources(); } public String getToolboxPath(Toolbox toolbox) { return getToolboxesRoot() + Coder.encodeUTF8(toolbox.getName()) + "/"; } public String getToolboxPath(String toolbox) { return getToolboxesRoot() + Coder.encodeUTF8(toolbox) + "/"; } public String getToolPart(String toolbox, String path) { if (path.startsWith(getToolboxesRoot())) { String root = path.substring(getToolboxesRoot().length()); if (!root.startsWith(toolbox)) { return null; } String tool = root.substring(toolbox.length(), root.length()); while (tool.startsWith("/")) { tool = tool.substring(1); } return tool; } return null; } public String getToolboxPart(String path) { if (path.startsWith(getToolboxesRoot())) { String tool = path.substring(getToolboxesRoot().length()); while (tool.startsWith("/")) { tool = tool.substring(1); } while (tool.endsWith("/")) { tool = tool.substring(0, tool.length() - 1); } return tool; } return null; } public String getToolPath(Tool tool) { Toolbox tb = tool.getToolBox(); StringBuilder sb = new StringBuilder(); String[] comps = tool.getQualifiedToolName().split("\\."); for (String comp : comps) { sb.append(Coder.encodeUTF8(comp)).append("/"); } if (tb != null) { return getToolboxPath(tb) + sb.toString(); } return getRoot() + sb.toString(); } }