001: //=============================================================================
002: //=== Copyright (C) 2001-2007 Food and Agriculture Organization of the
003: //=== United Nations (FAO-UN), United Nations World Food Programme (WFP)
004: //=== and United Nations Environment Programme (UNEP)
005: //===
006: //=== This program is free software; you can redistribute it and/or modify
007: //=== it under the terms of the GNU General Public License as published by
008: //=== the Free Software Foundation; either version 2 of the License, or (at
009: //=== your option) any later version.
010: //===
011: //=== This program is distributed in the hope that it will be useful, but
012: //=== WITHOUT ANY WARRANTY; without even the implied warranty of
013: //=== MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: //=== General Public License for more details.
015: //===
016: //=== You should have received a copy of the GNU General Public License
017: //=== along with this program; if not, write to the Free Software
018: //=== Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
019: //===
020: //=== Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
021: //=== Rome - Italy. email: geonetwork@osgeo.org
022: //==============================================================================
023:
024: package org.wfp.vam.intermap.services.map;
025:
026: import org.jdom.*;
027:
028: import jeeves.interfaces.*;
029: import jeeves.server.*;
030: import jeeves.server.context.*;
031:
032: import org.wfp.vam.intermap.kernel.map.*;
033: import org.wfp.vam.intermap.Constants;
034:
035: //=============================================================================
036:
037: /** main.result service. shows search results
038: */
039:
040: public class Main implements Service {
041: public void init(String appPath, ServiceConfig config)
042: throws Exception {
043: }
044:
045: //--------------------------------------------------------------------------
046: //---
047: //--- Service
048: //---
049: //--------------------------------------------------------------------------
050:
051: public Element exec(Element params, ServiceContext context)
052: throws Exception {
053: // Get the MapMerger object from the user session
054: MapMerger mm = MapUtil.getMapMerger(context);
055:
056: // Show the start page if no services selected
057: Element response = new Element("response");
058: if (mm.size() == 0) // No layers to merge
059: response.addContent(new Element("status").setAttribute(
060: "empty", "true"));
061: // throw new JeevesException("empty");
062: else {
063: // Get the current image size from the user session
064: int width = MapUtil.getImageWidth(context);
065: int height = MapUtil.getImageHeight(context);
066:
067: // Merge the images now, because errors in merging have to be reported
068: // in the layers frame
069: mm.merge(width, height);
070:
071: response.addContent(new Element("status").setAttribute(
072: "empty", "false"));
073: response.addContent(new Element("layersRoot")
074: .addContent(layers(params, context)));
075: response.addContent(new Element("mapRoot").addContent(map(
076: params, context)));
077: }
078:
079: return response;
080: }
081:
082: public Element layers(Element params, ServiceContext context)
083: throws Exception {
084: // Get the MapMerger object from the user session
085: MapMerger mm = MapUtil.getMapMerger(context);
086:
087: if (mm.size() > 0)
088: return new Element("response").setContent(mm.toElement());
089: else
090: return null;
091: }
092:
093: public Element map(Element params, ServiceContext context)
094: throws Exception {
095: // Get the MapMerger object from the user session
096: MapMerger mm = MapUtil.getMapMerger(context);
097:
098: String url = MapUtil.getTempUrl() + "/" + mm.getImageName();
099:
100: String tool = MapUtil.getTool(context);
101:
102: return new Element("response").addContent(
103: new Element(Constants.URL).setText(url)).addContent(
104: new Element("tool").setText(tool)).addContent(
105: mm.toElement()).addContent(
106: new Element("imageWidth").setText(MapUtil
107: .getImageWidth(context)
108: + "")).addContent(
109: new Element("imageHeight").setText(MapUtil
110: .getImageHeight(context)
111: + "")).addContent(
112: new Element("imageSize").setText((String) context
113: .getUserSession().getProperty(
114: Constants.SESSION_SIZE)));
115: }
116:
117: }
118:
119: //=============================================================================
|