Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/PathHelper.java')
-rw-r--r--core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/PathHelper.java152
1 files changed, 152 insertions, 0 deletions
diff --git a/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/PathHelper.java b/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/PathHelper.java
new file mode 100644
index 0000000000..b83508559c
--- /dev/null
+++ b/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/util/PathHelper.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Jens Lukowski/Innoopract - initial renaming/restructuring
+ * David Carver (Intalio) - bug 300430 - String concatenation
+ *
+ *******************************************************************************/
+package org.eclipse.wst.sse.core.internal.util;
+
+
+
+import java.io.File;
+import com.ibm.icu.util.StringTokenizer;
+
+/**
+ * Collection of helper methods to manage and convert links Originally part of
+ * the LinksManager
+ */
+public class PathHelper {
+ public static final String BACKWARD_SLASH = "\\";//$NON-NLS-1$
+
+ public static final String FORWARD_SLASH = "/";//$NON-NLS-1$
+ public static final String RELATIVE_PATH_SIG = "../";//$NON-NLS-1$
+
+ /**
+ * adjust relative path isside the absolute path
+ */
+ public static String adjustPath(String path) {
+ int i = 0;
+ while ((i = path.indexOf(RELATIVE_PATH_SIG)) > 0) {
+ // split the string into two
+ String part1 = path.substring(0, i - 1);
+ String part2 = path.substring(i + RELATIVE_PATH_SIG.length() - 1);
+ // strip one path seg from part1
+ int j = part1.lastIndexOf(FORWARD_SLASH);
+ if (j == -1) {
+ // can't resolve. passed path is like
+ // E:/eclipseproject/../../sample.css.
+ return "";//$NON-NLS-1$
+ }
+ part1 = part1.substring(0, j);
+ path = part1 + part2;
+ }
+ return path;
+ }
+
+ /**
+ * Append trailing url slash if needed
+ */
+ public static String appendTrailingURLSlash(String input) {
+ // check to see already a slash
+ if (!input.endsWith(FORWARD_SLASH)) {
+ input += FORWARD_SLASH;
+ }
+ return input;
+ }
+
+ /**
+ * Convert to relative url based on base
+ */
+ public static String convertToRelative(String input, String base) {
+ // tokenize the strings
+ StringTokenizer inputTokenizer = new StringTokenizer(input, FORWARD_SLASH);
+ StringTokenizer baseTokenizer = new StringTokenizer(base, FORWARD_SLASH);
+ String token1 = "", token2 = "";//$NON-NLS-2$//$NON-NLS-1$
+ //
+ // Go through until equls
+ while (true) {
+ if (!inputTokenizer.hasMoreTokens() || !baseTokenizer.hasMoreTokens())
+ break;
+ token1 = baseTokenizer.nextToken();
+ token2 = inputTokenizer.nextToken();
+ if (!token1.equals(token2))
+ break;
+ }
+ // now generate the backs
+ String output = "";//$NON-NLS-1$
+ StringBuffer sb = new StringBuffer(output);
+ while (baseTokenizer.hasMoreTokens()) {
+ baseTokenizer.nextToken();
+ sb.append("../"); //$NON-NLS-1$
+ }
+ sb.append(token2);
+ // generate the rest
+ while (inputTokenizer.hasMoreTokens()) {
+ sb.append(FORWARD_SLASH);
+ sb.append(inputTokenizer.nextToken());
+ }
+ output = sb.toString();
+ return output;
+ }
+
+ /**
+ * Return the containing folder path. Will handle both url and file path
+ */
+ public static String getContainingFolderPath(String path) {
+ String retValue = path;
+
+ int urlSlashIndex = path.lastIndexOf(FORWARD_SLASH);
+ int filePathSlashIndex = path.lastIndexOf(File.separator);
+ int index = filePathSlashIndex;
+ if (urlSlashIndex > filePathSlashIndex)
+ index = urlSlashIndex;
+ if (index >= 0)
+ retValue = path.substring(0, index);
+ return retValue;
+ }
+
+ /**
+ * Remove leading path separator
+ */
+ public static String removeLeadingPathSeparator(String path) {
+ if (path.startsWith(File.separator))
+ path = path.substring(File.separator.length());
+ return path;
+ }
+
+ /**
+ * Remove leading path separator
+ */
+ public static String removeLeadingSeparator(String path) {
+ if (path.startsWith(File.separator))
+ path = path.substring(File.separator.length());
+ else if (path.startsWith(FORWARD_SLASH) || path.startsWith(BACKWARD_SLASH))
+ path = path.substring(FORWARD_SLASH.length());
+ return path;
+ }
+
+ /**
+ * Switch to file path slashes
+ */
+ public static String switchToFilePathSlashes(String path) {
+ path = path.replace(FORWARD_SLASH.charAt(0), File.separatorChar);
+ path = path.replace(BACKWARD_SLASH.charAt(0), File.separatorChar);
+ return path;
+ }
+
+ /**
+ * Switch to file path slashes
+ */
+ public static String switchToForwardSlashes(String path) {
+ path = path.replace(File.separatorChar, FORWARD_SLASH.charAt(0));
+ path = path.replace(BACKWARD_SLASH.charAt(0), FORWARD_SLASH.charAt(0));
+ return path;
+ }
+}

Back to the top