litesoft
@ 954
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 |
package org.litesoft.security; import org.litesoft.core.*; public abstract class AbstractCurrentSecurityUserAccessor<PO extends SecurityUser<PO>, VO extends SecurityUserView<VO>, RRPO extends SecurityRestrictedResource<RRPO>> extends AbstractCurrentSecurityPOAccessor<PO, VO> { private final SecurityUserViewPoServerVoDataProvider<VO, PO, RRPO> mUserDataProvider; protected AbstractCurrentSecurityUserAccessor( Class<PO> pClassPO, Class<VO> pClassVO, SecurityUserViewPoServerVoDataProvider<VO, PO, RRPO> pDataProvider ) { super( "User", pClassPO, pClassVO, pDataProvider ); mUserDataProvider = pDataProvider; } public PO getRequiredUser() { PO zUser = getOptionalUser( null ); if ( zUser == null ) { throw new SessionExpiredException( "No Current User" ); } return zUser; } public PO getOptionalUser( String pDefaultUserLoginEmail ) { Pair<PO, VO> zPair = getPair( pDefaultUserLoginEmail ); System.out.println( zPair ); if ( zPair.getVO() == null ) { return null; } if ( (zPair.getPO() == null) || !zPair.inSync() ) { zPair = refresh( zPair ); } return zPair.getPO(); } public VO getUserView( String pDefaultUserLoginEmail ) { Pair<PO, VO> zPair = getPair( pDefaultUserLoginEmail ); if ( zPair.isStale() ) { zPair = refresh( zPair ); } return zPair.getVO(); } public VO updateUser( PO pPO ) { VO zView = mDataProvider.createView( pPO, false ); update( zView, pPO ); return zView; } protected Pair<PO, VO> getPair( String pDefaultUserLoginEmail ) { VO zView = getCachedInstance(); if ( (zView == null) && (pDefaultUserLoginEmail != null) ) { mUserDataProvider.loginDefaultUser( pDefaultUserLoginEmail ); // Switch Users! zView = getCachedInstance(); } return createPair( zView ); } } |