# HG changeset patch
# User casties
# Date 1304696090 -7200
# Node ID 2a34f8fa0f32c1bf2d03a5e33d693ad2063016d4
# Parent 1baf94752fe81b7d1fe72ce375b48d81bd094125
works as a service, takes uri and sid and scales now.
no return value yet.
diff -r 1baf94752fe8 -r 2a34f8fa0f32 .hgignore
--- a/.hgignore Fri May 06 10:30:07 2011 +0200
+++ b/.hgignore Fri May 06 17:34:50 2011 +0200
@@ -4,4 +4,6 @@
syntax: regexp
^\.classpath$
syntax: regexp
-^\.project$
\ No newline at end of file
+^\.project$
+syntax: regexp
+^\.settings$
\ No newline at end of file
diff -r 1baf94752fe8 -r 2a34f8fa0f32 pom.xml
--- a/pom.xml Fri May 06 10:30:07 2011 +0200
+++ b/pom.xml Fri May 06 17:34:50 2011 +0200
@@ -46,6 +46,13 @@
cxf-rt-transports-http
${cxf.version}
+
+ digilib
+ digilib-common
+ 2.0-SNAPSHOT
+ jar
+ compile
+
diff -r 1baf94752fe8 -r 2a34f8fa0f32 src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java
--- a/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java Fri May 06 10:30:07 2011 +0200
+++ b/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java Fri May 06 17:34:50 2011 +0200
@@ -1,9 +1,35 @@
package info.textgrid.middleware.digilib.services.scaler;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.activation.DataHandler;
import javax.jws.WebService;
+import javax.xml.ws.BindingProvider;
import javax.xml.ws.Holder;
+import javax.xml.ws.soap.SOAPBinding;
+import digilib.image.ImageJobDescription;
+import digilib.image.ImageLoaderDocuImage;
+import digilib.image.ImageOpException;
+import digilib.image.ImageWorker;
+import digilib.io.ImageCacheStream;
+import digilib.servlet.DigilibConfiguration;
+
+import info.textgrid.namespaces.metadata.core._2010.MetadataContainerType;
import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.AuthFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.IoFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.MetadataParseFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.ObjectNotFoundFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.ProtocolNotImplementedFault;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.TGCrudService;
+import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.TGCrudService_Service;
@WebService(targetNamespace = "http://textgrid.info/namespaces/middleware/digilib/services/DigilibService",
serviceName="DigilibService", portName="DigilibServiceSOAP",
@@ -17,6 +43,137 @@
System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter);
+ // Get TG-crud service.
+ String serverUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; // p.getProperty("crud_serverUrl");
+ URL location = null;
+ try {
+ location = new URL(serverUrl);
+ } catch (MalformedURLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ System.out.println("TG-crud WSDL location: " + location.getProtocol()
+ + "://" + location.getHost() + ":"
+ + (location.getPort() == -1 ? "80" : location.getPort())
+ + location.getPath());
+
+ // Create TG-crud service stub.
+ if (serverUrl != null) {
+ // Use MTOM stub.
+ TGCrudService_Service service = new TGCrudService_Service(location);
+ TGCrudService tgcrud = service.getTGCrudPort();
+ BindingProvider bindingProvider = (BindingProvider) tgcrud;
+ SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding();
+ binding.setMTOMEnabled(true);
+
+ // Use non MTOM stub.
+ /*
+ * TGCrudService tgcrud_nonMtom = service.getTGCrudPort();
+ * //BindingProvider bindingProvider_nonMtom = (BindingProvider)
+ * tgcrud_nonMtom; //SOAPBinding binding_nonMtom = (SOAPBinding)
+ * bindingProvider_nonMtom .getBinding();
+ * binding_nonMtom.setMTOMEnabled(false);
+ */
+
+ // Create holders.
+ Holder metadataHolder = new Holder();
+ Holder dataHolder = new Holder();
+
+ // Start #READ operation.
+ try {
+ String theSessionId = sessionId;
+ String theLogParameter = logParameter;
+ String theUri = uri;
+ String mode = "digilib";
+ long startTime = System.currentTimeMillis();
+ tgcrud.read(theSessionId, theLogParameter, theUri,
+ metadataHolder, dataHolder);
+ System.out.println(Long.toString(System.currentTimeMillis()
+ - startTime)
+ + " ms");
+ System.out.println("READ: Title="
+ + metadataHolder.value.getObject().getGeneric()
+ .getProvided().getTitle().get(0));
+ InputStream istream = dataHolder.value.getInputStream();
+ String mt = metadataHolder.value.getObject().getGeneric().getProvided().getFormat();
+ System.out.println("Stream="+istream.toString()+" type="+mt);
+ if (mode.equalsIgnoreCase("digilib")) {
+ // try scaling
+ DigilibConfiguration dlConfig = new DigilibConfiguration();
+ ImageJobDescription job = new ImageJobDescription(dlConfig);
+ ImageCacheStream imgStream = new ImageCacheStream(istream, mt);
+ System.out.println("iis="+imgStream.getImageInputStream());
+ ImageLoaderDocuImage img = new ImageLoaderDocuImage();
+ // reuse reader for stream input
+ img.reuseReader = true;
+ System.out.println("Identifying...");
+ img.identify(imgStream);
+ job.setDocuImage(img);
+ job.setInput(imgStream);
+ job.setValue("dw", 500);
+ job.setValue("dh", 500);
+ // use image worker
+ ImageWorker digilib = new ImageWorker(dlConfig, job);
+ System.out.println("Scaling with "+digilib);
+ digilib.call();
+ System.out.println(Long.toString(System.currentTimeMillis()
+ - startTime)
+ + " ms");
+ File f = new File("/tmp/tgimg.jpg");
+ OutputStream ostream = new FileOutputStream(f);
+ img.writeImage("image/jpeg", ostream);
+ System.out.println(Long.toString(System.currentTimeMillis()
+ - startTime)
+ + " ms");
+ } else {
+ // try to copy to file
+ File f = new File("/tmp/tgimg.img");
+ OutputStream ostream = new FileOutputStream(f);
+ byte[] data = new byte[1024];
+ int l = istream.read(data);
+ while (l > -1) {
+ ostream.write(data, 0, l);
+ l = istream.read(data);
+ }
+ ostream.close();
+ System.out.println(Long.toString(System.currentTimeMillis()
+ - startTime)
+ + " ms");
+ System.out.println("Done writing " + f);
+ }
+ } catch (ObjectNotFoundFault e) {
+ // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+ // e.getClass().getSimpleName()));
+ e.printStackTrace();
+ } catch (MetadataParseFault e) {
+ // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+ // e.getClass().getSimpleName()));
+ e.printStackTrace();
+ } catch (IoFault e) {
+ // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+ // e.getClass().getSimpleName()));
+ e.printStackTrace();
+ } catch (ProtocolNotImplementedFault e) {
+ // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+ // e.getClass().getSimpleName()));
+ e.printStackTrace();
+ } catch (AuthFault e) {
+ // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(),
+ // e.getClass().getSimpleName()));
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ImageOpException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ } else {
+ System.out.println("No TG-crud server WSDL URL given!");
+ // assertTrue(false);
+ }
}
}