Mercurial > hg > digilibservice
comparison src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java @ 5:f723439bd23e
added query parameter to wsdl. uses parameters now. writing result doesn't work.
author | casties |
---|---|
date | Fri, 06 May 2011 18:22:28 +0200 |
parents | 2a34f8fa0f32 |
children | 913bc132ed96 |
comparison
equal
deleted
inserted
replaced
4:2a34f8fa0f32 | 5:f723439bd23e |
---|---|
1 package info.textgrid.middleware.digilib.services.scaler; | 1 package info.textgrid.middleware.digilib.services.scaler; |
2 | 2 |
3 import java.io.ByteArrayOutputStream; | |
3 import java.io.File; | 4 import java.io.File; |
4 import java.io.FileOutputStream; | 5 import java.io.FileOutputStream; |
5 import java.io.IOException; | 6 import java.io.IOException; |
6 import java.io.InputStream; | 7 import java.io.InputStream; |
7 import java.io.OutputStream; | 8 import java.io.OutputStream; |
18 import digilib.image.ImageLoaderDocuImage; | 19 import digilib.image.ImageLoaderDocuImage; |
19 import digilib.image.ImageOpException; | 20 import digilib.image.ImageOpException; |
20 import digilib.image.ImageWorker; | 21 import digilib.image.ImageWorker; |
21 import digilib.io.ImageCacheStream; | 22 import digilib.io.ImageCacheStream; |
22 import digilib.servlet.DigilibConfiguration; | 23 import digilib.servlet.DigilibConfiguration; |
24 import digilib.servlet.DigilibRequest; | |
23 | 25 |
24 import info.textgrid.namespaces.metadata.core._2010.MetadataContainerType; | 26 import info.textgrid.namespaces.metadata.core._2010.MetadataContainerType; |
25 import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService; | 27 import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService; |
26 import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.AuthFault; | 28 import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.AuthFault; |
27 import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.IoFault; | 29 import info.textgrid.namespaces.middleware.tgcrud.services.tgcrudservice.IoFault; |
35 serviceName="DigilibService", portName="DigilibServiceSOAP", | 37 serviceName="DigilibService", portName="DigilibServiceSOAP", |
36 endpointInterface="info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService") | 38 endpointInterface="info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService") |
37 public class Scaler implements DigilibService { | 39 public class Scaler implements DigilibService { |
38 | 40 |
39 @Override | 41 @Override |
40 public void getScaledImage(String sessionId, String uri, | 42 public void getScaledImage(String sessionId, String uri, String query, |
41 String logParameter, Holder<String> mimeType, | 43 String logParameter, Holder<String> mimeType, |
42 Holder<byte[]> imageData) { | 44 Holder<byte[]> imageData, Holder<Integer> width, |
43 | 45 Holder<Integer> height) { |
46 | |
44 System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter); | 47 System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter); |
45 | 48 |
46 // Get TG-crud service. | 49 // Get TG-crud service. |
47 String serverUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; // p.getProperty("crud_serverUrl"); | 50 String serverUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; // p.getProperty("crud_serverUrl"); |
48 URL location = null; | 51 URL location = null; |
65 TGCrudService tgcrud = service.getTGCrudPort(); | 68 TGCrudService tgcrud = service.getTGCrudPort(); |
66 BindingProvider bindingProvider = (BindingProvider) tgcrud; | 69 BindingProvider bindingProvider = (BindingProvider) tgcrud; |
67 SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding(); | 70 SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding(); |
68 binding.setMTOMEnabled(true); | 71 binding.setMTOMEnabled(true); |
69 | 72 |
70 // Use non MTOM stub. | |
71 /* | |
72 * TGCrudService tgcrud_nonMtom = service.getTGCrudPort(); | |
73 * //BindingProvider bindingProvider_nonMtom = (BindingProvider) | |
74 * tgcrud_nonMtom; //SOAPBinding binding_nonMtom = (SOAPBinding) | |
75 * bindingProvider_nonMtom .getBinding(); | |
76 * binding_nonMtom.setMTOMEnabled(false); | |
77 */ | |
78 | |
79 // Create holders. | 73 // Create holders. |
80 Holder<MetadataContainerType> metadataHolder = new Holder<MetadataContainerType>(); | 74 Holder<MetadataContainerType> metadataHolder = new Holder<MetadataContainerType>(); |
81 Holder<DataHandler> dataHolder = new Holder<DataHandler>(); | 75 Holder<DataHandler> dataHolder = new Holder<DataHandler>(); |
82 | 76 |
83 // Start #READ operation. | 77 // Start #READ operation. |
99 String mt = metadataHolder.value.getObject().getGeneric().getProvided().getFormat(); | 93 String mt = metadataHolder.value.getObject().getGeneric().getProvided().getFormat(); |
100 System.out.println("Stream="+istream.toString()+" type="+mt); | 94 System.out.println("Stream="+istream.toString()+" type="+mt); |
101 if (mode.equalsIgnoreCase("digilib")) { | 95 if (mode.equalsIgnoreCase("digilib")) { |
102 // try scaling | 96 // try scaling |
103 DigilibConfiguration dlConfig = new DigilibConfiguration(); | 97 DigilibConfiguration dlConfig = new DigilibConfiguration(); |
104 ImageJobDescription job = new ImageJobDescription(dlConfig); | 98 DigilibRequest dlReq = new DigilibRequest(); |
99 dlReq.setWithParamString(query, "&"); | |
100 ImageJobDescription job = ImageJobDescription.getInstance(dlReq, dlConfig); | |
105 ImageCacheStream imgStream = new ImageCacheStream(istream, mt); | 101 ImageCacheStream imgStream = new ImageCacheStream(istream, mt); |
106 System.out.println("iis="+imgStream.getImageInputStream()); | 102 System.out.println("iis="+imgStream.getImageInputStream()); |
107 ImageLoaderDocuImage img = new ImageLoaderDocuImage(); | 103 ImageLoaderDocuImage img = new ImageLoaderDocuImage(); |
108 // reuse reader for stream input | 104 // reuse reader for stream input |
109 img.reuseReader = true; | 105 img.reuseReader = true; |
106 // identify image size | |
110 System.out.println("Identifying..."); | 107 System.out.println("Identifying..."); |
111 img.identify(imgStream); | 108 img.identify(imgStream); |
112 job.setDocuImage(img); | 109 job.setDocuImage(img); |
113 job.setInput(imgStream); | 110 job.setInput(imgStream); |
114 job.setValue("dw", 500); | |
115 job.setValue("dh", 500); | |
116 // use image worker | 111 // use image worker |
117 ImageWorker digilib = new ImageWorker(dlConfig, job); | 112 ImageWorker digilib = new ImageWorker(dlConfig, job); |
118 System.out.println("Scaling with "+digilib); | 113 System.out.println("Scaling with "+digilib); |
119 digilib.call(); | 114 digilib.call(); |
120 System.out.println(Long.toString(System.currentTimeMillis() | 115 System.out.println(Long.toString(System.currentTimeMillis() |
121 - startTime) | 116 - startTime) |
122 + " ms"); | 117 + " ms"); |
118 // save image to buffer | |
119 ByteArrayOutputStream ostream = new ByteArrayOutputStream(); | |
120 img.writeImage("image/jpeg", ostream); | |
121 System.out.println("written in "+(System.currentTimeMillis()-startTime)+" ms"); | |
122 // set buffer in Holder | |
123 imageData.value = ostream.toByteArray(); | |
124 mimeType.value = "image/jpeg"; | |
125 System.out.println("output set."); | |
126 | |
127 /* save to file | |
123 File f = new File("/tmp/tgimg.jpg"); | 128 File f = new File("/tmp/tgimg.jpg"); |
124 OutputStream ostream = new FileOutputStream(f); | 129 OutputStream ostream = new FileOutputStream(f); |
125 img.writeImage("image/jpeg", ostream); | 130 img.writeImage("image/jpeg", ostream); |
126 System.out.println(Long.toString(System.currentTimeMillis() | 131 System.out.println(Long.toString(System.currentTimeMillis() |
127 - startTime) | 132 - startTime) |
128 + " ms"); | 133 + " ms"); |
134 */ | |
129 } else { | 135 } else { |
130 // try to copy to file | 136 // try to copy to file |
131 File f = new File("/tmp/tgimg.img"); | 137 File f = new File("/tmp/tgimg.img"); |
132 OutputStream ostream = new FileOutputStream(f); | 138 OutputStream ostream = new FileOutputStream(f); |
133 byte[] data = new byte[1024]; | 139 byte[] data = new byte[1024]; |