All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator Maven / Gradle / Ivy

The newest version!
/*-
 * Copyright (C) 2002, 2018, 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 com.sleepycat.bind.tuple;

/**
 * A concrete key creator that works in conjunction with a {@link
 * TupleTupleMarshalledBinding}.  This key creator works by calling the
 * methods of the {@link MarshalledTupleKeyEntity} interface to create and
 * clear the index key.
 *
 * 

Note that a marshalled tuple key creator is somewhat less efficient * than a non-marshalled key tuple creator because more conversions are * needed. A marshalled key creator must convert the entry to an object in * order to create the key, while an unmarshalled key creator does not.

* * @author Mark Hayes */ public class TupleTupleMarshalledKeyCreator extends TupleTupleKeyCreator { private String keyName; private TupleTupleMarshalledBinding binding; /** * Creates a tuple-tuple marshalled key creator. * * @param binding is the binding used for the tuple-tuple entity. * * @param keyName is the key name passed to the {@link * MarshalledTupleKeyEntity#marshalSecondaryKey} method to identify the * index key. */ public TupleTupleMarshalledKeyCreator(TupleTupleMarshalledBinding binding, String keyName) { this.binding = binding; this.keyName = keyName; } // javadoc is inherited public boolean createSecondaryKey(TupleInput primaryKeyInput, TupleInput dataInput, TupleOutput indexKeyOutput) { /* The primary key is unmarshalled before marshalling the index key, to * account for cases where the index key includes fields taken from the * primary key. */ E entity = binding.entryToObject(primaryKeyInput, dataInput); return entity.marshalSecondaryKey(keyName, indexKeyOutput); } // javadoc is inherited public boolean nullifyForeignKey(TupleInput dataInput, TupleOutput dataOutput) { E entity = binding.entryToObject(null, dataInput); if (entity.nullifyForeignKey(keyName)) { binding.objectToData(entity, dataOutput); return true; } else { return false; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy