package com.netflix.astyanax.contrib.dualwrites;
/**
* Simple class representing the keyspace pair i.e Source Keyspace --> Destination Keyspace
*
* @author poberai
*
*/
public class DualKeyspaceMetadata {
private final String primaryCluster;
private final String primaryKeyspaceName;
private final String secondaryCluster;
private final String secondaryKeyspaceName;
public DualKeyspaceMetadata(String primaryCluster, String primaryKeyspaceName, String secondaryCluster, String secondaryKeyspaceName) {
if (primaryCluster == null || primaryKeyspaceName == null) {
throw new RuntimeException("primaryCluster and primaryKeyspaceName cannot be NULL");
}
if (secondaryCluster == null || secondaryKeyspaceName == null) {
throw new RuntimeException("secondaryCluster and secondaryKeyspaceName cannot be NULL");
}
this.primaryCluster = primaryCluster;
this.primaryKeyspaceName = primaryKeyspaceName;
this.secondaryCluster = secondaryCluster;
this.secondaryKeyspaceName = secondaryKeyspaceName;
}
public String getPrimaryCluster() {
return primaryCluster;
}
public String getPrimaryKeyspaceName() {
return primaryKeyspaceName;
}
public String getSecondaryCluster() {
return secondaryCluster;
}
public String getSecondaryKeyspaceName() {
return secondaryKeyspaceName;
}
public boolean isReverse(DualKeyspaceMetadata newDualKeyspaceSetup) {
return (!this.equals(newDualKeyspaceSetup) &&
this.primaryCluster.equals(newDualKeyspaceSetup.getSecondaryCluster()) &&
this.secondaryCluster.equals(newDualKeyspaceSetup.getPrimaryCluster()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((primaryCluster == null) ? 0 : primaryCluster.hashCode());
result = prime * result + ((primaryKeyspaceName == null) ? 0 : primaryKeyspaceName.hashCode());
result = prime * result + ((secondaryCluster == null) ? 0 : secondaryCluster.hashCode());
result = prime * result + ((secondaryKeyspaceName == null) ? 0 : secondaryKeyspaceName.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
DualKeyspaceMetadata other = (DualKeyspaceMetadata) obj;
boolean equals = true;
equals &= primaryCluster != null ? primaryCluster.equals(other.primaryCluster) : other.primaryCluster == null;
equals &= primaryKeyspaceName != null ? primaryKeyspaceName.equals(other.primaryKeyspaceName) : other.primaryKeyspaceName == null;
equals &= secondaryCluster != null ? secondaryCluster.equals(other.secondaryCluster) : other.secondaryCluster == null;
equals &= secondaryKeyspaceName != null ? secondaryKeyspaceName.equals(other.secondaryKeyspaceName) : other.secondaryKeyspaceName == null;
return equals;
}
@Override
public String toString() {
return "DualKeyspaceMetadata [primaryCluster=" + primaryCluster + ", primaryKeyspaceName=" + primaryKeyspaceName
+ ", secondaryCluster=" + secondaryCluster + ", secondaryKeyspaceName=" + secondaryKeyspaceName + "]";
}
}