Package org.jpox

Examples of org.jpox.ObjectManager


        if (!validateElementForReading(sm, element))
        {
            return false;
        }

        ObjectManager om = sm.getObjectManager();
        StateManager esm = om.findStateManager(element);

        Object oldOwner = null;
        if (ownerFieldNumber >= 0)
        {
            if (!om.getApiAdapter().isDeleted(element))
            {
                // Find the existing owner if the record hasn't already been deleted
                om.getApiAdapter().isLoaded(esm, ownerFieldNumber);
                oldOwner = esm.provideField(ownerFieldNumber);
            }
        }
        else
        {
            // TODO Check if the element is managed by a different owner now
        }

        // Owner of the element has been changed
        if (ownerFieldNumber >= 0 && oldOwner != sm.getObject())
        {
            return false;
        }

        if (allowDependentField && ownerMemberMetaData.getCollection().isDependentElement())
        {
            // Delete the element since it is dependent
            om.deleteObjectInternal(element);
        }
        else if (ownerMapping.isNullable())
        {
            // Bidirectional 1-N, so nullify the owner
            PersistenceCapable pcElement = (PersistenceCapable) element;
            if (ownerFieldNumber >= 0)
            {
                esm.setObjectField(pcElement, ownerFieldNumber, oldOwner, null);
            }
            // Unidirectional 1-N, so nullify the owner
            else
            {
                updateElementFk(sm, pcElement, null);
            }
        }
        else
        {
            // otherwise remove the element since we can't null its FK
            om.deleteObjectInternal(element);
        }

        return true;
    }
View Full Code Here


     * @param ownerSM StateManager of the Set
     */
    public void clear(StateManager ownerSM)
    {
        boolean deleteElements = false;
        ObjectManager om = ownerSM.getObjectManager();
        if (ownerMemberMetaData.getCollection().isDependentElement())
        {
            // Elements are dependent and can't exist on their own, so delete them all
            JPOXLogger.DATASTORE.debug(LOCALISER.msg("056034"));
            deleteElements = true;
        }
        else
        {
            if (ownerMapping.isNullable())
            {
                // Field is not dependent, but is nullable so we null the FK
                JPOXLogger.DATASTORE.debug(LOCALISER.msg("056036"));
                deleteElements = false;
            }
            else
            {
                // Field is not dependent, and is not nullable so we just delete the elements
                JPOXLogger.DATASTORE.debug(LOCALISER.msg("056035"));
                deleteElements = true;
            }
        }

        if (deleteElements)
        {
            // Find elements present in the datastore and delete them one-by-one
            Iterator elementsIter = iterator(ownerSM);
            if (elementsIter != null)
            {
                while (elementsIter.hasNext())
                {
                    Object element = elementsIter.next();
                    if (om.getApiAdapter().isPersistable(element) && om.getApiAdapter().isDeleted(element))
                    {
                        // Element is waiting to be deleted so flush it (it has the FK)
                        StateManager elementSM = om.findStateManager(element);
                        elementSM.flush();
                    }
                    else
                    {
                        // Element not yet marked for deletion so go through the normal process
                        om.deleteObjectInternal(element);
                    }
                }
            }
        }
        else
        {
            int relationType = ownerMemberMetaData.getRelationType(clr);
            if (relationType == Relation.ONE_TO_MANY_BI &&
                om.getOMFContext().getPersistenceConfiguration().getBooleanProperty("org.jpox.manageRelationships"))
            {
                // Managed Relations : 1-N bidir so null the owner on the elements
                om.getApiAdapter().isLoaded(ownerSM, ownerMemberMetaData.getAbsoluteFieldNumber()); // Make sure the field is loaded
                Collection value = (Collection) ownerSM.provideField(ownerMemberMetaData.getAbsoluteFieldNumber());
                Iterator elementsIter = null;
                if (value != null && !value.isEmpty())
                {
                    elementsIter = value.iterator();
                }
                else
                {
                    // Maybe deleting the owner with optimistic transactions so the elements are no longer cached
                    elementsIter = iterator(ownerSM);
                }
                if (elementsIter != null)
                {
                    while (elementsIter.hasNext())
                    {
                        Object element = elementsIter.next();
                        if (!om.getApiAdapter().isDeleted(element))
                        {
                            StateManager elementSM = om.findStateManager(element);
                            if (elementSM != null)
                            {
                                // Null the owner of the element
                                if (JPOXLogger.PERSISTENCE.isDebugEnabled())
                                {
                                    JPOXLogger.PERSISTENCE.debug(
                                        LOCALISER.msg("055010",
                                        StringUtils.toJVMIDString(ownerSM.getObject()),
                                        ownerMemberMetaData.getFullFieldName(),
                                        StringUtils.toJVMIDString(element)));
                                }

                                elementSM.replaceField(getFieldNumberInElementForBidirectional(elementSM), null, true);
                                if (om.isFlushing())
                                {
                                    // Make sure this change gets flushed
                                    elementSM.flush();
                                }
                            }
View Full Code Here

            }

            String stmt = getUpdateEmbeddedElementStmt(fieldMapping);
            try
            {
                ObjectManager om = sm.getObjectManager();
                ManagedConnection mconn = storeMgr.getConnection(om);
                SQLController sqlControl = storeMgr.getSQLController();

                try
                {
View Full Code Here

        boolean retval;

        String stmt = getContainsStmt();
        try
        {
            ObjectManager om = sm.getObjectManager();
            ManagedConnection mconn = storeMgr.getConnection(om);
            SQLController sqlControl = storeMgr.getSQLController();
            try
            {
                PreparedStatement ps = sqlControl.getStatementForQuery(mconn, stmt);
View Full Code Here

     * @throws SQLException Thrown if an error occurs
     */
    protected int[] internalRemove(StateManager ownerSM, ManagedConnection conn, boolean batched, Object element, boolean executeNow)
    throws SQLException
    {
        ObjectManager om = ownerSM.getObjectManager();
        SQLController sqlControl = storeMgr.getSQLController();
        String removeStmt = getRemoveStmt();
        PreparedStatement ps = sqlControl.getStatementForUpdate(conn, removeStmt, batched);
        try
        {
View Full Code Here

        }

        boolean exists = false;
        try
        {
            ObjectManager om = sm.getObjectManager();
            ManagedConnection mconn = storeMgr.getConnection(om);
            SQLController sqlControl = storeMgr.getSQLController();
            try
            {
                PreparedStatement ps = sqlControl.getStatementForQuery(mconn, containsValueStmt);
View Full Code Here

    {
        validateKeyType(sm.getObjectManager().getClassLoaderResolver(), key);

        if (!keysAreEmbedded && !keysAreSerialised)
        {
            ObjectManager om = sm.getObjectManager();
            if (key!=null && (!om.getApiAdapter().isPersistent(key) ||
                om != ObjectManagerHelper.getObjectManager(key)) && !om.getApiAdapter().isDetached(key))
            {
                return false;
            }
        }
View Full Code Here

    {
        validateValueType(sm.getObjectManager().getClassLoaderResolver(), value);

        if (!valuesAreEmbedded && !valuesAreSerialised)
        {
            ObjectManager om = sm.getObjectManager();
            if (value != null && (!om.getApiAdapter().isPersistent(value) ||
                om != ObjectManagerHelper.getObjectManager(value)) && !om.getApiAdapter().isDetached(value))
            {
                return false;
            }
        }
View Full Code Here

    {
        validateKeyType(sm.getObjectManager().getClassLoaderResolver(), key);

        if (!keysAreEmbedded && !keysAreSerialised)
        {
            ObjectManager om = sm.getObjectManager();
            SCOUtils.validateObjectForWriting(om, key, null);
        }
    }
View Full Code Here

    protected void validateValueForWriting(StateManager sm, Object value)
    {
        validateValueType(sm.getObjectManager().getClassLoaderResolver(), value);
        if (!valuesAreEmbedded && !valuesAreSerialised)
        {
            ObjectManager om = sm.getObjectManager();
            SCOUtils.validateObjectForWriting(om, value, null);
        }
    }
View Full Code Here

TOP

Related Classes of org.jpox.ObjectManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.