The PartData
, SupplierData
and ShipmentData
classes have been removed in this example, and the Part
,
Supplier
and Shipment
entity classes are used in
their place.
The serial formats are created with the entity classes.
public class SampleDatabase { ... public SampleDatabase(String homeDirectory) throws DatabaseException, FileNotFoundException { ... secConfig.setKeyCreator(new SupplierByCityKeyCreator(javaCatalog,Supplier
.class)); ... secConfig.setKeyCreator(new ShipmentByPartKeyCreator(javaCatalog,Shipment
.class)); ... secConfig.setKeyCreator(new ShipmentBySupplierKeyCreator(javaCatalog,Shipment
.class)); ... } }
The index key creator uses the entity class as well.
public class SampleDatabase { ... private static class SupplierByCityKeyCreator extends TupleSerialKeyCreator { private SupplierByCityKeyCreator(ClassCatalog catalog, Class valueClass) { super(catalog, valueClass); } public boolean createSecondaryKey(TupleInput primaryKeyInput, Object valueInput, TupleOutput indexKeyOutput) {Supplier
supplier = (Supplier
) valueInput; String city = supplier.getCity(); if (city != null) { indexKeyOutput.writeString(supplier.getCity()); return true; } else { return false; } } } }