package org.pentaho.platform.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class RepositoryPathEncoder {
/**
* Use this function to escape the "colonized" path for addition to a url.
*
* @param value
* The colonized string (eg: ":public:Steel Wheels:File::WithColon")
* @return Escaped version of value (eg: "%3Apublic%3ASteel%20Wheels%3AFile%3A%3AWithColon")
*/
public static String encode( String value ) {
String encoded = encodeURIComponent( value );
return encoded.replace( "%5C", "%255C" ).replace( "%2F", "%252F" );
}
/**
* Encodes a string using the equivalent of a javascript's <code>encodeURIComponent</code>
*
* @param value
* The String to be encoded
* @return the encoded String
*/
public static String encodeURIComponent( String value ) {
String encoded = null;
try {
encoded =
URLEncoder.encode( value, "UTF-8" ).replaceAll( "\\+", "%20" ).replaceAll( "\\%21", "!" ).replaceAll(
"\\%27", "'" ).replaceAll( "\\%28", "(" ).replaceAll( "\\%29", ")" ).replaceAll( "\\%7E", "~" );
}
catch ( UnsupportedEncodingException e ) {
//Should not happen
encoded = value;
}
return encoded;
}
public static String encodeRepositoryPath( String path ) {
return path.replace( ":", "\t" ).replace( "/", ":" );
}
public static String decodeRepositoryPath( String path ) {
return path.replace( ":", "/" ).replace( "\t", ":" );
}
}