public static SpecificCharacterSet valueOf(String... codes) { if (codes == null || codes.length == 0) return DEFAULT; if (codes.length > 1) codes = checkISO2022(codes); Codec[] infos = new Codec[codes.length]; for (int i = 0; i < codes.length; i++) infos[i] = Codec.forCode(codes[i]); return codes.length > 1 ? new ISO2022(infos,codes) : new SpecificCharacterSet(infos, codes); }
public static void unifyCharacterSets(Attributes... attrsList) { if (attrsList.length == 0) return; SpecificCharacterSet utf8 = SpecificCharacterSet.valueOf("ISO_IR 192"); SpecificCharacterSet commonCS = attrsList[0].getSpecificCharacterSet(); if (!commonCS.equals(utf8)) { for (int i = 1; i < attrsList.length; i++) { SpecificCharacterSet cs = attrsList[i].getSpecificCharacterSet(); if (!(cs.equals(commonCS) || cs.isASCII() && commonCS.containsASCII())) { if (commonCS.isASCII() && cs.containsASCII()) commonCS = cs; else { commonCS = utf8; break; } } } } for (Attributes attrs : attrsList) { SpecificCharacterSet cs = attrs.getSpecificCharacterSet(); if (!(cs.equals(commonCS))) { if (!cs.isASCII() || !commonCS.containsASCII()) attrs.decodeStringValuesUsingSpecificCharacterSet(); attrs.setString(Tag.SpecificCharacterSet, VR.CS, commonCS.toCodes()); } } }
public SpecificCharacterSet getSpecificCharacterSet() { if (cs != null) return cs; if (containsSpecificCharacterSet) cs = SpecificCharacterSet.valueOf( getStrings(null, Tag.SpecificCharacterSet, VR.CS)); else if (parent != null) return parent.getSpecificCharacterSet(); else cs = SpecificCharacterSet.getDefaultCharacterSet(); return cs; }
public static void setDefaultCharacterSet(String code) { SpecificCharacterSet cs = code != null ? valueOf(code) : ASCII; if (!cs.containsASCII()) throw new IllegalArgumentException("Default Character Set must contain ASCII - " + code); DEFAULT = cs; }
@Override public Object toStrings(Object val, boolean bigEndian, SpecificCharacterSet cs) { if (val instanceof byte[]) { return splitAndTrim(cs(cs).decode((byte[]) val), cs); } if (val instanceof String || val instanceof String[]) return val; throw new UnsupportedOperationException(); }
@Override public byte[] toBytes(Object val, SpecificCharacterSet cs) { if (val instanceof byte[]) return (byte[]) val; if (val instanceof String) return cs(cs).encode((String) val, delimiters); if (val instanceof String[]) return cs(cs).encode( StringUtils.concat((String[]) val, '\\'), delimiters); throw new UnsupportedOperationException(); }
SpecificCharacterSet.setDefaultCharacterSet("ISO_IR 100"); //$NON-NLS-1$
@Override public boolean prompt(Object val, boolean bigEndian, SpecificCharacterSet cs, int maxChars, StringBuilder sb) { if (val instanceof byte[]) return prompt(cs(cs).decode((byte[]) val), maxChars, sb); if (val instanceof String) return prompt((String) val, maxChars, sb); if (val instanceof String[]) return prompt((String[]) val, maxChars, sb); return prompt(val.toString(), maxChars, sb); }