/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved.
*
*/
package com.sleepycat.bind.serial.test;
import java.io.Serializable;
import com.sleepycat.bind.tuple.MarshalledTupleKeyEntity;
import com.sleepycat.bind.tuple.TupleInput;
import com.sleepycat.bind.tuple.TupleOutput;
/**
* @author Mark Hayes
*/
@SuppressWarnings("serial")
public class MarshalledObject
implements Serializable, MarshalledTupleKeyEntity {
private String data;
private transient String primaryKey;
private String indexKey1;
private String indexKey2;
public MarshalledObject(String data, String primaryKey,
String indexKey1, String indexKey2) {
this.data = data;
this.primaryKey = primaryKey;
this.indexKey1 = indexKey1;
this.indexKey2 = indexKey2;
}
public boolean equals(Object o) {
try {
MarshalledObject other = (MarshalledObject) o;
return this.data.equals(other.data) &&
this.primaryKey.equals(other.primaryKey) &&
this.indexKey1.equals(other.indexKey1) &&
this.indexKey2.equals(other.indexKey2);
} catch (Exception e) {
return false;
}
}
public String getData() {
return data;
}
public String getPrimaryKey() {
return primaryKey;
}
public String getIndexKey1() {
return indexKey1;
}
public String getIndexKey2() {
return indexKey2;
}
public int expectedKeyLength() {
return primaryKey.length() + 1;
}
public void marshalPrimaryKey(TupleOutput keyOutput) {
keyOutput.writeString(primaryKey);
}
public void unmarshalPrimaryKey(TupleInput keyInput) {
primaryKey = keyInput.readString();
}
public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
if ("1".equals(keyName)) {
if (indexKey1.length() > 0) {
keyOutput.writeString(indexKey1);
return true;
} else {
return false;
}
} else if ("2".equals(keyName)) {
if (indexKey2.length() > 0) {
keyOutput.writeString(indexKey2);
return true;
} else {
return false;
}
} else {
throw new IllegalArgumentException("Unknown keyName: " + keyName);
}
}
public boolean nullifyForeignKey(String keyName) {
if ("1".equals(keyName)) {
if (indexKey1.length() > 0) {
indexKey1 = "";
return true;
} else {
return false;
}
} else if ("2".equals(keyName)) {
if (indexKey2.length() > 0) {
indexKey2 = "";
return true;
} else {
return false;
}
} else {
throw new IllegalArgumentException("Unknown keyName: " + keyName);
}
}
}