/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is part of dcm4che, an implementation of DICOM(TM) in
* Java(TM), hosted at https://github.com/gunterze/dcm4che.
*
* The Initial Developer of the Original Code is
* Agfa Healthcare.
* Portions created by the Initial Developer are Copyright (C) 2011
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* See @authors listed below
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
package org.dcm4che3.tool.wadouri.test;
import java.io.File;
import org.dcm4che3.tool.common.test.TestResult;
import org.dcm4che3.tool.common.test.TestTool;
import org.dcm4che3.tool.wadouri.WadoURI;
/**
* @author Hesham Elbadawi <bsdreko@gmail.com>
*/
public class WadoURITool implements TestTool {
private String url;
private String studyUID;
private String seriesUID;
private String objectUID;
private String contentType;
private String charset;
private boolean anonymize;
private String annotation;
private int rows;
private int columns;
private String regionCoordinates;
//windowParams;
private String windowCenter;
private String windowWidth;
private int[] frameNumbers;
private int imageQuality;
//presentationUID;
private String presentationSeriesUID;
private String presentationUID;
private String transferSyntax;
private boolean overlays;
private File retrieveDir;
private TestResult result;
public WadoURITool() {
}
public WadoURITool(
String url,
String studyUID,
String seriesUID,
String objectUID,
String contentType,
String charset,
boolean anonymize,
String annotation,
int rows,
int columns,
String regionCoordinates,
String windowCenter,
String windowWidth,
int[] frameNumbers,
int imageQuality,
String presentationSeriesUID,
String presentationUID,
String transferSyntax,
File retrieveDir) {
super();
this.url = url;
this.studyUID = studyUID;
this.seriesUID = seriesUID;
this.objectUID = objectUID;
this.contentType = contentType;
this.charset = charset;
this.anonymize = anonymize;
this.annotation = annotation;
this.rows = rows;
this.columns = columns;
this.regionCoordinates = regionCoordinates;
this.windowCenter = windowCenter;
this.windowWidth = windowWidth;
this.frameNumbers = frameNumbers;
this.imageQuality = imageQuality;
this.presentationSeriesUID = presentationSeriesUID;
this.presentationUID = presentationUID;
this.transferSyntax = transferSyntax;
this.retrieveDir = retrieveDir;
}
public void wadoURI(String testDescription) throws Exception {
wado(testDescription, false);
}
public void wadoURI(String testDescription, boolean enableOverlays) throws Exception {
wado(testDescription, enableOverlays);
}
private void wado(String testDescription, boolean enableOverlays) throws Exception {
long t1, t2;
t1 = System.currentTimeMillis();
WadoURIResponse response = null;
if (frameNumbers == null || frameNumbers.length == 0) {
// no frames
response = makeWadoURI(enableOverlays, -1).getResponse();
} else {
// multi-frame - iterate through frames
for (int frameNumber : frameNumbers) {
WadoURI wadouri = makeWadoURI(enableOverlays, frameNumber);
WadoURIResponse thisFrameResponse = wadouri.getResponse();
if (response == null)
response = thisFrameResponse;
else
response.addRetrievedInstance(thisFrameResponse.getRetrievedInstance());
}
}
t2 = System.currentTimeMillis();
init(new WadoURIResult(testDescription, t2 - t1, response));
}
private WadoURI makeWadoURI(boolean enableOverlays, int frameNumber) throws Exception {
WadoURI wadouri = new WadoURI(this.url, this.studyUID, this.seriesUID, this.objectUID,
this.contentType, this.charset, this.anonymize, this.annotation
, this.rows, this.columns, this.regionCoordinates, this.windowCenter,
this.windowWidth, frameNumber, this.imageQuality, this.presentationSeriesUID,
this.presentationUID, this.transferSyntax);
wadouri.setOverlays(enableOverlays);
wadouri.setOutDir(this.retrieveDir);
wadouri.setOutFileName(this.objectUID + (frameNumber == -1 ? "" : "_frame_" + frameNumber));
wadouri.wado(wadouri);
return wadouri;
}
@Override
public void init(TestResult result) {
this.result = result;
}
@Override
public TestResult getResult() {
return this.result;
}
public File getRetrieveDir() {
return retrieveDir;
}
}