view client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java @ 10:fe0a111cc8f5

server creates tgcrud port in constructor. client takes external server url.
author casties
date Fri, 17 Jun 2011 17:07:42 +0200
parents 55bc70b1cb18
children
line wrap: on
line source

/**
 * 
 */
package info.textgrid.middleware.digilib.clients.cli;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.ws.Holder;

import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService;
import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType;

/**
 * @author casties
 * 
 */
public class DigilibCli {

    /**
     * @param args
     */
    public static void main(String[] args) {
        if (args.length < 4) {
            System.err
                    .println("use: DigilibCli SID URI QUERY FILENAME [SERVERURL]");
            System.exit(1);
        }
        String sid = args[0];
        String uri = args[1];
        String query = args[2];
        String filename = args[3];
        URL serverUrl = null;
        try {
            if (args.length > 4) {
                serverUrl = new URL(args[4]);
            } else {
                serverUrl = new URL(
                        "http://localhost:8080/digilibservice-service/service?wsdl");
            }
        } catch (MalformedURLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        System.out.println("service at " + serverUrl);
        // call service
        byte[] imageData = getScaledImage(sid, uri, query, serverUrl);
        // try to copy to file
        System.out.println("writing " + filename);
        File f = new File(filename);
        try {
            OutputStream ostream = new FileOutputStream(f);
            ostream.write(imageData);
            ostream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Done.");
    }

    public static byte[] getScaledImage(String sid, String uri, String query,
            URL serverUrl) {
        DigilibService service = new DigilibService(serverUrl);
        DigilibServicePortType port = service.getDigilibServicePort();
        String logParam = null;
        // Holder for return data
        Holder<String> mimeType = new Holder<String>();
        Holder<byte[]> imageData = new Holder<byte[]>();
        Holder<Integer> width = new Holder<Integer>();
        Holder<Integer> height = new Holder<Integer>();
        // call service -- fills Holder
        port.getScaledImage(sid, uri, query, logParam, mimeType, imageData,
                width, height);
        System.out.println("mimeType=" + mimeType.value);
        System.out.println("imageData=" + imageData.value);
        System.out.println("width=" + width.value);
        System.out.println("height=" + height.value);
        return imageData.value;
    }

}