package com.processpuzzle.application.security.control;
import javax.servlet.http.HttpSession;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.control.control.CommandDispatcher;
import com.processpuzzle.party.domain.PartyRepository;
import com.processpuzzle.party.domain.Person;
import com.processpuzzle.party.domain.PersonRepository;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
import com.processpuzzle.user_session.domain.UserRequestManager;
import com.processpuzzle.user_session.domain.UserSession;
import com.processpuzzle.util.domain.OPDomainStrings;
public class LoggedUserLocator {
private static ProcessPuzzleContext applicationContext;
private static PersonRepository personRepository;
public LoggedUserLocator() {
}
public static Person locate( CommandDispatcher dispatcher ) {
applicationContext = UserRequestManager.getInstance().getApplicationContext();
personRepository = applicationContext.getRepository( PersonRepository.class );
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
Person user = null;
HttpSession session = dispatcher.getRequest().getSession( true );
Object attribute = session.getAttribute( OPDomainStrings.LOGGED_USER_ATTRIBUTE_NAME_IN_SESSION );
if( attribute != null ){
String userId = null;
try{
userId = ((UserSession) attribute).getUser().getId().toString();
}catch( NumberFormatException nfe ){}
if( userId != null ){
ProcessPuzzleContext applicationContext = UserRequestManager.getInstance().getApplicationContext();
PartyRepository partyRepository = (PartyRepository) applicationContext.getRepository( PartyRepository.class );
user = personRepository.findByUserId( work, userId );
}
}
work.finish();
return user;
}
}