/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2006-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.netmgt.config;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
* <p>OwnedInterval class.</p>
*
* @author ranger
* @version $Id: $
*/
public class OwnedInterval extends TimeInterval {
private List<Owner> m_owners;
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param owned a {@link org.opennms.netmgt.config.OwnedInterval} object.
*/
public OwnedInterval(OwnedInterval owned) {
this(owned.getOwners(), owned.getStart(), owned.getEnd());
}
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param interval a {@link org.opennms.netmgt.config.TimeInterval} object.
*/
public OwnedInterval(TimeInterval interval) {
this(interval.getStart(), interval.getEnd());
}
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param owner a {@link org.opennms.netmgt.config.Owner} object.
* @param interval a {@link org.opennms.netmgt.config.TimeInterval} object.
*/
public OwnedInterval(Owner owner, TimeInterval interval) {
this(owner, interval.getStart(), interval.getEnd());
}
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param owners a {@link java.util.List} object.
* @param interval a {@link org.opennms.netmgt.config.TimeInterval} object.
*/
public OwnedInterval(List<Owner> owners, TimeInterval interval) {
this(owners, interval.getStart(), interval.getEnd());
}
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param start a {@link java.util.Date} object.
* @param end a {@link java.util.Date} object.
*/
public OwnedInterval(Date start, Date end) {
this(new ArrayList<Owner>(0), start, end);
}
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param owner a {@link org.opennms.netmgt.config.Owner} object.
* @param start a {@link java.util.Date} object.
* @param end a {@link java.util.Date} object.
*/
public OwnedInterval(Owner owner, Date start, Date end) {
this(Collections.singletonList(owner), start, end);
}
/**
* <p>Constructor for OwnedInterval.</p>
*
* @param owners a {@link java.util.List} object.
* @param start a {@link java.util.Date} object.
* @param end a {@link java.util.Date} object.
*/
public OwnedInterval(List<Owner> owners, Date start, Date end) {
super(start, end);
m_owners = new ArrayList<Owner>(owners);
Collections.sort(m_owners);
}
/**
* <p>getOwners</p>
*
* @return a {@link java.util.List} object.
*/
public List<Owner> getOwners() { return m_owners; }
/**
* <p>addOwner</p>
*
* @param owner a {@link org.opennms.netmgt.config.Owner} object.
*/
public void addOwner(Owner owner) { m_owners.add(owner); Collections.sort(m_owners); }
/**
* <p>removeOwner</p>
*
* @param owner a {@link org.opennms.netmgt.config.Owner} object.
*/
public void removeOwner(Owner owner) { m_owners.remove(owner); }
/**
* <p>addOwners</p>
*
* @param owners a {@link java.util.List} object.
*/
public void addOwners(List<Owner> owners) { m_owners.addAll(owners); Collections.sort(m_owners); }
/**
* <p>removeOwners</p>
*
* @param owners a {@link java.util.List} object.
*/
public void removeOwners(List<Owner> owners) { m_owners.removeAll(owners); }
/**
* <p>isOwner</p>
*
* @param owner a {@link org.opennms.netmgt.config.Owner} object.
* @return a boolean.
*/
public boolean isOwner(Owner owner) { return m_owners.contains(owner); }
/**
* <p>isOwned</p>
*
* @return a boolean.
*/
public boolean isOwned() { return !m_owners.isEmpty(); }
/**
* <p>toString</p>
*
* @return a {@link java.lang.String} object.
*/
public String toString() {
StringBuffer sb = new StringBuffer();
if (m_owners.isEmpty()) {
sb.append("UNOWNED");
} else {
for (int i = 0; i < m_owners.size(); i++) {
if (i != 0) {
sb.append(",");
}
sb.append(m_owners.get(i));
}
}
return sb.toString()+super.toString();
}
/** {@inheritDoc} */
@Override
public int hashCode() { return 123; }
/** {@inheritDoc} */
@Override
public boolean equals(final Object o) {
if (o == null) return false;
if (o instanceof OwnedInterval) {
final OwnedInterval owned = (OwnedInterval) o;
return super.equals(owned) && m_owners.equals(owned.m_owners);
}
return false;
}
}