Subversion Repository Public Repository

litesoft

Diff Revisions 480 vs 482 for /trunk/GWT_Sandbox/Prioritizer/src/org/litesoft/prioritizer/server/boviews/podataproviders/UserViewPoServerVoDataProvider.java

Diff revisions: vs.
  @@ -1,9 +1,19 @@
1 1 package org.litesoft.prioritizer.server.boviews.podataproviders;
2 2
3 + import java.util.*;
4 +
5 + import org.litesoft.bo.views.*;
6 + import org.litesoft.bo.views.server.*;
7 + import org.litesoft.exceptions.*;
3 8 import org.litesoft.orsup.base.*;
9 + import org.litesoft.orsup.selection.*;
10 + import org.litesoft.orsup.transact.*;
4 11 import org.litesoft.prioritizer.client.boviews.*;
12 + import org.litesoft.prioritizer.server.*;
13 + import org.litesoft.prioritizer.server.pos.*;
14 + import org.litesoft.security.*;
5 15
6 - public class UserViewPoServerVoDataProvider extends SecurityUserViewPoServerVoDataProvider<UserView>
16 + public class UserViewPoServerVoDataProvider extends SecurityUserViewPoServerVoDataProvider<UserView, User, RestrictedResource>
7 17 {
8 18 public UserViewPoServerVoDataProvider( MetaDataStore pMetaDataStore )
9 19 {
  @@ -17,4 +27,84 @@
17 27 "saly@testsite.com" // ........ Sally Operator
18 28 );
19 29 }
30 +
31 + protected SecurityUser<User> findUserByEmail( Finder pFinder, String pLogonEmail )
32 + {
33 + return pFinder.findOne( User.class, WCF.isEqual( User.CD_LogonEmail, pLogonEmail ) );
34 + }
35 +
36 + @Override
37 + protected WhereClause augment_getMatchingVOs( WhereClause pWhereClause )
38 + {
39 + SecurityUser<User> zUser = CurrentUserAccessor.get().getRequiredUser();
40 + if ( !zUser.canAccessAllRestrictedResources() ) // If no user it will blow up with a null pointer exception which is appropriate.
41 + {
42 + pWhereClause = WCF.and( pWhereClause, User.getLimitToCurrentRestrictedResourceAndVisible() ); // Add filter to where clause to only select based on RestrictedResource.
43 + }
44 + return super.augment_getMatchingVOs( pWhereClause );
45 + }
46 +
47 + public UserView currentLoggedInUserView()
48 + {
49 + return CurrentUserAccessor.get().getUserView( getDefaultUserLoginEmail() );
50 + }
51 +
52 + public void logoutUser()
53 + {
54 + CurrentUserAccessor.get().logout();
55 + CurrentRestrictedResourceAccessor.get().logout();
56 + }
57 +
58 + public SecurityUserView switchRestrictedResources( SecurityRestrictedResourceView pRestrictedResourceView )
59 + {
60 + User zUser = CurrentUserAccessor.get().getRequiredUser();
61 + RestrictedResource zRestrictedResource = (RestrictedResource) getNotUsDataProvider( RestrictedResourceView.class ).getExistingPO( DataStoreLocator.get().getUnfilteredFinder(), (RestrictedResourceView) pRestrictedResourceView );
62 + if ( zRestrictedResource == null )
63 + {
64 + throw new DisplayableRuntimeException( "RestrictedResourceNotFound", pRestrictedResourceView.toString() );
65 + }
66 + UserRestrictedResourcePair<User, RestrictedResource> zPair = zUser.loginToRestrictedResourceIfAcceptable( zRestrictedResource );
67 + return finiUserLogin( zPair.getUser(), zPair.getRestrictedResource() );
68 + }
69 +
70 + protected SecurityUserView finiUserLogin( SecurityUser<User> pUser )
71 + {
72 + return finiUserLogin( pUser, CurrentRestrictedResourceAccessor.get().getOptionalRestrictedResource() );
73 + }
74 +
75 + protected SecurityUserView finiUserLogin( SecurityUser<User> pUser, SecurityRestrictedResource<RestrictedResource> pRestrictedResource )
76 + {
77 + UserRestrictedResourcePair zUserRestrictedResourcePair = ((User) pUser).getLoginRestrictedResource( (RestrictedResource) pRestrictedResource );
78 + User zUser = (User) zUserRestrictedResourcePair.getUser();
79 + RestrictedResource zRestrictedResource = (RestrictedResource) zUserRestrictedResourcePair.getRestrictedResource();
80 + CurrentRestrictedResourceAccessor zRestrictedResourceAccessor = CurrentRestrictedResourceAccessor.get();
81 + zRestrictedResourceAccessor.updateRestrictedResource( zRestrictedResource );
82 + if ( !zRestrictedResource.equals( zUser.getLastRestrictedResource() ) )
83 + {
84 + Transaction zTransaction = zUser.getFinder().createTransaction();
85 + zUser = zUser.copyInto( zTransaction );
86 + zUser.setLastRestrictedResource( zRestrictedResource );
87 + zTransaction.commit();
88 + }
89 + zRestrictedResourceAccessor.updateRestrictedResource( zRestrictedResource );
90 + UserView zUserView = CurrentUserAccessor.get().updateUser( zUser );
91 + zUserView.setCurrentRestrictedResource( zRestrictedResourceAccessor.getRestrictedResourceView() );
92 + if ( !zUser.canAccessAllRestrictedResources() )
93 + {
94 + zUserView.setAlternateRestrictedResourceOptions( convertToRestrictedResourceOptions( zUser.getAlternateRestrictedResourceOptions( zRestrictedResource ) ) );
95 + }
96 + return zUserView;
97 + }
98 +
99 + private AlternateRestrictedResourceOption[] convertToRestrictedResourceOptions( RestrictedResource[] pRestrictedResources )
100 + {
101 + AlternateRestrictedResourceOption[] rv = new AlternateRestrictedResourceOption[pRestrictedResources.length];
102 + PoServerVoDataProvider<RestrictedResourceView> zRestrictedResourceViewDP = getNotUsDataProvider( RestrictedResourceView.class );
103 + for ( int i = 0; i < pRestrictedResources.length; i++ )
104 + {
105 + rv[i] = zRestrictedResourceViewDP.createView( pRestrictedResources[i], false );
106 + }
107 + Arrays.sort( rv );
108 + return rv;
109 + }
20 110 }