/*
* Copyright 2003 Federal Chancellery Austria
* MOA-ID has been developed in a cooperation between BRZ, the Federal
* Chancellery Austria - ICT staff unit, and Graz University of Technology.
*
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
* http://www.osor.eu/eupl/
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*
* This product combines work with different licenses. See the "NOTICE" text
* file for details on the various modules and licenses.
* The "NOTICE" text file is part of the distribution. Any derivative works
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
package at.gv.egovernment.moaspss.util;
import java.util.StringTokenizer;
/**
* Utitility functions for string manipulations.
*
* @author Harald Bratko
*/
public class StringUtils {
/**
* Removes all blanks and tabs from the given string.
*
* @param s The string to remove all blanks and tabs from.
* @return The input string with all blanks and tabs removed from.
*/
public static String removeBlanks(String s) {
final StringTokenizer st = new StringTokenizer(s);
final StringBuffer sb = new StringBuffer(s.length());
while (st.hasMoreTokens()) {
sb.append(st.nextToken());
}
return sb.toString();
}
/**
* Removes all occurences of the specified token from the the given string.
*
* @param s The string to remove all occurences of the specified token from.
* @return The input string with all occurences of the specified token removed
* from.
*/
public static String removeToken(String s, String token) {
final StringTokenizer st = new StringTokenizer(s, token);
final StringBuffer sb = new StringBuffer(s.length());
while (st.hasMoreTokens()) {
sb.append(st.nextToken());
}
return sb.toString();
}
/**
* Removes all leading zeros from the input string.
*
* @param s The string remove the leading zeros from.
* @return The input string with the leading zeros removed from.
*/
public static String deleteLeadingZeros(String s) {
final StringBuffer sb = new StringBuffer(s);
final int l = sb.length();
int j = 0;
for (int i = 0; i < l; i++) {
if (sb.charAt(i) == '0') {
j++;
} else {
break;
}
}
return sb.substring(j, l);
}
/**
* Replaces each substring of string s
that matches the given
* search
string by the given replace
string.
*
* @param s The string where the replacement should take place.
* @param search The pattern that should be replaced.
* @param replace The string that should replace all each search
* string within s
.
* @return A string where all occurrence of search
are replaced
* with replace
.
*/
public static String replaceAll(String s, String search, String replace) {
final StringBuffer sb = new StringBuffer();
int i = 0, j = 0;
final int len = search.length();
while (j > -1) {
j = s.indexOf(search, i);
if (j > -1) {
sb.append(s.substring(i, j));
sb.append(replace);
i = j + len;
}
}
sb.append(s.substring(i, s.length()));
return sb.toString();
}
/**
* Changes the SecurityLayer version in the given string. This method usually
* takes as input an XML structure represented in a string format and changes
* the SecurityLayer namespaces prefixes and URIs from one SecurityLayer version
* to another. e.g.: code>sl10 to sl
and
* http://www.buergerkarte.at/namespaces/securitylayer/20020225#
to
* http://www.buergerkarte.at/namespaces/securitylayer/1.2#
*
* @param s The string (usally an XML structure) where the
* SecurityLayer version should be changed.
* @param slPrefixOld The SecurityLayer namespace prefix that should be replaced
* by the new one.
* @param slPrefixNew The new SecurityLayer namespace prefix that should replace
* the old one.
* @param slNSUriOld The SecurityLayer namespace URI that should be replaced by
* the new one.
* @param slNSUriNew The new SecurityLayer namespace URI that should replace
* the old one.
* @return A string where the SecurityLayer namespace prefixes and URIs are
* replaced by new ones.
*/
public static String changeSLVersion(String s, String slPrefixOld, String slPrefixNew, String slNSUriOld,
String slNSUriNew) {
String retString = replaceAll(s, slPrefixOld, slPrefixNew);
retString = replaceAll(retString, slNSUriOld, slNSUriNew);
return retString;
}
/**
* Removes the XML declaration from an XML expression.
*
* @param xmlString XML expression as String
*
* @return XML expression, XML declaration removed
*/
public static String removeXMLDeclaration(String xmlString) {
if (xmlString != null && xmlString.startsWith("