diff options
| -rw-r--r-- | common/src/at/gv/egovernment/moa/util/StringUtils.java | 148 | 
1 files changed, 148 insertions, 0 deletions
| diff --git a/common/src/at/gv/egovernment/moa/util/StringUtils.java b/common/src/at/gv/egovernment/moa/util/StringUtils.java new file mode 100644 index 000000000..0ad5c515c --- /dev/null +++ b/common/src/at/gv/egovernment/moa/util/StringUtils.java @@ -0,0 +1,148 @@ +// Copyright (C) 2002 IAIK +// email: jce-info@iaik.tu-graz.ac.at +// +// All rights reserved. +// +// This source is provided for inspection purposes and recompilation only, +// unless specified differently in a contract with IAIK. This source has to +// be kept in strict confidence and must not be disclosed to any third party +// under any circumstances. Redistribution in source and binary forms, with +// or without modification, are <not> permitted in any case! +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +// SUCH DAMAGE. +// + +package at.gv.egovernment.moa.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) { +    StringTokenizer st = new StringTokenizer(s); +    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) { +    StringTokenizer st = new StringTokenizer(s, token); +    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) { +    StringBuffer sb = new StringBuffer(s); +    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 <code>s</code> that matches the given +   * <code>search</code> string by the given <code>replace</code> string. +   *  +   * @param s         The string where the replacment should take place. +   * @param search    The pattern that should be replaced. +   * @param replace   The string that should replace all each <code>search</code> +   *                  string within <code>s</code>. +   * @return          A string whrer all occurrence of <code>search</code> are +   *                  replaced with <code>replace</code>. +   */ +  public static String replaceAll (String s, String search, String replace) +  { +     StringBuffer sb = new StringBuffer(); +     int i = 0, j = 0; +     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</code> to <code>sl</code> and  +   * <code>http://www.buergerkarte.at/namespaces/securitylayer/20020225#</code> +   * to +   * <code>http://www.buergerkarte.at/namespaces/securitylayer/1.2#</code>  +   *  +   * @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 ; +  } +   +} | 
