Subversion Repository Public Repository

litesoft

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

Diff revisions: vs.
  @@ -9,20 +9,16 @@
9 9 import org.litesoft.exceptions.*;
10 10 import org.litesoft.orsup.*;
11 11 import org.litesoft.orsup.base.*;
12 - import org.litesoft.orsup.selection.*;
13 12 import org.litesoft.orsup.transact.*;
14 - import org.litesoft.prioritizer.client.boviews.*;
15 - import org.litesoft.prioritizer.server.*;
16 - import org.litesoft.prioritizer.server.pos.*;
17 13 import org.litesoft.security.*;
18 14 import org.litesoft.sql.*;
19 15 import org.litesoft.util.*;
20 16
21 - public abstract class SecurityUserViewPoServerVoDataProvider<T extends SecurityUserView<T>> extends PoServerVoDataProvider<T>
17 + public abstract class SecurityUserViewPoServerVoDataProvider<VO extends SecurityUserView<VO>, PO extends SecurityUser<PO>, RRPO extends SecurityRestrictedResource<RRPO>> extends PoServerVoDataProvider<VO>
22 18 {
23 19 private String mDefaultUserLoginEmail = Utils.noEmpty( System.getProperty( "User" ) );
24 20
25 - private String getDefaultUserLoginEmail()
21 + protected String getDefaultUserLoginEmail()
26 22 {
27 23 String zInitialUserEmail = mDefaultUserLoginEmail;
28 24 mDefaultUserLoginEmail = null;
  @@ -32,7 +28,7 @@
32 28 private final String[] mDemoUserEmails;
33 29 private final Set<String> mSetOfDemoUserEmails;
34 30
35 - protected SecurityUserViewPoServerVoDataProvider( VoMetaData<T> pVOMetaData, MetaDataStore pMetaDataStore, String... pDemoUserEmails )
31 + protected SecurityUserViewPoServerVoDataProvider( VoMetaData<VO> pVOMetaData, MetaDataStore pMetaDataStore, String... pDemoUserEmails )
36 32 {
37 33 super( pVOMetaData, pMetaDataStore );
38 34 mSetOfDemoUserEmails = new HashSet<String>( Arrays.asList( mDemoUserEmails = pDemoUserEmails ) );
  @@ -43,14 +39,14 @@
43 39 {
44 40 super.LLinitialize();
45 41
46 - register( new SecurityUserViewServerFunctionLogin<T>() );
47 - register( new SecurityUserViewServerFunctionLogout<T>() );
48 - register( new SecurityUserViewServerFunctionSwitchRestrictedResources<T>() );
49 - register( new SecurityUserViewServerFunctionChangePassword<T>() );
50 - register( new SecurityUserViewServerFunctionValidatePassword<T>() );
51 - register( new SecurityUserViewServerFunctionValidateLogonEmailAvailable<T>() );
52 - register( new SecurityUserViewServerFunctionNextDemoLoginUser<T>() );
53 - register( new SecurityUserViewServerFunctionFetchCurrentLoginUser<T>() );
42 + register( new SecurityUserViewServerFunctionLogin<VO>() );
43 + register( new SecurityUserViewServerFunctionLogout<VO>() );
44 + register( new SecurityUserViewServerFunctionSwitchRestrictedResources<VO>() );
45 + register( new SecurityUserViewServerFunctionChangePassword<VO>() );
46 + register( new SecurityUserViewServerFunctionValidatePassword<VO>() );
47 + register( new SecurityUserViewServerFunctionValidateLogonEmailAvailable<VO>() );
48 + register( new SecurityUserViewServerFunctionNextDemoLoginUser<VO>() );
49 + register( new SecurityUserViewServerFunctionFetchCurrentLoginUser<VO>() );
54 50 }
55 51
56 52 public SCresult changePassword( SecurityUserView pUserView )
  @@ -75,7 +71,7 @@
75 71 {
76 72 while ( zError == null )
77 73 {
78 - User zUser = getUserByEmailFromCurrentDS( zLogonEmail );
74 + SecurityUser<PO> zUser = getUserByEmailFromCurrentDS( zLogonEmail );
79 75 if ( (zUser == null) || !zUser.validatePassword( zCurrentPassword ) )
80 76 {
81 77 zError = "Invalid Credentials";
  @@ -115,7 +111,7 @@
115 111 if ( null == zError )
116 112 {
117 113 zError = "Invalid";
118 - User zUser = getUserByEmailFromCurrentDS( pUserView.getLogonEmail() );
114 + SecurityUser<PO> zUser = getUserByEmailFromCurrentDS( pUserView.getLogonEmail() );
119 115 if ( (zUser != null) && zUser.validatePassword( zCurrentPassword ) )
120 116 {
121 117 return null;
  @@ -131,7 +127,7 @@
131 127 {
132 128 throw new DisplayableRuntimeException( zError );
133 129 }
134 - User zUser = getUserByEmailFromCurrentDS( pLogonEmail );
130 + SecurityUser<PO> zUser = getUserByEmailFromCurrentDS( pLogonEmail );
135 131 return createView( zUser, false );
136 132 }
137 133
  @@ -143,7 +139,7 @@
143 139 if ( null == (zError = cursoryPasswordCheck( pPassword, SecurityUserViewNames.aCurrentPassword )) )
144 140 {
145 141 zError = "Invalid Credentials";
146 - User zUser = getUserByEmailFromMasterDS( pLogonEmail );
142 + SecurityUser<PO> zUser = getUserByEmailFromMasterDS( pLogonEmail );
147 143 if ( zUser != null )
148 144 {
149 145 if ( zUser.validatePassword( pPassword ) )
  @@ -160,7 +156,7 @@
160 156 {
161 157 try
162 158 {
163 - User zUser = getUserByEmailFromMasterDS( pLogonEmail );
159 + SecurityUser<PO> zUser = getUserByEmailFromMasterDS( pLogonEmail );
164 160 if ( zUser != null )
165 161 {
166 162 return updateLoggedInUserFromMasterDS( zUser );
  @@ -173,21 +169,10 @@
173 169 return null;
174 170 }
175 171
176 - public SecurityUserView switchRestrictedResources( SecurityRestrictedResourceView pRestrictedResourceView )
177 - {
178 - User zUser = CurrentUserAccessor.get().getRequiredUser();
179 - RestrictedResource zRestrictedResource = (RestrictedResource) getNotUsDataProvider( RestrictedResourceView.class ).getExistingPO( DataStoreLocator.get().getUnfilteredFinder(), (RestrictedResourceView)pRestrictedResourceView );
180 - if ( zRestrictedResource == null )
181 - {
182 - throw new DisplayableRuntimeException( "RestrictedResourceNotFound", pRestrictedResourceView.toString() );
183 - }
184 - UserRestrictedResourcePair zPair = zUser.loginToRestrictedResourceIfAcceptable( zRestrictedResource );
185 - return finiUserLogin( zPair.getUser(), zPair.getRestrictedResource() );
186 - }
172 + abstract public SecurityUserView switchRestrictedResources( SecurityRestrictedResourceView pRestrictedResourceView );
187 173
188 - private SecurityUserView updateLoggedInUserFromMasterDS( User pUser )
174 + private SecurityUserView updateLoggedInUserFromMasterDS( SecurityUser<PO> pUser )
189 175 {
190 -
191 176 if ( !pUser.isDemo() )
192 177 {
193 178 initializeRealDB();
  @@ -210,7 +195,7 @@
210 195 {
211 196 zNextIndex = 0;
212 197 }
213 - User zUser = getUserByEmailFromCurrentDS( mDemoUserEmails[zNextIndex] );
198 + SecurityUser<PO> zUser = getUserByEmailFromCurrentDS( mDemoUserEmails[zNextIndex] );
214 199 if ( zUser != null )
215 200 {
216 201 zUser.setDemo();
  @@ -236,59 +221,25 @@
236 221 }
237 222 }
238 223
239 - public SecurityUserView currentLoggedInUserView()
240 - {
241 - return CurrentUserAccessor.get().getUserView( getDefaultUserLoginEmail() );
242 - }
224 + abstract public SecurityUserView<VO> currentLoggedInUserView();
243 225
244 - public void logoutUser()
245 - {
246 - CurrentUserAccessor.get().logout();
247 - CurrentRestrictedResourceAccessor.get().logout();
248 - }
249 -
250 - private SecurityUserView finiUserLogin( User pUser )
251 - {
252 - return finiUserLogin( pUser, CurrentRestrictedResourceAccessor.get().getOptionalRestrictedResource() );
253 - }
226 + abstract public void logoutUser();
254 227
255 - private SecurityUserView finiUserLogin( User pUser, RestrictedResource pRestrictedResource )
256 - {
257 - UserRestrictedResourcePair zUserRestrictedResourcePair = pUser.getLoginRestrictedResource( pRestrictedResource );
258 - User zUser = zUserRestrictedResourcePair.getUser();
259 - RestrictedResource zRestrictedResource = zUserRestrictedResourcePair.getRestrictedResource();
260 - CurrentRestrictedResourceAccessor zRestrictedResourceAccessor = CurrentRestrictedResourceAccessor.get();
261 - zRestrictedResourceAccessor.updateRestrictedResource( zRestrictedResource );
262 - if ( !zRestrictedResource.equals( zUser.getLastRestrictedResource() ) )
263 - {
264 - Transaction zTransaction = zUser.getFinder().createTransaction();
265 - zUser = zUser.copyInto( zTransaction );
266 - zUser.setLastRestrictedResource( zRestrictedResource );
267 - zTransaction.commit();
268 - }
269 - zRestrictedResourceAccessor.updateRestrictedResource( zRestrictedResource );
270 - UserView zUserView = CurrentUserAccessor.get().updateUser( zUser );
271 - zUserView.setCurrentRestrictedResource( zRestrictedResourceAccessor.getRestrictedResourceView() );
272 - if ( !zUser.canAccessAllRestrictedResources() )
273 - {
274 - zUserView.setAlternateRestrictedResourceOptions( convertToRestrictedResourceOptions( zUser.getAlternateRestrictedResourceOptions( zRestrictedResource ) ) );
275 - }
276 - return zUserView;
277 - }
228 + abstract protected SecurityUserView finiUserLogin( SecurityUser<PO> pUser );
278 229
279 - private User getUserByEmailFromMasterDS( String pLogonEmail )
230 + private SecurityUser<PO> getUserByEmailFromMasterDS( String pLogonEmail )
280 231 {
281 232 return getUserByEmail( ServerContext.getMasterServerStore().get( DataStore.class ).getUnfilteredFinder(), pLogonEmail );
282 233 }
283 234
284 - private User getUserByEmailFromCurrentDS( String pLogonEmail )
235 + private SecurityUser<PO> getUserByEmailFromCurrentDS( String pLogonEmail )
285 236 {
286 237 return getUserByEmail( DataStoreLocator.get().getUnfilteredFinder(), pLogonEmail );
287 238 }
288 239
289 - private User getUserByEmail( Finder pFinder, String pLogonEmail )
240 + private SecurityUser<PO> getUserByEmail( Finder pFinder, String pLogonEmail )
290 241 {
291 - User zUser = pFinder.findOne( User.class, WCF.isEqual( User.CD_LogonEmail, pLogonEmail ) );
242 + SecurityUser<PO> zUser = findUserByEmail( pFinder, pLogonEmail );
292 243 if ( isUserDemo( zUser ) )
293 244 {
294 245 zUser.setDemo();
  @@ -296,30 +247,7 @@
296 247 return zUser;
297 248 }
298 249
299 - private AlternateRestrictedResourceOption[] convertToRestrictedResourceOptions( RestrictedResource[] pRestrictedResources )
300 - {
301 - AlternateRestrictedResourceOption[] rv = new AlternateRestrictedResourceOption[pRestrictedResources.length];
302 - PoServerVoDataProvider<RestrictedResourceView> zRestrictedResourceViewDP = getNotUsDataProvider( RestrictedResourceView.class );
303 - for ( int i = 0; i < pRestrictedResources.length; i++ )
304 - {
305 - rv[i] = zRestrictedResourceViewDP.createView( pRestrictedResources[i], false );
306 - }
307 - Arrays.sort( rv );
308 - return rv;
309 - }
310 -
311 - @Override
312 - protected WhereClause augment_getMatchingVOs( WhereClause pWhereClause )
313 - {
314 - User zUser = CurrentUserAccessor.get().getRequiredUser();
315 - if ( !zUser.canAccessAllRestrictedResources() ) // If no user it will blow up with a null pointer exception which is appropriate.
316 - {
317 - pWhereClause = WCF.and( pWhereClause, User.getLimitToCurrentRestrictedResourceAndVisible() ); // Add filter to where clause to only select based on RestrictedResource.
318 - }
319 - return super.augment_getMatchingVOs( pWhereClause );
320 - }
321 -
322 - private boolean isUserDemo( User pUser )
250 + private boolean isUserDemo( SecurityUser<PO> pUser )
323 251 {
324 252 return ((pUser != null) && mSetOfDemoUserEmails.contains( Utils.deNull( pUser.getLogonEmail() ).toLowerCase() ));
325 253 }
  @@ -345,4 +273,6 @@
345 273 {
346 274 DataLoader.INSTANCE.loadDemoData();
347 275 }
276 +
277 + abstract protected SecurityUser<PO> findUserByEmail( Finder pFinder, String pLogonEmail );
348 278 }