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

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

Go to download

Berkeley DB Java Edition is a open source, transactional storage solution for Java applications. The Direct Persistence Layer (DPL) API is faster and easier to develop, deploy, and manage than serialized object files or ORM-based Java persistence solutions. The Collections API enhances the standard java.util.collections classes allowing them to be persisted to a local file system and accessed concurrently while protected by ACID transactions. Data is stored by serializing objects and managing class and instance data separately so as not to waste space. Berkeley DB Java Edition is the reliable drop-in solution for complex, fast, and scalable storage. Source for this release is in 'je-4.0.92-sources.jar', the Javadoc is located at 'http://download.oracle.com/berkeley-db/docs/je/4.0.92/'.

There is a newer version: 5.0.73
Show 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;

import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.ForeignKeyNullifier;
import com.sleepycat.je.SecondaryDatabase;
import com.sleepycat.je.SecondaryKeyCreator;

/**
 * An abstract key creator that uses a tuple key and a tuple data entry. This
 * class takes care of converting the key and data entry to/from {@link
 * TupleInput} and {@link TupleOutput} objects.
 * The following abstract method must be implemented by a concrete subclass
 * to create the index key using these objects
 * 
    *
  • {@link #createSecondaryKey(TupleInput,TupleInput,TupleOutput)}
  • *
*

If {@link com.sleepycat.je.ForeignKeyDeleteAction#NULLIFY} was * specified when opening the secondary database, the following method must be * overridden to nullify the foreign index key. If NULLIFY was not specified, * this method need not be overridden.

*
    *
  • {@link #nullifyForeignKey(TupleInput,TupleOutput)}
  • *
*

If {@link com.sleepycat.je.ForeignKeyDeleteAction#NULLIFY} was * specified when creating the secondary, this method is called when the * entity for this foreign key is deleted. If NULLIFY was not specified, * this method will not be called and may always return false.

* * @author Mark Hayes */ public abstract class TupleTupleKeyCreator extends TupleBase implements SecondaryKeyCreator, ForeignKeyNullifier { /** * Creates a tuple-tuple key creator. */ public TupleTupleKeyCreator() { } // javadoc is inherited public boolean createSecondaryKey(SecondaryDatabase db, DatabaseEntry primaryKeyEntry, DatabaseEntry dataEntry, DatabaseEntry indexKeyEntry) { TupleOutput output = getTupleOutput(null); TupleInput primaryKeyInput = entryToInput(primaryKeyEntry); TupleInput dataInput = entryToInput(dataEntry); if (createSecondaryKey(primaryKeyInput, dataInput, output)) { outputToEntry(output, indexKeyEntry); return true; } else { return false; } } // javadoc is inherited public boolean nullifyForeignKey(SecondaryDatabase db, DatabaseEntry dataEntry) { TupleOutput output = getTupleOutput(null); if (nullifyForeignKey(entryToInput(dataEntry), output)) { outputToEntry(output, dataEntry); return true; } else { return false; } } /** * Creates the index key from primary key tuple and data tuple. * * @param primaryKeyInput is the {@link TupleInput} for the primary key * entry. * * @param dataInput is the {@link TupleInput} for the data entry. * * @param indexKeyOutput is the destination index key tuple. * * @return true if a key was created, or false to indicate that the key is * not present. */ public abstract boolean createSecondaryKey(TupleInput primaryKeyInput, TupleInput dataInput, TupleOutput indexKeyOutput); /** * Clears the index key in the tuple data entry. The dataInput should be * read and then written to the dataOutput, clearing the index key in the * process. * *

The secondary key should be output or removed by this method such * that {@link #createSecondaryKey} will return false. Other fields in the * data object should remain unchanged.

* * @param dataInput is the {@link TupleInput} for the data entry. * * @param dataOutput is the destination {@link TupleOutput}. * * @return true if the key was cleared, or false to indicate that the key * is not present and no change is necessary. */ public boolean nullifyForeignKey(TupleInput dataInput, TupleOutput dataOutput) { return false; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy