Ejemplo n.º 1
0
  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);
          }
        }
      }
    }
  }