1
2
3
4
5 package org.astrogrid.dataservice.service.sol;
6
7 import java.io.IOException;
8 import java.util.Date;
9 import java.util.StringTokenizer;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import org.astrogrid.account.LoginAccount;
13 import org.astrogrid.dataservice.service.DataServer;
14 import org.astrogrid.dataservice.service.ServletHelper;
15 import org.astrogrid.query.Query;
16 import org.astrogrid.query.condition.CircleCondition;
17 import org.astrogrid.query.returns.ReturnImage;
18 import org.astrogrid.query.returns.ReturnSpec;
19 import org.astrogrid.query.returns.ReturnTable;
20 import org.astrogrid.slinger.targets.TargetMaker;
21 import org.astrogrid.webapp.DefaultServlet;
22
23 /***
24 * Simple solar image access. Consists of a query that returns either an image
25 * or a table that
26 * has URLs to the images themselves (depending on the plugin). This class handles the initial
27 * query
28 *
29 * @author mch
30 */
31 public class SolarImageQuery extends DefaultServlet {
32
33 DataServer server = new DataServer();
34
35 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
36
37 try {
38 String dateParam = request.getParameter("datetime");
39 Date date = new Date(Date.parse(dateParam));
40
41
42 CircleCondition circleCon = ServletHelper.makeCircleCondition(request);
43 String formatParam = request.getParameter("FORMAT");
44 if (formatParam == null) formatParam = request.getParameter("format");
45
46
47 StringTokenizer tokenizer = new StringTokenizer(formatParam, ",");
48 String[] formats = new String[tokenizer.countTokens()];
49 for (int i = 0; i < formats.length; i++) {
50 formats[i] = tokenizer.nextToken();
51 }
52
53
54
55 String format = formats[0];
56
57
58 ReturnSpec returnSpec = null;
59 boolean isTable = (ReturnTable.isTableFormat(formats));
60 boolean isImage = (ReturnImage.isImageFormat(formats));
61
62
63 if ((isTable) && (isImage)) {
64 throw new IllegalArgumentException("Specify either image or table format, not both. Given="+formatParam);
65 }
66 if (isImage) {
67 returnSpec = new ReturnImage(TargetMaker.makeTarget(response.getWriter()), format);
68 }
69 else {
70
71 returnSpec = new ReturnTable(TargetMaker.makeTarget(response.getWriter()), format);
72 }
73
74 try {
75 server.askQuery(LoginAccount.ANONYMOUS, new Query(circleCon, returnSpec), this);
76 } catch (Throwable e) {
77 doError(response, "SIAP error (RA="+circleCon.getRa()+", DEC="+circleCon.getDec()+", SIZE="+circleCon.getRadius()+", FORMAT="+formatParam+")", e);
78 }
79
80 } catch (NumberFormatException e) {
81 doError(response, "Input parameters not correct",e);
82 }
83 }
84 }
85
86