001: /*
002: * Copyright (c) 1998 - 2005 Versant Corporation
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * Versant Corporation - initial API and implementation
010: */
011: package com.versant.core.jdo;
012:
013: import javax.jdo.spi.PersistenceCapable;
014:
015: /**
016: * A class that can be detached by a JDO Genie implementation
017: * must implement this interface.
018: */
019: public interface VersantDetachable extends PersistenceCapable {
020:
021: /**
022: * Tests whether this object is dirty.
023: * <p/>
024: * Instances that have been modified or newly made persistent
025: * return <code>true</code>.
026: *
027: * @return <code>true</code> if this instance has been modified.
028: * @see PersistenceCapable#jdoMakeDirty(String fieldName)
029: */
030: public boolean versantIsDirty();
031:
032: /**
033: * Tests whether this field is dirty.
034: *
035: * @param fieldNo the field no in the metadata
036: */
037: public boolean versantIsDirty(int fieldNo);
038:
039: /**
040: * Mark the associated field dirty.
041: *
042: * @param fieldName the name of the field
043: */
044: public void versantMakeDirty(String fieldName);
045:
046: /**
047: * Mark the associated field dirty.
048: *
049: * @param fieldNo the field no in the metadata
050: */
051: public void versantMakeDirty(int fieldNo);
052:
053: /**
054: * Return <code>true</code> if the field is cached in this instance.
055: *
056: * @param fieldNo the field no in the metadata
057: * @return whether the field is cached in the calling instance
058: */
059: public boolean versantIsLoaded(int fieldNo);
060:
061: /**
062: * Marks the the field as cached in this instance.
063: *
064: * @param fieldNo the field no in the metadata
065: */
066: public void versantSetLoaded(int fieldNo);
067:
068: /**
069: * Sets the object representing the JDO identity of this instance.
070: */
071: public void versantSetOID(Object oid);
072:
073: /**
074: * Return the object representing the JDO identity of this instance.
075: *
076: * @return the object representing the JDO identity of this instance
077: */
078: public Object versantGetOID();
079:
080: /**
081: * The value of the version field on the pc.
082: */
083: public void versantSetVersion(Object version);
084:
085: /**
086: * The value of the version field on the pc.
087: * This will return null if there are no version fields.
088: */
089: public Object versantGetVersion();
090:
091: /**
092: * The VersantDetachedStateManager for this class.
093: * If the StateManager is not of type VersantDetachedStateManager then null is returned.
094: * The VersantDetachedStateManager is used to keep track of deleted objects.
095: *
096: * @return the StateManager if it is a VersantDetachedStateManager
097: */
098: public VersantDetachedStateManager versantGetDetachedStateManager();
099:
100: }
|