/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2007-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.web.svclayer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.opennms.netmgt.model.OnmsLocationMonitor;
import org.opennms.netmgt.model.OnmsMonitoringLocationDefinition;
import org.opennms.netmgt.model.OnmsLocationMonitor.MonitorStatus;
import org.springframework.validation.Errors;
/**
* <p>LocationMonitorListModel class.</p>
*
* @author <a href="mailto:dj@opennms.org">DJ Gregor</a>
* @version $Id: $
* @since 1.8.1
*/
public class LocationMonitorListModel {
private static final String HOST_ADDRESS_KEY = "org.opennms.netmgt.poller.remote.hostAddress";
private static final String HOST_NAME_KEY = "org.opennms.netmgt.poller.remote.hostName";
private Errors m_errors;
private List<LocationMonitorModel> m_locationMonitors;
/**
* <p>Constructor for LocationMonitorListModel.</p>
*/
public LocationMonitorListModel() {
}
/**
* <p>getLocationMonitors</p>
*
* @return a {@link java.util.List} object.
*/
public List<LocationMonitorModel> getLocationMonitors() {
return m_locationMonitors;
}
/**
* <p>setLocationMonitors</p>
*
* @param locationMonitors a {@link java.util.List} object.
*/
public void setLocationMonitors(List<LocationMonitorModel> locationMonitors) {
m_locationMonitors = locationMonitors;
}
/**
* <p>addLocationMonitor</p>
*
* @param locationMonitor a {@link org.opennms.web.svclayer.LocationMonitorListModel.LocationMonitorModel} object.
*/
public void addLocationMonitor(LocationMonitorModel locationMonitor) {
if (m_locationMonitors == null) {
m_locationMonitors = new LinkedList<LocationMonitorModel>();
}
m_locationMonitors.add(locationMonitor);
}
/**
* <p>getErrors</p>
*
* @return a {@link org.springframework.validation.Errors} object.
*/
public Errors getErrors() {
return m_errors;
}
/**
* <p>setErrors</p>
*
* @param errors a {@link org.springframework.validation.Errors} object.
*/
public void setErrors(Errors errors) {
m_errors = errors;
}
public static class LocationMonitorModel {
private String m_area;
private String m_definitionName;
private int m_id;
private String m_name;
private String m_hostName;
private String m_ipAddress;
private MonitorStatus m_status;
private Date m_lastCheckInTime;
private Map<String, String> m_additionalDetails;
public LocationMonitorModel() {
}
/**
* Create a LocationMonitorModel and populate it with data from a
* OnmsLocationMonitor and OnmsMonitoringLocationDefinition (if any).
*
* @param monitor the location monitor
* @param def the monitoring location definition for the location monitor (if any; can be null)
*/
public LocationMonitorModel(OnmsLocationMonitor monitor, OnmsMonitoringLocationDefinition def) {
if (monitor == null) {
throw new IllegalArgumentException("monitor argument cannot be null");
}
// def can be null
if (def != null && def.getArea() != null) {
setArea(def.getArea());
}
setDefinitionName(monitor.getDefinitionName());
setId(monitor.getId());
setHostName(monitor.getDetails().get(HOST_NAME_KEY));
setIpAddress(monitor.getDetails().get(HOST_ADDRESS_KEY));
setStatus(monitor.getStatus());
setLastCheckInTime(monitor.getLastCheckInTime());
List<Entry<String, String>> details = new ArrayList<Entry<String, String>>(monitor.getDetails().entrySet());
Collections.sort(details, new Comparator<Entry<String, String>>() {
public int compare(Entry<String, String> one, Entry<String, String> two) {
return one.getKey().compareToIgnoreCase(two.getKey());
}
});
for (Entry<String, String> detail : details) {
if (!detail.getKey().equals(HOST_NAME_KEY) && !detail.getKey().equals(HOST_ADDRESS_KEY)) {
addAdditionalDetail(detail.getKey(), detail.getValue());
}
}
}
public Map<String, String> getAdditionalDetails() {
return m_additionalDetails;
}
public void setAdditionalDetails(Map<String, String> additionalDetails) {
m_additionalDetails = additionalDetails;
}
public void addAdditionalDetail(String key, String value) {
if (m_additionalDetails == null) {
m_additionalDetails = new LinkedHashMap<String, String>();
}
m_additionalDetails.put(key, value);
}
public String getArea() {
return m_area;
}
public void setArea(String area) {
m_area = area;
}
public String getDefinitionName() {
return m_definitionName;
}
public void setDefinitionName(String definitionName) {
m_definitionName = definitionName;
}
public String getHostName() {
return m_hostName;
}
public void setHostName(String hostName) {
m_hostName = hostName;
}
public int getId() {
return m_id;
}
public void setId(int id) {
m_id = id;
}
public String getIpAddress() {
return m_ipAddress;
}
public void setIpAddress(String ipAddress) {
m_ipAddress = ipAddress;
}
public Date getLastCheckInTime() {
return m_lastCheckInTime;
}
public void setLastCheckInTime(Date lastcheckInTime) {
m_lastCheckInTime = lastcheckInTime;
}
public String getName() {
return m_name;
}
public void setName(String name) {
m_name = name;
}
public MonitorStatus getStatus() {
return m_status;
}
public void setStatus(MonitorStatus status) {
m_status = status;
}
}
}