1/* 2 ******************************************************************************* 3 * Copyright (C) 2011-2012, Google, International Business Machines Corporation and * 4 * others. All Rights Reserved. * 5 ******************************************************************************* 6 */ 7package com.ibm.icu.dev.util; 8 9import com.ibm.icu.text.Transform; 10import com.ibm.icu.text.UTF16; 11 12/** 13 * Simple wrapping for normalizer that allows for both the standard ICU normalizer, and one built directly from the UCD. 14 */ 15public abstract class UnicodeTransform implements Transform<String,String> { 16 public enum Type { 17 NFD, NFC, NFKD, NFKC, CASEFOLD 18 } 19 20 public interface Factory { 21 public UnicodeTransform getInstance(Type type); 22 } 23 24 private static Factory factory = new IcuUnicodeNormalizerFactory(); 25 26 public static synchronized Factory getFactory() { 27 return factory; 28 } 29 30 public static synchronized void setFactory(Factory factory) { 31 UnicodeTransform.factory = factory; 32 } 33 34 public static synchronized UnicodeTransform getInstance(Type type) { 35 return factory.getInstance(type); 36 } 37 38 public abstract String transform(String source); 39 40 /** 41 * Can be overridden for performance. 42 */ 43 public boolean isTransformed(String source) { 44 return source.equals(transform(source)); 45 } 46 /** 47 * Can be overridden for performance. 48 */ 49 public String transform(int source) { 50 return transform(UTF16.valueOf(source)); 51 } 52 /** 53 * Can be overridden for performance. 54 */ 55 public boolean isTransformed(int source) { 56 return isTransformed(UTF16.valueOf(source)); 57 } 58} 59 60