litesoft
@ 151
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.orsup.nonpublic; import org.litesoft.db.*; import org.litesoft.orsup.base.*; import org.litesoft.orsup.selection.*; import org.litesoft.orsup.transact.*; public class UnfilteringFinderImpl extends AbstractNonTransactionalFinder<UnfilteringFinder> implements UnfilteringFinder { protected UnfilteringFinderImpl( ORFacilitatorInternalExtension pCommonSupport, boolean pIncludingImmortalInactives ) { super( pCommonSupport, pIncludingImmortalInactives, null ); } @Override protected UnfilteringFinder create( boolean pIncludingImmortalInactives ) { return new UnfilteringFinderImpl( this, pIncludingImmortalInactives ); } @Override public final Transaction createUnaugmentedTransaction() { return getTransactionFactory().createTransaction( this, false ); } /** * @param pPersistedObjectRegistrationName * - Persisted Object Class Name (getClass().getName()) * @param pSelectionWhereClause - null means all * * @throws DBException - Exception regarding the OR layer */ @Override public final long count( String pPersistedObjectRegistrationName, WhereClause pSelectionWhereClause ) throws DBException { ORPersistenceHelper helper = (ORPersistenceHelper) getPersistenceHelper(); MetaDataForPO metaDataForPO = getRequiredMetaDataForPO( pPersistedObjectRegistrationName ); return helper.count( isIncludingImmortalInactives(), metaDataForPO, pSelectionWhereClause ); } /** * @param pPersistedObjectClass - Persisted Object Class (getClass()) * @param pSelectionWhereClause - null means all * * @throws DBException - Exception regarding the OR layer */ @Override public final long count( Class<? extends PersistentObject> pPersistedObjectClass, WhereClause pSelectionWhereClause ) throws DBException { return count( pPersistedObjectClass.getName(), pSelectionWhereClause ); } /** * @param pPersistedObjectRegistrationName * - Persisted Object Class Name (getClass().getName()) * @param pSelectionWhereClause - null means any will do * @param pOrderBy - null means order immaterial * @param pUpdateValuePairs - additional columns to set * * @return 'snaged' PO or Null if no POs available to be 'snaged' * * @throws UnsupportedOperationException - if the PO type does not support 'snaging' * @throws DBException - Exception regarding the OR layer */ @Override public final PersistentObject<?> snagOne( String pPersistedObjectRegistrationName, WhereClause pSelectionWhereClause, OrderBy pOrderBy, ColumnUpdateValuePair... pUpdateValuePairs ) throws UnsupportedOperationException, DBException { MetaDataForPO metaDataForPO = getRequiredMetaDataForPO( pPersistedObjectRegistrationName ); if ( !metaDataForPO.isSnagable() ) { throw new UnsupportedOperationException( pPersistedObjectRegistrationName + " is not flagged as 'Snaggable'" ); } SimpleColumnDefinition zKeyCD = getKeyCD( metaDataForPO, ", and is therefore not 'Snaggable'" ); AttributeAccessorSCD zSnagCD = metaDataForPO.getAccessorSCDrequired( metaDataForPO.getSnagAttributeName() ); Long zUniqueSnagValue = mCommonSupport.getNextSequenceNumber( "Snags" ); PersistenceHelper helper = getPersistenceHelper(); if ( !helper.snagOne( metaDataForPO, zKeyCD, zSnagCD, zUniqueSnagValue, pSelectionWhereClause, pOrderBy, pUpdateValuePairs ) ) { return null; } return findOne( pPersistedObjectRegistrationName, // WhereClauseFactory.INSTANCE.isEqual( zSnagCD, zUniqueSnagValue ) ); } /** * @param pPersistedObjectClass - Persisted Object Class (getClass()) * @param pSelectionWhereClause - null means any will do * @param pOrderBy - null means order immaterial * @param pUpdateValuePairs - additional columns to set * * @return 'snaged' PO or Null if no POs available to be 'snaged' * * @throws UnsupportedOperationException - if the PO type does not support 'snaging' * @throws DBException - Exception regarding the OR layer */ @SuppressWarnings({"unchecked"}) @Override public final <T extends PersistentObject> T snagOne( Class<T> pPersistedObjectClass, WhereClause pSelectionWhereClause, OrderBy pOrderBy, ColumnUpdateValuePair... pUpdateValuePairs ) throws UnsupportedOperationException, DBException { return (T) snagOne( pPersistedObjectClass.getName(), pSelectionWhereClause, pOrderBy, pUpdateValuePairs ); } } |