/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.recoverpoint.objectmodel;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.emc.fapiclient.ws.ClusterSANVolumes;
import com.emc.storageos.recoverpoint.utils.TimestampAdapter;
import com.emc.storageos.recoverpoint.utils.TimestampFormatter;
@XmlRootElement
public class RPSite implements Serializable {
private static final long serialVersionUID = -7772320180511549531L;
private String _siteName;
private long _siteUID;
private String _siteManagementIPv4;
private String _name; // The name is a combination of the site IP addr and the site UID (e.g. 10.241.176.16:1)
private String _siteVersion;
private int _numRPAs;
private Timestamp _lastDiscovered;
private String _username;
private String _password;
private String _model = "RecoverPoint Site";
private ClusterSANVolumes _siteVolumes;
private String _siteGUID;
private String _internalSiteName;
public RPSite() {
super();
}
public void setName(String name) {
this._name = name;
}
@XmlElement
public String getName() {
return _name;
}
@XmlElement
public String getUsername() {
return _username;
}
@XmlElement
public String getPassword() {
return _password;
}
@XmlElement
public String getSiteName() {
return _siteName;
}
@XmlElement
public long getSiteUID() {
return _siteUID;
}
@XmlElement
public String getSiteManagementIPv4() {
return _siteManagementIPv4;
}
/**
* Get the last modified timestamp in a nice format
*
* @return timestamp object
*/
@XmlElement
public String getLastDiscoveredFormatted() {
return TimestampFormatter.toString(_lastDiscovered);
}
@XmlJavaTypeAdapter(TimestampAdapter.class)
public Timestamp getLastDiscovered() {
return _lastDiscovered;
}
public void setLastDiscovered(Timestamp lastDiscovered) {
this._lastDiscovered = lastDiscovered;
}
@XmlElement
public String getSiteVersion() {
return _siteVersion;
}
public void setSiteVersion(String siteVersion) {
this._siteVersion = siteVersion;
}
@XmlElement
public int getNumRPAs() {
return _numRPAs;
}
public void setNumRPAs(int numRPAs) {
this._numRPAs = numRPAs;
}
public void setCredentials(String username, String password) {
this._username = username;
this._password = password;
}
public void setSiteName(String name) {
this._siteName = name;
}
public void setSiteUID(long l) {
this._siteUID = l;
}
public void setSiteManagementIPv4(String IPv4Addr) {
this._siteManagementIPv4 = IPv4Addr;
}
public void cloneMe(RPSite clone) {
setSiteName(clone.getSiteName());
setSiteUID(clone.getSiteUID());
setSiteManagementIPv4(clone.getSiteManagementIPv4());
setName(clone.getName());
setSiteVersion(clone.getSiteVersion());
setNumRPAs(clone.getNumRPAs());
setLastDiscovered(clone.getLastDiscovered());
setUsername(clone.getUsername());
setPassword(clone.getPassword());
setSiteVolumes(clone.getSiteVolumes());
setSiteGUID(clone.getSiteGUID());
}
public void setUsername(String username) {
this._username = username;
}
public void setPassword(String password) {
this._password = password;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((_siteManagementIPv4 == null) ? 0 : _siteManagementIPv4.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (getClass() != obj.getClass()) {
return false;
}
RPSite other = (RPSite) obj;
if (_siteManagementIPv4 == null) {
if (other._siteManagementIPv4 != null) {
return false;
}
} else if (!_siteManagementIPv4.equals(other._siteManagementIPv4)) {
return false;
}
return true;
}
/**
* @return the model
*/
public String getModel() {
return _model;
}
/**
* @param model the model to set
*/
public void setModel(String model) {
this._model = model;
}
@XmlElement
public ClusterSANVolumes getSiteVolumes() {
return _siteVolumes;
}
public void setSiteVolumes(ClusterSANVolumes siteVolumes) {
this._siteVolumes = siteVolumes;
}
public String getSiteGUID() {
return _siteGUID;
}
public void setSiteGUID(String siteGUID) {
this._siteGUID = siteGUID;
}
public String getInternalSiteName() {
return _internalSiteName;
}
public void setInternalSiteName(String internalSiteName) {
this._internalSiteName = internalSiteName;
}
}