1 package org.molwind.servlet;
2 /*
3 * This file is part of Molwind.
4 *
5 * Molwind is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * Molwind is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with Molwind. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19
20 import org.molwind.util.MolwindServerConfiguration;
21 import org.molwind.util.MolwindLogger;
22 import org.molwind.model.LayeredPosition;
23 import org.molwind.view.Tiles;
24
25
26
27 import java.io.File;
28 import java.io.IOException;
29 import java.io.OutputStream;
30
31
32 import javax.servlet.http.HttpServletRequest;
33 import javax.servlet.http.HttpServletResponse;
34 import javax.servlet.ServletOutputStream;
35
36
37
38
39
40 /**
41 * GetWorldNamesCommand implements a Command which can be invoked by a client via Webservice
42 * to get Images
43 *
44 *
45 * @author <a href="mailto:Oktay.Degirmenci@merck.de">Oktay Degirmenci</a>
46 */
47 public class GetImageCommand extends AbstractCommand{
48
49
50 ServletOutputStream out = null;
51
52 private String DEFAULT_IMGLOCATION="/resources";//TODO find a good default_imagelocation
53 private String imageLocation=DEFAULT_IMGLOCATION;
54 File image = null;
55
56 /**
57 * Name of the parameter, which includes the name of the world.
58 */
59 public static final String IMAGE_PARAM = "image";
60
61 public static final String PARAM_WORLD = "world";
62
63 /**
64 * Default name of a Molwind world.
65 */
66 public static final String DEFAULT_WORLD = "default";
67
68 /**
69 * Name of the parameter, which includes the name of the called command
70 */
71 public static final String PARAM_COMMAND = "command";
72
73 /**
74 * Default name of a command
75 */
76 public static final String DEFAULT_COMMAND ="defCommand";
77
78
79 /**
80 * Get the ImageLocation value.
81 * @return the ImageLocation value.
82 */
83 public String getImageLocation() {
84 return imageLocation;
85 }
86
87 /**
88 * Set the ImageLocation value.
89 * @param newImageLocation The new ImageLocation value.
90 */
91 public void setImageLocation(String newImageLocation) {
92 this.imageLocation = newImageLocation;
93 }
94
95
96 /**
97 * Reads the requested position from the request object.
98 *
99 * @param request
100 * an {@link javax.servlet.http.HttpServletRequest} object, contains
101 * the request the client has made of the servlet
102 * @return
103 * the parsed position
104 */
105 private LayeredPosition parsePosition(final HttpServletRequest request) {
106 int x = parseInt(request, "X", 0);
107 int y = parseInt(request, "Y", 0);
108 int l = parseInt(request, "L", 0);
109 return new LayeredPosition(x, y, l);
110 }
111
112 /**
113 * Tries to read the world name from the request object.
114 *
115 * @param request
116 * an {@link javax.servlet.http.HttpServletRequest} object, contains
117 * the request the client has made of the servlet
118 * @return
119 * the parsed world name
120 */
121 private String parseWorldName(final HttpServletRequest request) {
122 String worldName = request.getParameter(PARAM_WORLD);
123
124 if (worldName == null) {
125 return DEFAULT_WORLD;
126 } else {
127 return worldName;
128 }
129 }
130
131
132 /**
133 * Tries to read integer values from the request object.
134 *
135 * @param request
136 * an {@link javax.servlet.http.HttpServletRequest} object, contains
137 * the request the client has made of the servlet
138 * @param paramName
139 * the name of the parameter
140 * @param defaultValue
141 * the default value
142 * @return
143 * the parsed integer
144 */
145 private int parseInt(final HttpServletRequest request,
146 final String paramName, final int defaultValue) {
147 int x = defaultValue;
148 String paramString = request.getParameter(paramName);
149
150 if (paramString != null) {
151 try {
152 x = Integer.parseInt(paramString);
153 } catch (NumberFormatException nfe) {
154 MolwindLogger.warn("Request parameter "
155 + paramName + " is invalid");
156 x = defaultValue;
157 }
158 }
159
160 return x;
161 }
162
163
164 /**
165 * Executes the GetImageCommand
166 * @param request
167 * an {@link javax.servlet.http.HttpServletRequest} object, contains
168 * the request the client has made of the servlet
169 *
170 * @param response
171 * an {@link javax.servlet.http.HttpServletResponse} object, contains
172 * the response the client will get from the servlet
173 *
174 *
175 */
176 public void execute(HttpServletRequest request,HttpServletResponse response){
177
178 System.out.println("Es lebt");
179
180 }
181
182
183
184 /**
185 * Executes the GetImageCommand
186 * @param request
187 * an {@link javax.servlet.http.HttpServletRequest} object, contains
188 * the request the client has made of the servlet
189 *
190 * @param response
191 * an {@link javax.servlet.http.HttpServletResponse} object, contains
192 * the response the client will get from the servlet
193 *
194 *
195 */
196 // public void execute(HttpServletRequest request,HttpServletResponse response)
197 // {
198 // MolwindLogger.debug("Parsing request: " + request);
199 // String worldName = parseWorldName(request);
200
201 // LayeredPosition position = parsePosition(request);
202 // MolwindLogger.debug("World: "
203 // + worldName + ", position request: " + position);
204
205
206 // if (position.isOrigin()) {
207 // System.err.println("Is Origin!!!");
208 // // TODO Dispatch to some other action
209
210 // } else {
211 // try{
212 // Tiles tiles = Tiles.getInstance(worldName);
213 // response.setContentType("image/jpg");
214 // MolwindLogger.debug("Writing tile of " + position);
215 // OutputStream out = response.getOutputStream();
216
217
218 // tiles.writeTile(position,out);
219 // }catch(IOException ioe){
220
221 // ioe.printStackTrace();
222
223 // }
224
225
226 // }
227
228
229
230 // }
231
232 }