Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) SiteWhere, LLC. All rights reserved. http://www.sitewhere.com
   *
   * The software in this package is published under the terms of the CPAL v1.0
   * license, a copy of which has been included with this distribution in the
   * LICENSE.txt file.
   */
  package com.sitewhere.geospatial;
  
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 
Implementation of com.sitewhere.spi.device.event.processor.IOutboundEventProcessor that performs a series of tests for whether a location is inside or outside of zones, firing alerts if the criteria is met.

Author(s):
Derek
 
 public class ZoneTestEventProcessor extends OutboundEventProcessor {

Static logger instance
 
 	private static Logger LOGGER = Logger.getLogger(ZoneTestEventProcessor.class);

Map of polygons by zone token
 
 	private Map<StringPolygonzoneMap = new HashMap<StringPolygon>();

List of tests to perform
 
 	private List<ZoneTestzoneTests = new ArrayList<ZoneTest>();
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#start()
 	 */
 	public void start() throws SiteWhereException {
 		.info("Starting zone test processor with " + .size() + " tests.");
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#getLogger()
 	 */
 	public Logger getLogger() {
 		return ;
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#stop()
 	 */
 	public void stop() throws SiteWhereException {
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see
 	 * com.sitewhere.rest.model.device.event.processor.OutboundEventProcessor#onLocation
 	 * (com.sitewhere.spi.device.event.IDeviceLocation)
 	 */
 	public void onLocation(IDeviceLocation locationthrows SiteWhereException {
 		for (ZoneTest test : ) {
 			Polygon poly = getZonePolygon(test.getZoneToken());
 			ZoneContainment containment =
 					(poly.contains(GeoUtils.createPointForLocation(location))) ? .
 			if (test.getCondition() == containment) {
 				alert.setType(test.getAlertType());
 				alert.setLevel(test.getAlertLevel());
 				alert.setMessage(test.getAlertMessage());
 				alert.setUpdateState(false);
 				alert.setEventDate(new Date());
 						location.getDeviceAssignmentToken(), alert);
 			}
 		}
 	}

Get cached zone polygon or try to load from datastore.

Parameters:
token
Returns:
Throws:
com.sitewhere.spi.SiteWhereException
	protected Polygon getZonePolygon(String tokenthrows SiteWhereException {
		Polygon poly = .get(token);
		if (poly != null) {
			return poly;
		}
		IZone zone = SiteWhere.getServer().getDeviceManagement().getZone(token);
		if (zone != null) {
			poly = GeoUtils.createPolygonForZone(zone);
			.put(tokenpoly);
			return poly;
		}
		throw new SiteWhereException("Invalid zone token in " + ZoneTestEventProcessor.class.getName() + ": "
token);
	}
	public List<ZoneTestgetZoneTests() {
		return ;
	}
	public void setZoneTests(List<ZoneTestzoneTests) {
		this. = zoneTests;
	}
New to GrepCode? Check out our FAQ X