packcage edu.jhu.pha.imgcutout; import edu.jhu.pha.skyservice.*; import org.apache.axis.attachments.*; import javax.activation.DataHandler; import javax.activation.FileDataSource; import java.io.*; /* A simple dime client which will pull down a requesed image from SDDS DR1 Image Cutout WebService. */ public class CutOutClient { /** * simple main loop which parses command line to call the webservice * if you pass no args defaults are provided * otherwise you must specify * FileName RA DEC PPD WIDTH HEIGHT [OPTIONS] */ public static void main(String[] args) throws Exception { CutOutClient cl = new CutOutClient(); int ind =0; String fname = "CutOutClient.jpg"; double ra= 180; double dec= 0; int ppd = 9000; int width = 512; int height = 512; String opt=""; if (args.length ==7) { fname = args[ind++]; ra = Double.parseDouble(args[ind++]); dec = Double.parseDouble(args[ind++]); ppd = Integer.parseInt(args[ind++]); width = Integer.parseInt(args[ind++]); height = Integer.parseInt(args[ind++]); opt = args[ind++]; } else if (args.length>0) { System.err.println("Pass no args to use the defaults otherwise pass:"); System.err.println("FileName RA DEC PPD WIDTH HEIGHT OPTIONS"); System.exit(2); } cl.saveImage(fname,ra,dec,ppd,width,height,opt); } /** * Call the webservice and get the attachement out of it. * This is returnde as DataHandler which is part of Javax.Activation. */ public DataHandler getImage(double ra, double dec, int ppd, int width , int height , String opt ) throws Exception { ImgCutoutLocator loc = new ImgCutoutLocator(); ImgCutoutSoap imgProvider = loc.getImgCutoutSoap(); imgProvider.dimeJpeg(ra,dec,ppd,width,height,opt); // not so nice but we must cast to a stub to get att the attachements Object[] obj = ((org.apache.axis.client.Stub) imgProvider).getAttachments(); // assuming one attachemnt only if(obj.length != 1 ) throw new Exception("Expected a single attachemnt but got "+obj.length); //Each Attachment is actually an AttachmentPart - we only have 1 AttachmentPart p = (AttachmentPart) obj[0]; // from the part we may get the dataHandler DataHandler dh = p.getActivationDataHandler(); return dh; } /** * Save the image to the given file */ public void saveImage(String fname, double ra, double dec, int ppd, int width , int height , String opt ) throws Exception { DataHandler dh = getImage(ra,dec,ppd,width,height,opt); FileOutputStream fs = new FileOutputStream(fname); dh.writeTo(fs); fs.close(); // need to delete temp file which Axis creates File f = new File(dh.getName()); f.delete(); } }
William O'Mullane
Last Modified:
03/20/2003 15:51:53
$Revision: 1.4 $