package hextostring.convert; import java.nio.charset.Charset; import hextostring.replacement.Replacements; import hextostring.utils.Charsets; /** * Determine which converter to provide. * * @author Maxime PIA */ public class ConverterFactory { private static SJISConverter sjisConverterInstance = new SJISConverter(); private static UTF16Converter utf16BEConverterInstance = new UTF16Converter(true); private static UTF16Converter utf16LEConverterInstance = new UTF16Converter(false); private static UTF8Converter utf8ConverterInstance = new UTF8Converter(); private static EncodingAgnosticConverter encodingAgnosticConverterInstance = new EncodingAgnosticConverter(); /** * Provides a converter for a given charset. * * @param cs * The charset encoding the hex input. * @return A fitting converter. */ public static Converter getConverterInstance(Charset charset, Replacements r) { Converter c; if (charset == Charsets.DETECT) { c = encodingAgnosticConverterInstance; } else if (charset == Charsets.SHIFT_JIS) { c = sjisConverterInstance; } else if (charset == Charsets.UTF16_BE) { c = utf16BEConverterInstance; } else if (charset == Charsets.UTF16_LE) { c = utf16LEConverterInstance; } else if (charset == Charsets.UTF8) { c = utf8ConverterInstance; } else { throw new IllegalArgumentException("Invalid charset in options."); } c.setReplacements(r); return c; } }