private void insertDicomTags( int dcmobject_id, DicomObject obj, Integer parentId, PreparedStatement stmt) throws Exception { for (Iterator<DicomElement> it = obj.iterator(); it.hasNext(); ) { DicomElement e = it.next(); StringBuffer sb = new StringBuffer(); try { String[] values = e.getStrings(obj.getSpecificCharacterSet(), false); sb.append(values[0].replaceAll("\0", "")); int i; for (i = 1; i < values.length; i++) { sb.append("/").append(values[i].replaceAll("\0", "")); } } catch (Exception ee) { try { sb.append(e.getString(obj.getSpecificCharacterSet(), false)); } catch (Exception e2) { } } stmt.setInt(1, dcmobject_id); stmt.setString(2, DicomHeader.toTagString(e.tag())); stmt.setString(3, e.vr().toString()); // only the first 150 chars are saved if the tag-value is longer if (sb.length() > 150) { stmt.setString( 4, sb.toString().substring(0, 150).concat("*** end of tag-value not applicable ***")); } else { stmt.setString(4, sb.toString()); } stmt.setInt(5, itemOrder); if (parentId == null) { stmt.setNull(6, Types.INTEGER); } else { stmt.setInt(6, parentId); } stmt.addBatch(); // System.out.println( stmt ); itemOrder++; if (e.countItems() > 0) { if (e.hasDicomObjects()) { for (int i = 0; i < e.countItems(); i++) { insertDicomTags(dcmobject_id, e.getDicomObject(i), itemOrder - 1, stmt); } } } } }