/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.recoverpoint.objectmodel;
import java.util.HashSet;
import java.util.Set;
import com.emc.fapiclient.ws.ConsistencyGroupCopyUID;
import com.emc.fapiclient.ws.RecoverPointTimeStamp;
/**
* Representation of a RecoverPoint bookmark
*/
public class RPBookmark {
private String _bookmarkName;
private ConsistencyGroupCopyUID _cgGroupCopyUID;
private RecoverPointTimeStamp _bookmarkTime;
private ConsistencyGroupCopyUID _productionCopyUID;
private Set<String> _wwnSet;
public RPBookmark() {
_wwnSet = new HashSet<String>();
}
public void setBookmarkTime(RecoverPointTimeStamp bookmarkTime) {
_bookmarkTime = bookmarkTime;
}
public RecoverPointTimeStamp getBookmarkTime() {
return _bookmarkTime;
}
public void setCGGroupCopyUID(ConsistencyGroupCopyUID cgGroupCopyUID) {
_cgGroupCopyUID = cgGroupCopyUID;
}
public ConsistencyGroupCopyUID getCGGroupCopyUID() {
return _cgGroupCopyUID;
}
public String getBookmarkName() {
return _bookmarkName;
}
public void setBookmarkName(String bookmarkName) {
_bookmarkName = bookmarkName;
}
public void setProductionCopyUID(ConsistencyGroupCopyUID productionCopyUID) {
_productionCopyUID = productionCopyUID;
}
public ConsistencyGroupCopyUID getProductionCopyUID() {
return _productionCopyUID;
}
public Set<String> getWWNSet() {
return _wwnSet;
}
public void setWWNSet(Set<String> wWNSet) {
_wwnSet = wWNSet;
}
public void cloneMe(RPBookmark clone) {
_bookmarkName = clone._bookmarkName;
_cgGroupCopyUID = clone._cgGroupCopyUID;
_productionCopyUID = clone.getProductionCopyUID();
_bookmarkTime = clone._bookmarkTime;
_wwnSet = clone._wwnSet;
}
@Override
public String toString() {
return _bookmarkName + ":" + _cgGroupCopyUID.getGlobalCopyUID().getCopyUID() + ":" + _bookmarkTime.getTimeInMicroSeconds();
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result
+ ((_bookmarkTime == null) ? 0 : _bookmarkTime.hashCode());
result = prime
* result
+ ((_cgGroupCopyUID == null) ? 0 : _cgGroupCopyUID.hashCode());
result = prime * result + ((_bookmarkName == null) ? 0 : _bookmarkName.hashCode());
result = prime
* result
+ ((_productionCopyUID == null) ? 0 : _productionCopyUID
.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
RPBookmark other = (RPBookmark) obj;
if (_bookmarkTime == null) {
if (other._bookmarkTime != null) {
return false;
}
} else if (!(_bookmarkTime.getTimeInMicroSeconds() == other._bookmarkTime.getTimeInMicroSeconds())) {
return false;
}
if (_bookmarkName == null) {
if (other._bookmarkName != null) {
return false;
}
} else if (!_bookmarkName.equals(other._bookmarkName)) {
return false;
}
boolean cgGroupCopyEqual = false;
if ((_cgGroupCopyUID.getGlobalCopyUID().getCopyUID() == other._cgGroupCopyUID.getGlobalCopyUID().getCopyUID())
&&
(_cgGroupCopyUID.getGroupUID().getId() == other._cgGroupCopyUID.getGroupUID().getId())
&&
(_cgGroupCopyUID.getGlobalCopyUID().getClusterUID().getId() == other._cgGroupCopyUID.getGlobalCopyUID().getClusterUID()
.getId())) {
cgGroupCopyEqual = true;
}
if (!cgGroupCopyEqual) {
return false;
}
return true;
}
}