je/examples/collections/ship/marshal/Supplier.java
2021-06-06 13:46:45 -04:00

123 lines
3.2 KiB
Java
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*-
* Copyright (C) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package collections.ship.marshal;
import java.io.Serializable;
import com.sleepycat.bind.tuple.TupleInput;
import com.sleepycat.bind.tuple.TupleOutput;
/**
* A Supplier represents the combined key/data pair for a supplier entity.
*
* <p> In this sample, Supplier is bound to the stored key/data entry by
* implementing the MarshalledEntity interface, which is called by {@link
* SampleViews.MarshalledEntityBinding}. </p>
*
* <p> The binding is "tricky" in that it uses this class for both the stored
* data entry and the combined entity object. To do this, the key field(s) are
* transient and are set by the binding after the data object has been
* deserialized. This avoids the use of a SupplierData class completely. </p>
*
* <p> Since this class is used directly for data storage, it must be
* Serializable. </p>
*
* @author Mark Hayes
*/
public class Supplier implements Serializable, MarshalledEntity {
static final String CITY_KEY = "city";
private transient String number;
private String name;
private int status;
private String city;
public Supplier(String number, String name, int status, String city) {
this.number = number;
this.name = name;
this.status = status;
this.city = city;
}
/**
* Set the transient key fields after deserializing. This method is only
* called by data bindings.
*/
void setKey(String number) {
this.number = number;
}
public final String getNumber() {
return number;
}
public final String getName() {
return name;
}
public final int getStatus() {
return status;
}
public final String getCity() {
return city;
}
public String toString() {
return "[Supplier: number=" + number +
" name=" + name +
" status=" + status +
" city=" + city + ']';
}
// --- MarshalledEntity implementation ---
Supplier() {
// A no-argument constructor is necessary only to allow the binding to
// instantiate objects of this class.
}
public void unmarshalPrimaryKey(TupleInput keyInput) {
this.number = keyInput.readString();
}
public void marshalPrimaryKey(TupleOutput keyOutput) {
keyOutput.writeString(this.number);
}
public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
if (keyName.equals(CITY_KEY)) {
if (this.city != null) {
keyOutput.writeString(this.city);
return true;
} else {
return false;
}
} else {
throw new UnsupportedOperationException(keyName);
}
}
}