1 32 package net.sf.retrotranslator.runtime.format; 33 34 import java.util.*; 35 36 39 abstract class Conversion { 40 41 private static Map<String , Conversion> map = new HashMap<String , Conversion>(); 42 43 static { 44 put("b", "B", new GeneralConversion.BooleanConversion()); 45 put("h", "H", new GeneralConversion.HashConversion()); 46 put("s", "S", new GeneralConversion.StringConversion()); 47 put("c", "C", new CharacterConversion()); 48 put("d", null, new DecimalIntegralConversion()); 49 put("o", null, new NondecimalIntegralConversion.OctalConversion()); 50 put("x", "X", new NondecimalIntegralConversion.HexadecimalConversion()); 51 put("e", "E", new FloatingPointConversion.ComputerizedScientificConversion()); 52 put("f", null, new FloatingPointConversion.DecimalConversion()); 53 put("g", "G", new FloatingPointConversion.GeneralScientificConversion()); 54 put("a", "A", new HexadecimalExponentialConversion()); 55 put("%", null, new PercentConversion()); 56 put("n", null, new LineSeparatorConversion()); 57 for (Map.Entry<Character , DateTimeConversion> entry : DateTimeConversion.getConversions().entrySet()) { 58 Character c = entry.getKey(); 59 put("t" + c, "T" + c, entry.getValue()); 60 } 61 } 62 63 public static Conversion getInstance(String code) { 64 return map.get(code); 65 } 66 67 public abstract void format(FormatContext context); 68 69 private static void put(String lower, String upper, Conversion value) { 70 map.put(lower, value); 71 if (upper != null) { 72 map.put(upper, value); 73 } 74 } 75 76 } 77 | Popular Tags |