mirror of https://github.com/apache/cloudstack.git
112 lines
4.0 KiB
Java
112 lines
4.0 KiB
Java
/*
|
|
* Copyright (C) 2011 Citrix Systems, Inc. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package com.cloud.bridge.util;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
|
|
/**
|
|
* @author Kelven, John Zucker
|
|
* Provide converters for regexp (case independent tokens)
|
|
* Also provide upper case or lower case (default) converters for byte array b[] to hex String
|
|
*/
|
|
public class StringHelper {
|
|
public static final String EMPTY_STRING = "";
|
|
|
|
private static final char[] hexCharsUpperCase = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
|
|
|
|
private static final char[] hexCharsLowerCase = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' };
|
|
|
|
/* Convert byte array b[] into an uppercase hex string
|
|
*/
|
|
public static String toHexStringUpperCase(byte[] b) {
|
|
StringBuffer sb = new StringBuffer();
|
|
for (int i = 0; i < b.length; i++) {
|
|
sb.append(hexCharsUpperCase[ (int)(((int)b[i] >> 4) & 0x0f)]);
|
|
sb.append(hexCharsUpperCase[ (int)(((int)b[i]) & 0x0f)]);
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
/* Convert byte array b[] into a lowercase (default) hex string
|
|
*/
|
|
public static String toHexString(byte[] b) {
|
|
StringBuffer sb = new StringBuffer();
|
|
for (int i = 0; i < b.length; i++) {
|
|
sb.append(hexCharsLowerCase[ (int)(((int)b[i] >> 4) & 0x0f)]);
|
|
sb.append(hexCharsLowerCase[ (int)(((int)b[i]) & 0x0f)]);
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
public static String substringInBetween(String name,
|
|
String prefix, String delimiter) {
|
|
|
|
int startPos = 0;
|
|
if(prefix != null)
|
|
startPos = prefix.length() + 1;
|
|
|
|
int endPos = name.indexOf(delimiter, startPos);
|
|
if(endPos > 0)
|
|
return name.substring(startPos, endPos);
|
|
|
|
return null;
|
|
}
|
|
|
|
public static String stringFromStream(InputStream is) throws IOException {
|
|
StringBuffer sb = new StringBuffer();
|
|
byte[] b = new byte[4096];
|
|
int n;
|
|
while((n = is.read(b)) != -1) {
|
|
sb.append(new String(b, 0, n));
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
/**
|
|
* Convert the string into a regex to allow easy matching. In both S3 and EC2 regex strings
|
|
* are used for matching. We must remember to quote all special regex characters that appear
|
|
* in the string.
|
|
*/
|
|
public static String toRegex(String param)
|
|
{
|
|
StringBuffer regex = new StringBuffer();
|
|
for( int i=0; i < param.length(); i++ )
|
|
{
|
|
char next = param.charAt( i );
|
|
if ('*' == next) regex.append( ".+" ); // -> multi-character match wild card
|
|
else if ('?' == next) regex.append( "." ); // -> single-character match wild card
|
|
else if ('.' == next) regex.append( "\\." ); // all of these are special regex characters we are quoting
|
|
else if ('+' == next) regex.append( "\\+" );
|
|
else if ('$' == next) regex.append( "\\$" );
|
|
else if ('\\' == next) regex.append( "\\\\" );
|
|
else if ('[' == next) regex.append( "\\[" );
|
|
else if (']' == next) regex.append( "\\]" );
|
|
else if ('{' == next) regex.append( "\\{" );
|
|
else if ('}' == next) regex.append( "\\}" );
|
|
else if ('(' == next) regex.append( "\\(" );
|
|
else if (')' == next) regex.append( "\\)" );
|
|
else if ('&' == next) regex.append( "\\&" );
|
|
else if ('^' == next) regex.append( "\\^" );
|
|
else if ('-' == next) regex.append( "\\-" );
|
|
else if ('|' == next) regex.append( "\\|" );
|
|
else regex.append( next );
|
|
}
|
|
|
|
return regex.toString();
|
|
}
|
|
}
|