Removing the Redundant Value Classes
Prev | Chapter 6. Using Serializable Entities | Next

## Removing the Redundant Value Classes

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;
                }
            }
        }
    }

Prev | Up | Next
Using Transient Fields in an Entity Binding | Home | Chapter 7. Summary