Package org.locationtech.udig.tool.info.tests

Source Code of org.locationtech.udig.tool.info.tests.WMSBasicTest

/*
*    uDig - User Friendly Desktop Internet GIS client
*    http://udig.refractions.net
*    (C) 2012, Refractions Research Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
* License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
*/
package org.locationtech.udig.tool.info.tests;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.awt.Dimension;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.locationtech.udig.catalog.wmsc.server.MockHttpResponse;
import org.locationtech.udig.project.ILayer;
import org.locationtech.udig.project.IMap;
import org.locationtech.udig.project.internal.render.ViewportModel;
import org.locationtech.udig.project.ui.render.displayAdapter.MapMouseEvent;
import org.locationtech.udig.project.ui.render.displayAdapter.ViewportPane;
import org.locationtech.udig.project.ui.tool.IToolContext;
import org.locationtech.udig.tool.info.InfoTool;
import org.locationtech.udig.tool.info.LayerPointInfo;
import org.locationtech.udig.tool.info.internal.WMSDescribeLayer;

import org.geotools.data.ows.HTTPResponse;
import org.geotools.data.ows.Layer;
import org.geotools.data.wms.WebMapServer;
import org.geotools.data.wms.request.GetFeatureInfoRequest;
import org.geotools.data.wms.response.GetFeatureInfoResponse;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.ows.ServiceException;
import org.geotools.referencing.CRS;
import org.junit.Before;
import org.junit.Test;
import org.opengis.referencing.crs.CoordinateReferenceSystem;

import com.vividsolutions.jts.geom.Envelope;

public class WMSBasicTest {

  public URL stableWMS;

  IMap map;

  ReferencedEnvelope bbox;
  CoordinateReferenceSystem crs;
  ViewportPane viewportPane;
  ViewportModel viewportModel;
  List<ILayer> layers;
  Dimension displaySize;
  Layer wmslayer;

  public WebMapServer wms;

  TestRenderManager renderManager;

  ReferencedEnvelope bufferedClickBbox;
 
  @Before
  public void setUp() throws Exception {
    crs = CRS.decode("EPSG:4326");
   
    Envelope env = new Envelope(-10.0, 10.0, -10.0, 10.0);
    bbox = new ReferencedEnvelope(env, crs);
    bufferedClickBbox = new ReferencedEnvelope(new Envelope(-1.0, 1.0, -1.0, 1.0), crs);
   
    displaySize = new Dimension(400, 400);
    viewportPane = new TestViewportPane(displaySize);
    viewportModel = new TestViewportModel(displaySize, bbox, crs);
    renderManager = new TestRenderManager(viewportPane);

    wmslayer = new Layer("test");
    wmslayer.setName("test");
    wmslayer.setQueryable(true);
    wmslayer.setSrs(Collections.singleton("EPSG:4326"));
   
    stableWMS = new URL("http://vmap0.tiles.osgeo.org/wms/vmap0?SERVICE=wms&VERSION=1.1.0&REQUEST=GetCapabilities");
    wms = new FudgeServer();
   
    layers = new ArrayList<ILayer>();
   
    map = new TestMap(renderManager, viewportModel, layers);
   
    layers.add(new WMSLayer(this.map, this.wmslayer, this.wms));
  }

  @Test
  public void testWMSBasic() throws Exception {
    InfoTool infoTool = new InfoTool();
   
    IToolContext context = new TestToolContext(this.bufferedClickBbox,
        this.crs, this.viewportPane, this.layers, this.viewportModel
        );
   
    infoTool.setContext(context);
   
    MapMouseEvent e = new MapMouseEvent(null, 5, 5,
        MapMouseEvent.NONE, MapMouseEvent.NONE, MapMouseEvent.NONE);
   
        /*
         * box from from InfoTool.mouseReleased()
         */
        Envelope box = context.getBoundingBox( e.getPoint(), 5 );
        ReferencedEnvelope bbox;
        if( box instanceof ReferencedEnvelope) {
            bbox = (ReferencedEnvelope) box;
        }
        else {
            CoordinateReferenceSystem crs = context.getViewportModel().getCRS();
            bbox = new ReferencedEnvelope(box, crs);
           
        }
        /*
         * End InfoTool.mouseReleased() code
         */
   
    LayerPointInfo hit = WMSDescribeLayer.info2(this.layers.get(0), bbox);
   
    assertNotNull(hit);
   
    Object value = hit.acquireValue();
   
    assertNotNull(value);
   
    assertTrue(value.equals("SUCCESS"));
   
  }
 
  public class FudgeServer extends WebMapServer {

   
   
    public FudgeServer() throws IOException, ServiceException {
      super(stableWMS);
    }

    @Override
    public GetFeatureInfoResponse issueRequest(GetFeatureInfoRequest request) throws IOException, ServiceException {
           
      if ((request.getProperties().get(GetFeatureInfoRequest.QUERY_X).equals("200"))
        && (request.getProperties().get(GetFeatureInfoRequest.QUERY_Y).equals("200"))) {
        String success = "SUCCESS";
       
        ByteArrayInputStream input = new ByteArrayInputStream(success.getBytes());
       
        HTTPResponse response = new MockHttpResponse( input, "text/html");
        return new GetFeatureInfoResponse( response );
      }
     
      String failure = "FAILURE";
     
      ByteArrayInputStream input = new ByteArrayInputStream(failure.getBytes());
      HTTPResponse response = new MockHttpResponse( input, "text/html");
     
      return new GetFeatureInfoResponse( response );
    }
   
   
   
  }
}
TOP

Related Classes of org.locationtech.udig.tool.info.tests.WMSBasicTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.