package de.axone.data; import java.nio.charset.Charset; import java.util.Arrays; import java.util.HashSet; public enum Encoding { // NOTE: Must be written in upper case utf8( Charsets.utf8, "UTF8" ), latin1( Charsets.latin1, "LATIN1", "LATIN-1", "ISO8859-1" ), latin15( Charsets.latin15, "LATIN15", "LATIN-15", "ISO8859-15" ), ascii( Charsets.ascii, "ASCII" ) ; private String isoName; private Charset charset; private HashSet<String> names = new HashSet<String>(); Encoding( String isoName, String ... aliases ){ this.isoName = isoName; this.charset = Charset.forName( isoName ); this.names.add( name().toUpperCase() ); this.names.add( isoName ); this.names.addAll( Arrays.asList( aliases ) ); } public String isoName(){ return isoName; } @Override public String toString(){ return isoName; } public Charset charset(){ return charset; } public static Encoding forAnyName( String name ){ name = name.toUpperCase(); for( Encoding encoding : Encoding.values() ){ if( encoding.names.contains( name ) ) return encoding; } return null; } }