package com.idega.util; import java.util.Locale; /** * Title: A class for formatting presentation of PersonalIDs * Description: * Copyright: Copyright (c) 2002 * Company: idega * @author <a href="tryggvi@idega.is">Tryggvi Larusson</a> * @version 1.0 */ public class PersonalIDFormatter { private static String DASH = "-"; private PersonalIDFormatter() { } /** * Accepts input in which is a valid personalID for a specific locale. * @return A formatted version of the personalID if the personalID is valid for the specified locale and the PersonalIDFormatter can handle the locale. **/ public static String format( String originalString, Locale locale) { if (originalString != null) { int length = originalString.length(); if (locale.equals(LocaleUtil.getSwedishLocale())) { if (length == 12) { return originalString.substring(2, 8) + DASH + originalString.substring(8, 12); } else if (length == 10) { return originalString.substring(0, 6) + DASH + originalString.substring(6, 10); } } else if (locale.equals(LocaleUtil.getIcelandicLocale())) { if (length == 10) { return originalString.substring(0, 6) + DASH + originalString.substring(6, 10); } } } return originalString; } /** * Strips all non-digit characters from the given id and puts a database wildcard in front of it * @param personalID * @return */ public static String stripForDatabaseSearch(String personalID){ return stripForDatabaseSearch(personalID,false); } /** * Strips all non-digit characters from the given id and puts a database wildcard in front and back of it * @param personalID * @param trailingWildCard * @return */ public static String stripForDatabaseSearch(String personalID,boolean trailingWildCard){ StringBuffer sb = new StringBuffer(); for (int i=0; i<personalID.length(); i++) { if (Character.isDigit(personalID.charAt(i))) { sb.append(personalID.charAt(i)); } } sb.insert(0,"%"); if(trailingWildCard) { sb.append("%"); } //System.err.println("changing "+s+" to "+sb.toString()); return sb.toString(); } public static void main(String[] args){ test(args); } public static void test(String[] args){ String personalID= null; String localeString=null; try{ personalID=args[0]; localeString=args[1]; } catch(RuntimeException rme){} if(personalID==null){ personalID="197811103433"; } if(localeString==null){ localeString="sv_SE"; } System.out.println("Output: "+format(personalID,LocaleUtil.getLocale(localeString))); } }