/* * Copyright 2009-2016 Tilmann Zaeschke. All rights reserved. * * This file is part of ZooDB. * * ZooDB is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ZooDB is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ZooDB. If not, see <http://www.gnu.org/licenses/>. * * See the README and COPYING files for further information. */ package org.zoodb.jdo.spi; import javax.jdo.PersistenceManager; import javax.jdo.spi.Detachable; import javax.jdo.spi.PersistenceCapable; import javax.jdo.spi.StateManager; import org.zoodb.api.impl.ZooPC; import org.zoodb.internal.Session; public class StateManagerImpl implements StateManager { public static final StateManager STATEMANAGER = new StateManagerImpl(); // private static final byte PS_PERSISTENT = 1; // private static final byte PS_TRANSACTIONAL = 2; // private static final byte PS_DIRTY = 4; // private static final byte PS_NEW = 8; // private static final byte PS_DELETED = 16; // private static final byte PS_DETACHED = 32; // public enum STATE { // TRANSIENT, //optional JDO 2.2 // //TRANSIENT_CLEAN, //optional JDO 2.2 // //TRANSIENT_DIRTY, //optional JDO 2.2 // PERSISTENT_NEW, // //PERSISTENT_NON_TRANS, //optional JDO 2.2 // //PERSISTENT_NON_TRANS_DIRTY, //optional JDO 2.2 // PERSISTENT_CLEAN, // PERSISTENT_DIRTY, // HOLLOW, // PERSISTENT_DELETED, // PERSISTENT_NEW_DELETED, // DETACHED_CLEAN, // DETACHED_DIRTY // ; // } // // private final ClassNodeSessionBundle bundle; // public static class CachedSchema extends StateManagerImpl { // public final ZooClassDef schema; // public CachedSchema(ZooClassDef schema, ObjectState state) { // super(schema.getBundle()); // this.schema = schema; // } // /** // * // * @return The ZooClassDef associated with this cached schema. // */ // public ZooClassDef getSchema() { // return schema; // } // } // // public StateManagerImpl() { // this.bundle = null; // } // // public StateManagerImpl(ClassNodeSessionBundle bundle) { // this.bundle = bundle; // } // // public final Node getNode() { // return bundle.getNode(); // } // ************************************************************************* // StateManagerImpl // ************************************************************************* //JDO 2.0 @Override public boolean getBooleanField(PersistenceCapable arg0, int arg1, boolean arg2) { // TODO Auto-generated method stub return false; } @Override public byte getByteField(PersistenceCapable arg0, int arg1, byte arg2) { // TODO Auto-generated method stub return 0; } @Override public char getCharField(PersistenceCapable arg0, int arg1, char arg2) { // TODO Auto-generated method stub return 0; } @Override public double getDoubleField(PersistenceCapable arg0, int arg1, double arg2) { // TODO Auto-generated method stub return 0; } @Override public float getFloatField(PersistenceCapable arg0, int arg1, float arg2) { // TODO Auto-generated method stub return 0; } @Override public int getIntField(PersistenceCapable arg0, int arg1, int arg2) { // TODO Auto-generated method stub return 0; } @Override public long getLongField(PersistenceCapable arg0, int arg1, long arg2) { // TODO Auto-generated method stub return 0; } @Override public Object getObjectField(PersistenceCapable arg0, int arg1, Object arg2) { // TODO Auto-generated method stub return null; } @Override public Object getObjectId(PersistenceCapable arg0) { long oid = ((ZooPC)arg0).jdoZooGetOid(); return oid == Session.OID_NOT_ASSIGNED ? null : oid; } public long getObjectId(ZooPC arg0) { return arg0.jdoZooGetOid(); } // public void setObjectId(PersistenceCapable arg0, long oid) { // ((PersistenceCapableImpl)arg0).jdoZooSetOid(oid); // this.oid = oid; // } @Override public PersistenceManager getPersistenceManager(PersistenceCapable arg0) { ZooPC zpc = (ZooPC) arg0; return (PersistenceManager) zpc.jdoZooGetContext().getSession().getExternalSession(); } @Override public short getShortField(PersistenceCapable arg0, int arg1, short arg2) { // TODO Auto-generated method stub return 0; } @Override public String getStringField(PersistenceCapable arg0, int arg1, String arg2) { // TODO Auto-generated method stub return null; } @Override public Object getTransactionalObjectId(PersistenceCapable arg0) { // TODO Auto-generated method stub throw new UnsupportedOperationException(); //return null; } @Override public Object getVersion(PersistenceCapable arg0) { // TODO Auto-generated method stub throw new UnsupportedOperationException(); //return null; } @Override public boolean isDeleted(PersistenceCapable arg0) { return ((ZooPC)arg0).jdoZooIsDeleted(); } @Override public boolean isDirty(PersistenceCapable arg0) { return ((ZooPC)arg0).jdoZooIsDirty(); // CachedObject co = _cache.findCO((PersistenceCapableImpl) arg0); // return co.isDirty(); // //return ((PersistenceCapableImpl)arg0).jdoZooFlagIsSet(JDO_PC_DIRTY); } @Override public boolean isLoaded(PersistenceCapable arg0, int arg1) { return !((ZooPC)arg0).jdoZooIsStateHollow(); // //TODO correct? // long oid = ((PersistenceCapableImpl) arg0).jdoZooGetOid(); // CachedObject co = _cache.findCoByOID(oid); //// if (co == null || co.isStateHollow()) { //// //// } // return !co.isStateHollow(); } @Override public boolean isNew(PersistenceCapable arg0) { return ((ZooPC)arg0).jdoZooIsNew(); // CachedObject co = _cache.findCO((PersistenceCapableImpl) arg0); // return co.isNew(); // //return ((PersistenceCapableImpl)arg0).jdoZooFlagIsSet(JDO_PC_NEW); } @Override public boolean isPersistent(PersistenceCapable arg0) { //CachedObject co = _cache.findCO((PersistenceCapableImpl) arg0); //return co.isPDeleted(); //TODO check for isDeleted? isDetached? return ((ZooPC)arg0).jdoZooIsPersistent(); //return true; //If it has a STateManager, it must be persistent. //TODO not true!!! See isLoaded() //return ((PersistenceCapableImpl)arg0).jdoZooFlagIsSet(JDO_PC_PERSISTENT); } @Override public boolean isTransactional(PersistenceCapable arg0) { return ((ZooPC)arg0).jdoZooIsTransactional(); // CachedObject co = _cache.findCO((PersistenceCapableImpl) arg0); // return co.isTransactional(); // //return ((PersistenceCapableImpl)arg0).jdoZooFlagIsSet(JDO_PC_TRANSACTIONAL); } @Override public void makeDirty(PersistenceCapable arg0, String arg1) { ((ZooPC)arg0).jdoZooMarkDirty(); // CachedObject co = _cache.findCO((PersistenceCapableImpl) arg0); // // TODO Fix, update/use field information // co.markDirty(); // //((PersistenceCapableImpl)arg0).jdoZooSetFlag(JDO_PC_DIRTY); } @Override public void preSerialize(PersistenceCapable arg0) { // TODO Auto-generated method stub throw new UnsupportedOperationException(); //return null; } @Override public void providedBooleanField(PersistenceCapable arg0, int arg1, boolean arg2) { // TODO Auto-generated method stub } @Override public void providedByteField(PersistenceCapable arg0, int arg1, byte arg2) { // TODO Auto-generated method stub } @Override public void providedCharField(PersistenceCapable arg0, int arg1, char arg2) { // TODO Auto-generated method stub } @Override public void providedDoubleField(PersistenceCapable arg0, int arg1, double arg2) { // TODO Auto-generated method stub } @Override public void providedFloatField(PersistenceCapable arg0, int arg1, float arg2) { // TODO Auto-generated method stub } @Override public void providedIntField(PersistenceCapable arg0, int arg1, int arg2) { // TODO Auto-generated method stub } @Override public void providedLongField(PersistenceCapable arg0, int arg1, long arg2) { // TODO Auto-generated method stub } @Override public void providedObjectField(PersistenceCapable arg0, int arg1, Object arg2) { // TODO Auto-generated method stub } @Override public void providedShortField(PersistenceCapable arg0, int arg1, short arg2) { // TODO Auto-generated method stub } @Override public void providedStringField(PersistenceCapable arg0, int arg1, String arg2) { // TODO Auto-generated method stub } @Override public boolean replacingBooleanField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return false; } @Override public byte replacingByteField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public char replacingCharField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public Object[] replacingDetachedState(Detachable arg0, Object[] arg1) { // TODO Auto-generated method stub return null; } @Override public double replacingDoubleField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public byte replacingFlags(PersistenceCapable arg0) { // TODO Auto-generated method stub return 0; } @Override public float replacingFloatField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public int replacingIntField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public long replacingLongField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public Object replacingObjectField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return null; } @Override public short replacingShortField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public StateManager replacingStateManager(PersistenceCapable arg0, StateManager arg1) { // TODO Auto-generated method stub return null; } @Override public String replacingStringField(PersistenceCapable arg0, int arg1) { // TODO Auto-generated method stub return null; } @Override public void setBooleanField(PersistenceCapable arg0, int arg1, boolean arg2, boolean arg3) { // TODO Auto-generated method stub } @Override public void setByteField(PersistenceCapable arg0, int arg1, byte arg2, byte arg3) { // TODO Auto-generated method stub } @Override public void setCharField(PersistenceCapable arg0, int arg1, char arg2, char arg3) { // TODO Auto-generated method stub } @Override public void setDoubleField(PersistenceCapable arg0, int arg1, double arg2, double arg3) { // TODO Auto-generated method stub } @Override public void setFloatField(PersistenceCapable arg0, int arg1, float arg2, float arg3) { // TODO Auto-generated method stub } @Override public void setIntField(PersistenceCapable arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void setLongField(PersistenceCapable arg0, int arg1, long arg2, long arg3) { // TODO Auto-generated method stub } @Override public void setObjectField(PersistenceCapable arg0, int arg1, Object arg2, Object arg3) { // TODO Auto-generated method stub } @Override public void setShortField(PersistenceCapable arg0, int arg1, short arg2, short arg3) { // TODO Auto-generated method stub } @Override public void setStringField(PersistenceCapable arg0, int arg1, String arg2, String arg3) { // TODO Auto-generated method stub } }