/**
   * For testing, establish an association to the specified AE and send a DICOM instance (send a
   * C-STORE request).
   *
   * @param arg array of seven or nine strings - their hostname, their port, their AE Title, our AE
   *     Title, the filename containing the instance to send, optionally the SOP Class and the SOP
   *     Instance (otherwise will be read from the file), the compression level (0=none,1=propose
   *     deflate,2=propose deflate and bzip2) and the debugging level
   */
  public static void main(String arg[]) {
    try {
      String theirHost = null;
      int theirPort = -1;
      String theirAETitle = null;
      String ourAETitle = null;
      String fileName = null;
      String SOPClassUID = null;
      String SOPInstanceUID = null;
      int compressionLevel = 0;
      int debugLevel = 0;

      if (arg.length == 9) {
        theirHost = arg[0];
        theirPort = Integer.parseInt(arg[1]);
        theirAETitle = arg[2];
        ourAETitle = arg[3];
        fileName = arg[4];
        SOPClassUID = arg[5];
        SOPInstanceUID = arg[6];
        compressionLevel = Integer.parseInt(arg[7]);
        debugLevel = Integer.parseInt(arg[8]);
      } else if (arg.length == 7) {
        theirHost = arg[0];
        theirPort = Integer.parseInt(arg[1]);
        theirAETitle = arg[2];
        ourAETitle = arg[3];
        fileName = arg[4];
        SOPClassUID = null; // figured out by StorageSOPClassSCU() by reading the metaheader
        SOPInstanceUID = null; // figured out by StorageSOPClassSCU() by reading the metaheader
        compressionLevel = Integer.parseInt(arg[5]);
        debugLevel = Integer.parseInt(arg[6]);
      } else {
        throw new Exception("Argument list must be 7 or 9 values");
      }
      new TestSendingCommandAndDataInOnePDU(
          theirHost,
          theirPort,
          theirAETitle,
          ourAETitle,
          fileName,
          SOPClassUID,
          SOPInstanceUID,
          compressionLevel,
          debugLevel);
    } catch (Exception e) {
      e.printStackTrace(System.err);
      System.exit(0);
    }
  }
 public void TestSafePrivateGEPACSRelated_FromFile() throws Exception {
   AttributeList list = new AttributeList();
   String testFilePath = System.getProperty("com.pixelmed.test.filepath");
   // System.err.println("TestSafePrivateGEPACSRelated.TestSafePrivateGEPACSRelated_FromFile():
   // testFilePath = "+testFilePath);
   list.read(new java.io.File(testFilePath, "philipsctwithgepacsprivateattributes.dcm"));
   // System.err.print("TestSafePrivateGEPACSRelated.TestSafePrivateGEPACSRelated():\n"+list);
   list.removeUnsafePrivateAttributes();
   assertTrue(
       "Checking Creator is not removed", list.get(new AttributeTag(0x0903, 0x0010)) != null);
   assertTrue(
       "Checking Reject Image Flag is not removed",
       list.get(new AttributeTag(0x0903, 0x1010)) != null);
 }
 public void TestSafePrivatePhilipsPETRelated_ScaleFactors_FromFile() throws Exception {
   AttributeList list = new AttributeList();
   String testFilePath = System.getProperty("com.pixelmed.test.filepath");
   // System.err.println("TestSafePrivatePhilipsPETRelated.TestSafePrivatePhilipsPETRelated_ScaleFactors_FromFile(): testFilePath = "+testFilePath);
   list.read(new java.io.File(testFilePath, "philipssuvandactivityscalefactors.dcm"));
   // System.err.print("TestSafePrivatePhilipsPETRelated.TestSafePrivatePhilipsPETRelated_ScaleFactors():\n"+list);
   list.removeUnsafePrivateAttributes();
   assertTrue(
       "Checking Creator is not removed", list.get(new AttributeTag(0x7053, 0x0010)) != null);
   assertTrue(
       "Checking SUV Factor is not removed", list.get(new AttributeTag(0x7053, 0x1000)) != null);
   assertTrue(
       "Checking Activity Concentration Factor is not removed",
       list.get(new AttributeTag(0x7053, 0x1009)) != null);
 }
  @Override
  public String toString() {
    String eol = System.getProperty("line.separator");
    String returnString = "Device Observer:" + eol;
    returnString =
        returnString
            + "Device Observer UID = "
            + (this.deviceObserverUID != null ? this.deviceObserverUID : "null")
            + eol
            + "Device Observer Manufacturer = "
            + (this.deviceObserverManufacturer != null ? this.deviceObserverManufacturer : "null")
            + eol
            + "Device Observer Model Name = "
            + (this.deviceObserverModelName != null ? this.deviceObserverModelName : "null")
            + eol
            + "Device Observer Serial Number = "
            + (this.deviceObserverSerialNumber != null ? this.deviceObserverSerialNumber : "null")
            + eol
            + "Device Observer Physical Location  = "
            + (this.deviceObserverPhysicalLocation != null
                ? this.deviceObserverPhysicalLocation
                : "null")
            + eol
            + "Manufacturer = "
            + (this.manufacturer != null ? this.manufacturer : "null")
            + eol
            + "Institution Name = "
            + (this.institutionName != null ? this.institutionName : "null")
            + eol
            + "Station Name = "
            + (this.stationName != null ? this.stationName : "null")
            + eol
            + "Institutional Department Name = "
            + (this.institutionalDepartmentName != null ? this.institutionalDepartmentName : "null")
            + eol
            + "Manufacturer's Model Name = "
            + (this.manufacturersModelName != null ? this.manufacturersModelName : "null")
            + eol
            + "Device Serial Number = "
            + (this.deviceSerialNumber != null ? this.deviceSerialNumber : "null")
            + eol
            + "Software Version = "
            + (this.softwareVersions != null ? this.softwareVersions : "null")
            + eol;

    return returnString;
  }
 /**
  * @param association
  * @param affectedSOPClass
  * @param affectedSOPInstance
  * @param inputTransferSyntaxUID
  * @param din
  * @param presentationContextID
  * @param outputTransferSyntaxUID
  * @exception IOException
  * @exception DicomException
  * @exception DicomNetworkException
  * @exception AReleaseException
  */
 protected boolean sendOneSOPInstance(
     Association association,
     String affectedSOPClass,
     String affectedSOPInstance,
     String inputTransferSyntaxUID,
     DicomInputStream din,
     byte presentationContextID,
     String outputTransferSyntaxUID)
     throws AReleaseException, DicomNetworkException, DicomException, IOException {
   CStoreResponseHandler receivedDataHandler = new CStoreResponseHandler(debugLevel);
   association.setReceivedDataHandler(receivedDataHandler);
   if (inputTransferSyntaxUID.equals(outputTransferSyntaxUID)) {
     // din will already be positioned after meta-header and set for reading data set
     byte[] data = null;
     byte[] b = new byte[32768];
     while (true) {
       int bytesReceived = din.read(b, 0, 32768);
       if (bytesReceived == -1) {
         break;
       } else if (bytesReceived > 0) {
         if (data == null) {
           data = new byte[bytesReceived];
           System.arraycopy(b, 0, data, 0, bytesReceived);
         } else {
           data = ByteArray.concatenate(data, 0, data.length, b, 0, bytesReceived);
         }
       }
     }
     byte cStoreRequestCommandMessage[] =
         new CStoreRequestCommandMessage(affectedSOPClass, affectedSOPInstance).getBytes();
     association.send(presentationContextID, cStoreRequestCommandMessage, data);
   } else {
     throw new DicomException("Must be the same transfer syntax");
   }
   if (debugLevel > 1)
     System.err.println(
         new java.util.Date().toString()
             + ": TestSendingCommandAndDataInOnePDU.sendOneSOPInstance(): about to wait for PDUs");
   association.waitForCommandPDataPDUs();
   return receivedDataHandler.wasSuccessful();
 }
Exemple #6
0
  /** @param arg */
  public static void main(String arg[]) {
    TestApp af = new TestApp();

    SourceImage sImg = null;

    int imagesPerRow = 0;
    int imagesPerCol = 0;

    int imgMin = 65536;
    int imgMax = 0;

    boolean signed = false;
    boolean inverted = false;
    boolean hasPad = false;
    int padValue = 0;

    if (arg.length == 6) {
      // do it with raw file
      int w = 0;
      int h = 0;
      int d = 0;
      try {
        w = Integer.valueOf(arg[1]).intValue();
        h = Integer.valueOf(arg[2]).intValue();
        d = Integer.valueOf(arg[3]).intValue();
        imagesPerRow = Integer.valueOf(arg[4]).intValue();
        imagesPerCol = Integer.valueOf(arg[5]).intValue();
      } catch (Exception e) {
        System.err.println(e);
        System.exit(0);
      }

      try {
        FileInputStream i = new FileInputStream(arg[0]);
        sImg = new SourceImage(i, w, h, d);
      } catch (Exception e) {
        System.err.println(e);
        System.exit(0);
      }
    } else {
      // do it with DICOM file

      if (arg.length > 2) {
        try {
          imagesPerRow = Integer.valueOf(arg[1]).intValue();
          imagesPerCol = Integer.valueOf(arg[2]).intValue();
        } catch (Exception e) {
          System.err.println(e);
          e.printStackTrace(System.err);
          System.exit(0);
        }
      } else {
        imagesPerRow = 1;
        imagesPerCol = 1;
      }

      try {
        DicomInputStream i = new DicomInputStream(new FileInputStream(arg[0]));
        sImg = new SourceImage(i);
      } catch (Exception e) {
        System.err.println(e);
        e.printStackTrace(System.err);
        System.exit(0);
      }
    }

    try {
      // com.apple.cocoa.application.NSMenu.setMenuBarVisible(false);							// Won't compile on
      // other platforms
      // Class classToUse =
      // ClassLoader.getSystemClassLoader().loadClass("com.apple.cocoa.application.NSMenu");	//
      // Needs "/System/Library/Java" in classpath
      Class classToUse =
          new java.net.URLClassLoader(new java.net.URL[] {new File("/System/Library/Java").toURL()})
              .loadClass("com.apple.cocoa.application.NSMenu");
      Class[] parameterTypes = {Boolean.TYPE};
      java.lang.reflect.Method methodToUse =
          classToUse.getDeclaredMethod("setMenuBarVisible", parameterTypes);
      Object[] args = {Boolean.FALSE};
      methodToUse.invoke(null /*since static*/, args);
    } catch (Exception e) { // ClassNotFoundException,NoSuchMethodException,IllegalAccessException
      e.printStackTrace(System.err);
    }

    java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    int frameWidth = (int) d.getWidth();
    int frameHeight = (int) d.getHeight();
    System.err.println("frameWidth=" + frameWidth);
    System.err.println("frameHeight=" + frameHeight);
    af.setUndecorated(true);
    af.setLocation(0, 0);
    af.setSize(frameWidth, frameHeight);

    JPanel multiPanel = new JPanel();
    multiPanel.setLayout(new GridLayout(imagesPerCol, imagesPerRow));
    multiPanel.setBackground(Color.black);

    SingleImagePanel imagePanel[] = new SingleImagePanel[imagesPerRow * imagesPerCol];

    int singleWidth = frameWidth / imagesPerRow;
    int singleHeight = frameHeight / imagesPerCol;
    System.err.println("singleWidth=" + singleWidth);
    System.err.println("singleHeight=" + singleHeight);

    for (int x = 0; x < imagesPerCol; ++x) {
      for (int y = 0; y < imagesPerRow; ++y) {
        SingleImagePanel ip = new SingleImagePanel(sImg);
        // ip.setPreferredSize(new Dimension(img.getWidth(),img.getHeight()));
        // ip.setPreferredSize(new Dimension(sImg.getWidth(),sImg.getHeight()));
        ip.setPreferredSize(new Dimension(singleWidth, singleHeight));
        multiPanel.add(ip);
        imagePanel[x * imagesPerRow + y] = ip;
      }
    }

    // multiPanel.setSize(img.getWidth()*imagesPerRow,img.getHeight()*imagesPerRow);

    // JScrollPane scrollPane = new JScrollPane(multiPanel);

    Container content = af.getContentPane();
    content.setLayout(new GridLayout(1, 1));
    // content.add(scrollPane);
    content.add(multiPanel);

    af.pack();
    af.setVisible(true);
  }