/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved.
*
*/
package com.sleepycat.bind.tuple.test;
import com.sleepycat.bind.tuple.MarshalledTupleEntry;
import com.sleepycat.bind.tuple.MarshalledTupleKeyEntity;
import com.sleepycat.bind.tuple.TupleInput;
import com.sleepycat.bind.tuple.TupleOutput;
/**
* @author Mark Hayes
*/
public class MarshalledObject
implements MarshalledTupleEntry, MarshalledTupleKeyEntity {
private String data;
private String primaryKey;
private String indexKey1;
private String indexKey2;
public MarshalledObject() {
}
MarshalledObject(String data, String primaryKey,
String indexKey1, String indexKey2) {
this.data = data;
this.primaryKey = primaryKey;
this.indexKey1 = indexKey1;
this.indexKey2 = indexKey2;
}
String getData() {
return data;
}
String getPrimaryKey() {
return primaryKey;
}
String getIndexKey1() {
return indexKey1;
}
String getIndexKey2() {
return indexKey2;
}
int expectedDataLength() {
return data.length() + 1 +
indexKey1.length() + 1 +
indexKey2.length() + 1;
}
int expectedKeyLength() {
return primaryKey.length() + 1;
}
public void marshalEntry(TupleOutput dataOutput) {
dataOutput.writeString(data);
dataOutput.writeString(indexKey1);
dataOutput.writeString(indexKey2);
}
public void unmarshalEntry(TupleInput dataInput) {
data = dataInput.readString();
indexKey1 = dataInput.readString();
indexKey2 = dataInput.readString();
}
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 (indexKey1.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 (indexKey1.length() > 0) {
indexKey2 = "";
return true;
} else {
return false;
}
} else {
throw new IllegalArgumentException("Unknown keyName: " + keyName);
}
}
}