private void updateVR(int index, VR vr) { VR prev = vrs[index]; if (vr == prev) return; Object value = values[index]; if (!(value == Value.NULL || value instanceof byte[] || vr.isStringType() && (value instanceof String || value instanceof String[]))) throw new IllegalStateException("value instanceof " + value.getClass()); vrs[index] = vr; }
public void internalizeStringValues(boolean decode) { SpecificCharacterSet cs = getSpecificCharacterSet(); for (int i = 0; i < values.length; i++) { VR vr = vrs[i]; Object value = values[i]; if (vr.isStringType()) { if (value instanceof byte[]) { if (!decode) continue; value = vr.toStrings((byte[]) value, bigEndian, cs); } if (value instanceof String) values[i] = ((String) value).intern(); else if (value instanceof String[]) { String[] ss = (String[]) value; for (int j = 0; j < ss.length; j++) ss[j] = ss[j].intern(); } } else if (value instanceof Sequence) for (Attributes item : (Sequence) value) item.internalizeStringValues(decode); } }
public boolean containsValue(String privateCreator, int tag) { int index = indexOf(privateCreator, tag); return index >= 0 && !isEmpty(vrs[index].isStringType() ? decodeStringValue(index) : values[index]); }
public String getString(String privateCreator, int tag, VR vr, int valueIndex, String defVal) { int index = indexOf(privateCreator, tag); if (index < 0) return defVal; Object value = values[index]; if (value == Value.NULL) return defVal; if (vr == null) vr = vrs[index]; else updateVR(index, vr); if (vr.isStringType()) { value = decodeStringValue(index); if (value == Value.NULL) return defVal; } try { return vr.toString(value, bigEndian, valueIndex, defVal); } catch (UnsupportedOperationException e) { LOG.info("Attempt to access {} {} as string", TagUtils.toString(tag), vr); return defVal; } }
return false; if (vr.isStringType()) { try { if (vr == VR.IS)
public String[] getStrings(String privateCreator, int tag, VR vr) { int index = indexOf(privateCreator, tag); if (index < 0) return null; Object value = values[index]; if (value == Value.NULL) return StringUtils.EMPTY_STRING; if (vr == null) vr = vrs[index]; else updateVR(index, vr); if (vr.isStringType()) { value = decodeStringValue(index); if (value == Value.NULL) return StringUtils.EMPTY_STRING; } try { return toStrings(vr.toStrings(value, bigEndian, getSpecificCharacterSet(vr))); } catch (UnsupportedOperationException e) { LOG.info("Attempt to access {} {} as string", TagUtils.toString(tag), vr); return null; } }
private void writeValues(VR vr, Object val, boolean bigEndian, SpecificCharacterSet cs) throws SAXException { if (vr.isStringType()) val = vr.toStrings(val, bigEndian, cs); int vm = vr.vmOf(val); for (int i = 0; i < vm; i++) { String s = vr.toString(val, bigEndian, i, null); addAttribute("number", Integer.toString(i + 1)); if (vr == VR.PN) { PersonName pn = new PersonName(s, true); startElement("PersonName"); writePNGroup("Alphabetic", pn, PersonName.Group.Alphabetic); writePNGroup("Ideographic", pn, PersonName.Group.Ideographic); writePNGroup("Phonetic", pn, PersonName.Group.Phonetic); endElement("PersonName"); } else { writeElement("Value", s); } } }
continue; if (keyVrs[i].isStringType()) { if (!matches(privateCreator, tag, keyVrs[i], ignorePNCase, matchNoValue, keys.getStrings(privateCreator, tag, null)))
if (updatePolicy != UpdatePolicy.SUPPLEMENT && equalValues(other, j, i)) continue; Object origValue = vrs[j].isStringType() ? decodeStringValue(j) : values[j]; if (updatePolicy == UpdatePolicy.SUPPLEMENT && !isEmpty(origValue)) continue;
if (vr.isStringType()) { value = decodeStringValue(index); if (!vr.isStringType()) { result.addInvalidAttributeValue(el, ValidationResult.Invalid.VR); return;
} else if (vr.isStringType()) { if (VR.DS.equals(vr)) { return TagType.DOUBLE;