/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2010-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * OpenNMS(R) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.features.poller.remote.gwt.client.location; import java.io.Serializable; import java.util.Set; import org.opennms.features.poller.remote.gwt.client.GWTBounds; import org.opennms.features.poller.remote.gwt.client.GWTLatLng; import org.opennms.features.poller.remote.gwt.client.GWTMarkerState; import org.opennms.features.poller.remote.gwt.client.Status; import org.opennms.features.poller.remote.gwt.client.StatusDetails; import org.opennms.features.poller.remote.gwt.client.utils.CompareToBuilder; import org.opennms.features.poller.remote.gwt.client.utils.EqualsUtil; import org.opennms.features.poller.remote.gwt.client.utils.HashCodeBuilder; import org.opennms.features.poller.remote.gwt.client.utils.StringUtils; import com.google.gwt.user.client.rpc.IsSerializable; /** * <p>LocationInfo class.</p> * * @author ranger * @version $Id: $ * @since 1.8.1 */ public class LocationInfo implements IsSerializable, Serializable, Comparable<LocationInfo> { private static final long serialVersionUID = 2001265865152467286L; private String m_name; private String m_area; private String m_geolocation; private String m_coordinates; private Long m_priority = 100L; private GWTMarkerState m_markerState; private StatusDetails m_statusDetails; private Set<String> m_tags; /** * <p>Constructor for LocationInfo.</p> */ public LocationInfo() {} /** * <p>Constructor for LocationInfo.</p> * * @param info a {@link org.opennms.features.poller.remote.gwt.client.location.LocationInfo} object. */ public LocationInfo(final LocationInfo info) { this(info.getName(), info.getArea(), info.getGeolocation(), info.getCoordinates(), info.getPriority(), info.getMarkerState(), info.getStatusDetails(), info.getTags()); } /** * <p>Constructor for LocationInfo.</p> * * @param name a {@link java.lang.String} object. * @param area a {@link java.lang.String} object. * @param geolocation a {@link java.lang.String} object. * @param coordinates a {@link java.lang.String} object. * @param priority a {@link java.lang.Long} object. * @param marker a {@link org.opennms.features.poller.remote.gwt.client.GWTMarkerState} object. * @param statusDetails a {@link org.opennms.features.poller.remote.gwt.client.StatusDetails} object. * @param tags a {@link java.util.Set} object. */ public LocationInfo(final String name, final String area, final String geolocation, final String coordinates, final Long priority, final GWTMarkerState marker, final StatusDetails statusDetails, final Set<String> tags) { setName(name); setArea(area); setGeolocation(geolocation); setCoordinates(coordinates); setPriority(priority); setMarkerState(marker == null ? new GWTMarkerState(name, getLatLng(), statusDetails.getStatus()) : marker); setStatusDetails(statusDetails); setTags(tags); } /** * <p>getName</p> * * @return a {@link java.lang.String} object. */ public String getName() { return m_name; } /** * <p>setName</p> * * @param name a {@link java.lang.String} object. */ public void setName(final String name) { m_name = name; } /** * <p>getArea</p> * * @return a {@link java.lang.String} object. */ public String getArea() { return m_area; } /** * <p>setArea</p> * * @param area a {@link java.lang.String} object. */ public void setArea(final String area) { m_area = area; } /** * <p>getGeolocation</p> * * @return a {@link java.lang.String} object. */ public String getGeolocation() { return m_geolocation; } /** * <p>setGeolocation</p> * * @param geolocation a {@link java.lang.String} object. */ public void setGeolocation(final String geolocation) { m_geolocation = geolocation; } /** * <p>getCoordinates</p> * * @return a {@link java.lang.String} object. */ public String getCoordinates() { return m_coordinates; } /** * <p>setCoordinates</p> * * @param coordinates a {@link java.lang.String} object. */ public void setCoordinates(final String coordinates) { m_coordinates = coordinates; } /** * <p>getPriority</p> * * @return a {@link java.lang.Long} object. */ public Long getPriority() { return m_priority; } /** * <p>setPriority</p> * * @param priority a {@link java.lang.Long} object. */ public void setPriority(final Long priority) { m_priority = priority; } /** * <p>getTags</p> * * @return a {@link java.util.Set} object. */ public Set<String> getTags() { return m_tags; } /** * <p>setTags</p> * * @param tags a {@link java.util.Set} object. */ public void setTags(final Set<String> tags) { m_tags = tags; } /** * <p>getStatusDetails</p> * * @return a {@link org.opennms.features.poller.remote.gwt.client.StatusDetails} object. */ public StatusDetails getStatusDetails() { if (m_statusDetails == null) { return StatusDetails.unknown(); } return m_statusDetails; } /** * <p>setStatusDetails</p> * * @param status a {@link org.opennms.features.poller.remote.gwt.client.StatusDetails} object. */ public void setStatusDetails(final StatusDetails status) { m_statusDetails = status; if (m_markerState != null && status != null) { m_markerState.setStatus(status.getStatus()); } } /** * <p>getMarkerState</p> * * @return a {@link org.opennms.features.poller.remote.gwt.client.GWTMarkerState} object. */ public GWTMarkerState getMarkerState() { return m_markerState; } /** * <p>setMarkerState</p> * * @param markerState a {@link org.opennms.features.poller.remote.gwt.client.GWTMarkerState} object. */ public void setMarkerState(final GWTMarkerState markerState) { m_markerState = markerState; } /** * <p>getLatLng</p> * * @return a {@link org.opennms.features.poller.remote.gwt.client.GWTLatLng} object. */ public GWTLatLng getLatLng() { return GWTLatLng.fromCoordinates(getCoordinates()); } /** * <p>isVisible</p> * * @param bounds a {@link org.opennms.features.poller.remote.gwt.client.GWTBounds} object. * @return a boolean. */ public boolean isVisible(final GWTBounds bounds) { return bounds.contains(getLatLng()); } /** {@inheritDoc} */ public boolean equals(Object aThat) { if (this == aThat) return true; if (!(aThat instanceof LocationInfo)) return false; LocationInfo that = (LocationInfo)aThat; return EqualsUtil.areEqual(this.getName(), that.getName()); } /** * <p>hashCode</p> * * @return a int. */ public int hashCode() { return new HashCodeBuilder() .append(this.getName()) .toHashcode(); } /** * <p>compareTo</p> * * @param that a {@link org.opennms.features.poller.remote.gwt.client.location.LocationInfo} object. * @return a int. */ public int compareTo(final LocationInfo that) { return new CompareToBuilder() .append(this.getStatusDetails(), that.getStatusDetails()) .append(this.getPriority(), that.getPriority()) .append(this.getName(), that.getName()) .toComparison(); } /** * <p>toString</p> * * @return a {@link java.lang.String} object. */ public String toString() { return "LocationInfo[name=" + m_name + ",area=" + m_area + ",geolocation=" + m_geolocation + ",coordinates=" + m_coordinates + ",priority=" + m_priority + ",status=" + m_statusDetails.toString() + ",marker=" + m_markerState + ",tags=[" + StringUtils.join(m_tags, ",") + "]"; } /** * <p>getMarkerImageURL</p> * * @return a {@link java.lang.String} object. */ public String getMarkerImageURL() { return m_markerState.getImageURL(); } public boolean hasTag(String selectedTag) { return getTags() != null && getTags().contains(selectedTag); } public Status getStatus() { return getStatusDetails().getStatus(); } }