// ============================================================================
//
// %GENERATED_LICENSE%
//
// ============================================================================
package routines;
import java.util.Random;
import java.util.Vector;
public class TalendString {
/** Index of the first accent character **/
private static final int MIN = 192;
/** Index of the last accent character **/
private static final int MAX = 255;
/** used to save the link between with or without accents **/
private static final Vector map = initMap();
public static Vector getMap() {
return map;
}
/**
* return Replace the special character(e.g. <,>,& etc) within a string for XML file.
*
*
* {talendTypes} String
*
* {Category} TalendString
*
* {param} string("") input: The string with the special character(s) need to be replaced.
*
* {example} replaceSpecialCharForXML("
Empire <>Burlesque") # Empire <>Burlesque
*/
public static String replaceSpecialCharForXML(String input) {
input = input.replaceAll("&", "&"); //$NON-NLS-1$ //$NON-NLS-2$
input = input.replaceAll("<", "<"); //$NON-NLS-1$ //$NON-NLS-2$
input = input.replaceAll(">", ">"); //$NON-NLS-1$ //$NON-NLS-2$
input = input.replaceAll("'", "'"); //$NON-NLS-1$ //$NON-NLS-2$
input = input.replaceAll("\"", """); //$NON-NLS-1$ //$NON-NLS-2$
return input;
}
/**
* check CDATA for xml
*
* {talendTypes} String
*
* {Category} TalendString
*
* {param} string("") input: the CDATA format data to be checked.
*/
public static String checkCDATAForXML(String input) {
if (input.startsWith("")) { //$NON-NLS-1$ //$NON-NLS-2$
return input;
} else {
return TalendString.replaceSpecialCharForXML(input);
}
}
/**
* getAsciiRandomString : Return a randomly generated String
*
*
* {talendTypes} String
*
* {Category} TalendString
*
* {param} int(6) length: length of the String to return
*
* {example} getAsciiRandomString(6) # Art34Z
*/
public static String getAsciiRandomString(int length) {
Random random = new Random();
int cnt = 0;
StringBuffer buffer = new StringBuffer();
char ch;
int end = 'z' + 1;
int start = ' ';
while (cnt < length) {
ch = (char) (random.nextInt(end - start) + start);
if (Character.isLetterOrDigit(ch)) {
buffer.append(ch);
cnt++;
}
}
return buffer.toString();
}
/**
* talendTrim: Returns a copy of the string, with leading and trailing specified char omitted.
*
*
* {talendTypes} String
*
* {Category} TalendString
*
* {param} string("") origin: The original string need to be trimed.
*
* {param} char(' ') padding_char: The padding char for triming.
*
* {param} int(0) align: The alignment of the content in the original string. Positive int for right, negative int
* for left and zero for center. Positive integer to trim the left part, zero to trim both the left and the right part, negative to trim the right part.
*
*
* {example} talendTrim("$$talend open studio$$$$", '$', 0) # talend open studio
*/
public static String talendTrim(String origin, char padding_char, int align) {
if (null == origin) {
return null;
}
String sPaddingChar = quoteChars(Character.toString(padding_char));
if (align > 0) {// positive integer to trim left
origin = origin.replaceAll("^" + sPaddingChar + "+", "");
} else if (align == 0) {// zero to trim both left and right
origin = origin.replaceAll("^" + sPaddingChar + "+", "");
origin = origin.replaceAll(sPaddingChar + "+$", "");
} else if (align < 0) {// negative integer to trim right
origin = origin.replaceAll(sPaddingChar + "+$", "");
}
return origin;
}
private static String quoteChars( String padding_chars){
StringBuffer sb = new StringBuffer();
for (int i = 0; i < padding_chars.length(); i++) {
char c = padding_chars.charAt(i);
if (!(Character.isLetterOrDigit(c) || c == '_')) {
sb.append('\\');
sb.append(c);
} else {
sb.append(c);
}
}
return sb.toString();
}
/**
* self definition:escape char ,for example -->'\\'
*/
public static String addEscapeChars(String padding_chars,char escapeChar){
StringBuffer sb = new StringBuffer();
for (int i = 0; i < padding_chars.length(); i++) {
char c = padding_chars.charAt(i);
if (!(Character.isLetterOrDigit(c) || c == '_'||Character.isWhitespace(c))) {
sb.append(escapeChar);
sb.append(c);
} else {
sb.append(c);
}
}
return sb.toString();
}
/**
* Initialisation of the map for the accents.
*/
private static Vector initMap() {
Vector result = new Vector();
String car = null;
car = new String("A"); //$NON-NLS-1$
result.add(car); /* '\u00C0' alt-0192 */
result.add(car); /* '\u00C1' alt-0193 */
result.add(car); /* '\u00C2' alt-0194 */
result.add(car); /* '\u00C3' alt-0195 */
result.add(car); /* '\u00C4' alt-0196 */
result.add(car); /* '\u00C5' alt-0197 */
car = new String("AE"); //$NON-NLS-1$
result.add(car); /* '\u00C6' alt-0198 */
car = new String("C"); //$NON-NLS-1$
result.add(car); /* '\u00C7' alt-0199 */
car = new String("E"); //$NON-NLS-1$
result.add(car); /* '\u00C8' alt-0200 */
result.add(car); /* '\u00C9' alt-0201 */
result.add(car); /* '\u00CA' alt-0202 */
result.add(car); /* '\u00CB' alt-0203 */
car = new String("I"); //$NON-NLS-1$
result.add(car); /* '\u00CC' alt-0204 */
result.add(car); /* '\u00CD' alt-0205 */
result.add(car); /* '\u00CE' alt-0206 */
result.add(car); /* '\u00CF' alt-0207 */
car = new String("D"); //$NON-NLS-1$
result.add(car); /* '\u00D0' alt-0208 */
car = new String("N"); //$NON-NLS-1$
result.add(car); /* '\u00D1' alt-0209 */
car = new String("O"); //$NON-NLS-1$
result.add(car); /* '\u00D2' alt-0210 */
result.add(car); /* '\u00D3' alt-0211 */
result.add(car); /* '\u00D4' alt-0212 */
result.add(car); /* '\u00D5' alt-0213 */
result.add(car); /* '\u00D6' alt-0214 */
car = new String("*"); //$NON-NLS-1$
result.add(car); /* '\u00D7' alt-0215 */
car = new String("0"); //$NON-NLS-1$
result.add(car); /* '\u00D8' alt-0216 */
car = new String("U"); //$NON-NLS-1$
result.add(car); /* '\u00D9' alt-0217 */
result.add(car); /* '\u00DA' alt-0218 */
result.add(car); /* '\u00DB' alt-0219 */
result.add(car); /* '\u00DC' alt-0220 */
car = new String("Y"); //$NON-NLS-1$
result.add(car); /* '\u00DD' alt-0221 */
car = new String("_"); //$NON-NLS-1$
result.add(car); /* '\u00DE' alt-0222 */
car = new String("B"); //$NON-NLS-1$
result.add(car); /* '\u00DF' alt-0223 */
car = new String("a"); //$NON-NLS-1$
result.add(car); /* '\u00E0' alt-0224 */
result.add(car); /* '\u00E1' alt-0225 */
result.add(car); /* '\u00E2' alt-0226 */
result.add(car); /* '\u00E3' alt-0227 */
result.add(car); /* '\u00E4' alt-0228 */
result.add(car); /* '\u00E5' alt-0229 */
car = new String("ae"); //$NON-NLS-1$
result.add(car); /* '\u00E6' alt-0230 */
car = new String("c"); //$NON-NLS-1$
result.add(car); /* '\u00E7' alt-0231 */
car = new String("e"); //$NON-NLS-1$
result.add(car); /* '\u00E8' alt-0232 */
result.add(car); /* '\u00E9' alt-0233 */
result.add(car); /* '\u00EA' alt-0234 */
result.add(car); /* '\u00EB' alt-0235 */
car = new String("i"); //$NON-NLS-1$
result.add(car); /* '\u00EC' alt-0236 */
result.add(car); /* '\u00ED' alt-0237 */
result.add(car); /* '\u00EE' alt-0238 */
result.add(car); /* '\u00EF' alt-0239 */
car = new String("d"); //$NON-NLS-1$
result.add(car); /* '\u00F0' alt-0240 */
car = new String("n"); //$NON-NLS-1$
result.add(car); /* '\u00F1' alt-0241 */
car = new String("o"); //$NON-NLS-1$
result.add(car); /* '\u00F2' alt-0242 */
result.add(car); /* '\u00F3' alt-0243 */
result.add(car); /* '\u00F4' alt-0244 */
result.add(car); /* '\u00F5' alt-0245 */
result.add(car); /* '\u00F6' alt-0246 */
car = new String("/"); //$NON-NLS-1$
result.add(car); /* '\u00F7' alt-0247 */
car = new String("0"); //$NON-NLS-1$
result.add(car); /* '\u00F8' alt-0248 */
car = new String("u"); //$NON-NLS-1$
result.add(car); /* '\u00F9' alt-0249 */
result.add(car); /* '\u00FA' alt-0250 */
result.add(car); /* '\u00FB' alt-0251 */
result.add(car); /* '\u00FC' alt-0252 */
car = new String("y"); //$NON-NLS-1$
result.add(car); /* '\u00FD' alt-0253 */
car = new String("_"); //$NON-NLS-1$
result.add(car); /* '\u00FE' alt-0254 */
car = new String("y"); //$NON-NLS-1$
result.add(car); /* '\u00FF' alt-0255 */
result.add(car); /* '\u00FF' alt-0255 */
return result;
}
/**
* removeAccents: remove accents from the string given.
*
*
* {talendTypes} String
*
* {Category} TalendString
*
* {param} string("") text: Text to remove accents.
*
*
* {example} removeAccents("Accès à la base")
*/
public static String removeAccents(String text) {
StringBuffer result = new StringBuffer();
for (int bcl = 0; bcl < text.length(); bcl++) {
char carVal = text.charAt(bcl);
if (carVal >= 192 && carVal <= 255) {
String newVal = (String) map.get(carVal - 192);
result.append(newVal);
} else {
result.append(carVal);
}
}
return result.toString();
}
/**
* unionString: Union the variable number of arguments with separator String
*
* @param separator union arguments .
* @param objects variable number of arguments.
* @return A union string.
*
* {talendTypes} String
*
* {Category} TalendString
*
*/
public static String unionString(String separator,Object... objects){
if(objects!=null){
String value = "";
boolean isFirst = true;
for(Object obj:objects){
if(isFirst){
value = String.valueOf(obj);
isFirst = false;
}else{
value = value +separator + String.valueOf(obj);
}
}
return value;
}else{
return null;
}
}
}