/** adds a new OWS to one of the WMC available a MapWindow TODO */ void doAddows() { System.out.println(parameter); ViewContext vc = getCurrentViewContext(portlet.getID()); Layer layer = vc.getLayerList().getLayers()[0]; parameter.get("FORMAT"); // TODO }
/** removes an OWS from a MapWindow */ void doRemoveows() { System.out.println(parameter); String title = parameter.get("TITLE"); ViewContext vc = getCurrentViewContext(portlet.getID()); Layer[] layers = vc.getLayerList().getLayers(); for (int i = 0; i < layers.length; i++) { Server server = layers[i].getServer(); if (server.getTitle().equals(title)) { vc.getLayerList().removeLayer(layers[i].getName()); } } }
/* * (non-Javadoc) * * @see * org.deegree.enterprise.control.ajax.AbstractListener#actionPerformed(org.deegree.enterprise.control.ajax.WebEvent * , org.deegree.enterprise.control.ajax.ResponseHandler) */ @SuppressWarnings("unchecked") public void actionPerformed(WebEvent event, ResponseHandler responseHandler) throws IOException { Map<Object, Object> parameter = event.getParameter(); String node = (String) parameter.get("node"); String nodeTitle = (String) parameter.get("nodeTitle"); String parentNode = (String) parameter.get("parentNode"); ViewContext vc = (ViewContext) event.getSession().getAttribute(Constants.CURRENTMAPCONTEXT); MapModel mapModel = vc.getGeneral().getExtension().getMapModel(); LayerGroup parent = (LayerGroup) mapModel.getMapModelEntryByIdentifier(parentNode); LayerGroup newLayerGroup = new LayerGroup(node, nodeTitle, false, false, parent, mapModel); try { mapModel.insert(newLayerGroup, parent, null, true); } catch (Exception e) { LOG.logError(e); responseHandler.writeAndClose("ERROR: " + e.getMessage()); } }
/** * selects the current context of a MapWindowPortlet * * @throws PortalException */ void doSelectwmc() throws PortalException { String cntxid = parameter.get("WMCID"); PortletSet ps = portlet.getPortletConfig().getPortletSet(); String mapid = ps.getPortletByName("iGeoPortal:MapActionPortlet").getID(); Portlet port = ps.getPortletByID(mapid); port.getPortletConfig().setInitParameter(INIT_WMC, cntxid); String mwinid = getInitParam(INIT_MAPPORTLETID); port = ps.getPortletByID(mwinid); port.getPortletConfig().setInitParameter(INIT_WMC, cntxid); request.setAttribute(PARAM_MAPPORTLET, mwinid); ViewContext vc = null; if ("true".equals(getInitParam(INIT_KEEP_BBOX))) { // get old current context to read its bounding box vc = getCurrentViewContext(parameter.get("MAPPORTLET")); Point[] currentEnv = vc.getGeneral().getBoundingBox(); // get new current context to set its bounding box with value of the // old current context bounding box to keep viewing area vc = getNamedViewContext(cntxid); try { vc.getGeneral().setBoundingBox(currentEnv); } catch (ContextException e) { LOG.logError(e.getMessage(), e); throw new PortalException(e.getMessage(), e); } } else { vc = getNamedViewContext(cntxid); } setCurrentMapContext(vc, getInitParam(INIT_MAPPORTLETID)); setCurrentMapContextName(getInitParam(INIT_MAPPORTLETID), cntxid); }
/** * sets the name of the the layers that are activated for feature info requests in the uses WMC */ void setCurrentFILayer() { String tmp = parameter.get(PARAM_CURRENTFILAYER); String[] fiLayer = StringTools.toArray(tmp, ",", false); if (fiLayer != null) { List<String> list = Arrays.asList(fiLayer); list = new ArrayList<String>(list); ViewContext vc = getCurrentViewContext(portlet.getID()); LayerList layerList = vc.getLayerList(); Layer[] layers = layerList.getLayers(); for (int i = 0; i < layers.length; i++) { try { if (list.contains(layers[i].getName())) { layers[i].getExtension().setSelectedForQuery(true); } else { layers[i].getExtension().setSelectedForQuery(false); } } catch (Exception e) { // TODO: handle exception LOG.logError(e.getMessage(), e); } } } }
/** * appends the selected layers of a WMS to the passed <code>ViewContext</code> * * @param context * @throws ContextException * @throws MalformedURLException * @throws PortalException * @throws InvalidCapabilitiesException */ private void appendWMS(RPCWebEvent rpc, ViewContext context) throws MalformedURLException, ContextException, PortalException, InvalidCapabilitiesException { RPCStruct struct = (RPCStruct) rpc.getRPCMethodCall().getParameters()[0].getValue(); URL url = new URL((String) struct.getMember("WMSURL").getValue()); String name = (String) struct.getMember("WMSNAME").getValue(); String version = (String) struct.getMember("WMSVERSION").getValue(); String layers = (String) struct.getMember("LAYERS").getValue(); String formatName = (String) struct.getMember("FORMAT").getValue(); boolean useAuthentification = false; if (struct.getMember("useAuthentification") != null) { String tmp = (String) struct.getMember("useAuthentification").getValue(); useAuthentification = "true".equalsIgnoreCase(tmp); } List<String> list = StringTools.toList(layers, ";", true); WMSCapabilitiesDocument capa = null; try { StringBuffer sb = new StringBuffer(500); if ("1.0.0".equals(version)) { sb.append(url.toExternalForm()).append("?request=capabilities&service=WMS"); } else { sb.append(url.toExternalForm()).append("?request=GetCapabilities&service=WMS"); } if (useAuthentification) { HttpSession session = ((HttpServletRequest) getRequest()).getSession(); String user = ((org.apache.jetspeed.om.security.BaseJetspeedUser) session.getAttribute("turbine.user")) .getUserName(); String password = ((org.apache.jetspeed.om.security.BaseJetspeedUser) session.getAttribute("turbine.user")) .getPassword(); if (!"anon".equals(user)) { sb.append("&user="******"&password="******"GetCapabilites for added WMS", sb.toString()); capa = WMSCapabilitiesDocumentFactory.getWMSCapabilitiesDocument(new URL(sb.toString())); } catch (Exception e) { LOG.logError(e.getMessage(), e); String msg = null; if ("1.0.0".equals(version)) { msg = StringTools.concat( 500, "could not load WMS capabilities from: ", new URL(url.toExternalForm() + "?request=capabilities&service=WMS"), "; reason: ", e.getMessage()); } else { msg = StringTools.concat( 500, "could not load WMS capabilities from: ", new URL(url.toExternalForm() + "?request=GetCapabilities&service=WMS"), "; reason: ", e.getMessage()); } throw new PortalException(msg); } WMSCapabilities capabilities = (WMSCapabilities) capa.parseCapabilities(); String rootTitle = capabilities.getLayer().getTitle(); // ---------------------------------------------------------------------------- // stuff required by layerlist tree view Node root = context.getGeneral().getExtension().getLayerTreeRoot(); // check if Node width this title already exists Node[] nodes = root.getNodes(); int newNodeId = -1; for (int j = 0; j < nodes.length; j++) { if (nodes[j].getTitle().equals(rootTitle)) { newNodeId = nodes[j].getId(); break; } } if (newNodeId == -1) { newNodeId = root.getMaxNodeId() + 1; Node newNode = new Node(newNodeId, root, rootTitle, true, false); Node[] newNodes = new Node[nodes.length + 1]; newNodes[0] = newNode; for (int j = 0; j < nodes.length; j++) { newNodes[j + 1] = nodes[j]; } root.setNodes(newNodes); } // ---------------------------------------------------------------------------- for (int i = 0; i < list.size(); i++) { String[] lay = StringTools.toArray(list.get(i), "|", false); Server server = new Server(name, version, "OGC:WMS", url, capabilities); String srs = context.getGeneral().getBoundingBox()[0].getCoordinateSystem().getPrefixedName(); Format format = new Format(formatName, true); FormatList fl = new FormatList(new Format[] {format}); // read available styles from WMS capabilities and add them // to the WMC layer org.deegree.ogcwebservices.wms.capabilities.Layer wmslay = capabilities.getLayer(lay[0]); org.deegree.ogcwebservices.wms.capabilities.Style[] wmsstyles = wmslay.getStyles(); Style[] styles = null; if (wmsstyles == null || wmsstyles.length == 0) { // a wms capabilities layer may offeres one or more styles for // a layer but it don't have to. But WMC must have at least one // style for each layer; So we set a default style in the case // a wms does not declares one styles = new Style[1]; styles[0] = new Style("", "default", "", null, true); } else { styles = new Style[wmsstyles.length]; for (int j = 0; j < styles.length; j++) { boolean isDefault = wmsstyles[j].getName().toLowerCase().indexOf("default") > -1 || wmsstyles[j].getName().trim().length() == 0; ImageURL legendURL = null; LegendURL[] lUrl = wmsstyles[j].getLegendURL(); if (lUrl != null && lUrl.length > 0) { legendURL = new ImageURL( lUrl[0].getWidth(), lUrl[0].getHeight(), lUrl[0].getFormat(), lUrl[0].getOnlineResource()); } styles[j] = new Style( wmsstyles[j].getName(), wmsstyles[j].getTitle(), wmsstyles[j].getAbstract(), legendURL, isDefault); } } StyleList styleList = new StyleList(styles); BaseURL mdUrl = null; MetadataURL[] mdUrls = wmslay.getMetadataURL(); if (mdUrls != null && mdUrls.length == 1 && mdUrls[0] != null) { mdUrl = mdUrls[0]; } int authentication = LayerExtension.NONE; if (useAuthentification) { authentication = LayerExtension.USERPASSWORD; } LayerExtension lex = new LayerExtension( null, false, wmslay.getScaleHint().getMin(), wmslay.getScaleHint().getMax(), false, authentication, newNodeId, false, null); Layer newLay = new Layer( server, lay[0], lay[1], null, new String[] {srs}, null, mdUrl, fl, styleList, wmslay.isQueryable(), false, lex); if (context .getLayerList() .getLayer(newLay.getName(), server.getOnlineResource().toExternalForm()) == null) { context.getLayerList().addLayerToTop(newLay); } } try { XMLFragment xml = XMLFactory.export(context); System.out.println(xml.getAsPrettyString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }