/**
* Copyright (c) 2009--2010 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.domain.server;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
/**
* GuestAndNonVirtHostView is a read-only <i>view</i> of a virtual instance/guest and its
* host.
*
* @see VirtualInstanceFactory
*
* @version $Rev$
*/
public class GuestAndNonVirtHostView {
private Long guestSystemId;
private Long guestOrgId;
private String guestName;
private Long hostOrgId;
private Long hostId;
private String hostName;
/**
* Initializes a view.
*
* @param guestId The guest system id
*
* @param theGuestOrgId The guest org id
*
* @param guestSystemName The guest system's name
*
* @param theHostOrgId The host org id
*
* @param theHostId The host id
*
* @param theHostName The host system's name
*/
public GuestAndNonVirtHostView(Long guestId, Long theGuestOrgId,
String guestSystemName, Long theHostOrgId, Long theHostId, String theHostName) {
guestSystemId = guestId;
guestOrgId = theGuestOrgId;
guestName = guestSystemName;
hostOrgId = theHostOrgId;
hostId = theHostId;
hostName = theHostName;
}
/**
* Initializes a view.
*
* @param guestId The guest system id
*
* @param orgId The org id of the guest
*
* @param guestSystemName The guest system's name
*/
public GuestAndNonVirtHostView(Long guestId, Long orgId,
String guestSystemName) {
guestSystemId = guestId;
guestOrgId = orgId;
guestName = guestSystemName;
}
/**
* Return the guest system id.
*
* @return The guest system id
*/
public Long getGuestId() {
return guestSystemId;
}
/**
* Return the guest org id.
*
* @return The guest org id
*/
public Long getGuestOrgId() {
return guestOrgId;
}
/**
* @return Returns the guestName.
*/
public String getGuestName() {
return guestName;
}
/**
* Return the host org id.
*
* @return The host org id
*/
public Long getHostOrgId() {
if (guestAndHostInSameOrg()) {
return hostOrgId;
}
return null;
}
/**
* @return Returns the hostId.
*/
public Long getHostId() {
if (guestAndHostInSameOrg()) {
return hostId;
}
return null;
}
/**
* @return Returns the hostName.
*/
public String getHostName() {
if (guestAndHostInSameOrg()) {
return hostName;
}
return null;
}
/**
* Return <code>true</code> if the guest org id and host org id are equal.
*
* @return <code>true</code> if the guest org id and host org id are equal.
*/
public boolean guestAndHostInSameOrg() {
return guestOrgId.equals(hostOrgId);
}
/**
* Two GuestAndNonVirtHost objects are considered equal if their <code>
* virtualInstanceId</code> properties are equal.
*
* @param object The object to test
*
* @return <code>true</code> if <code>object</code> is a GuestAndNonVirtHostView and
* the <code>virtualInstanceId</code> properties are equal.
*/
public boolean equals(Object object) {
if (object == null || object.getClass() != this.getClass()) {
return false;
}
GuestAndNonVirtHostView that = (GuestAndNonVirtHostView)object;
EqualsBuilder builder = new EqualsBuilder().append(this.guestSystemId,
that.guestSystemId).append(this.guestOrgId, that.guestOrgId)
.append(this.guestName, that.guestName);
if (guestAndHostInSameOrg()) {
builder.append(this.hostOrgId, that.hostOrgId).append(this.hostId, that.hostId)
.append(this.hostName, that.hostName);
}
return builder.isEquals();
}
/**
*
* {@inheritDoc}
*/
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder().append(guestSystemId)
.append(guestOrgId).append(guestName);
if (guestAndHostInSameOrg()) {
builder.append(hostOrgId).append(hostId).append(hostName);
}
return builder.toHashCode();
}
}