package com.processpuzzle.application.internalization.control;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.configuration.domain.PropertyKeys;
import com.processpuzzle.internalization.domain.ProcessPuzzleLocale;
import com.processpuzzle.user_session.domain.UserRequestManager;
import com.processpuzzle.user_session.domain.UserSession;
public class InternationalizationHelper {
private ProcessPuzzleLocale locale = null;
private UserSession userSession = null;
private String value = null;
private ProcessPuzzleContext applicationContext;
// Constructors
public InternationalizationHelper( UserSession userSession ) {
this.userSession = userSession;
applicationContext = UserRequestManager.getInstance().getApplicationContext();
determineLocale();
}
public InternationalizationHelper() {
this( null );
}
// Properties
public UserSession getUserSession() {
return userSession;
}
public void setUserSession( UserSession userSession ) {
this.userSession = userSession;
}
public void setKey( String key ) {
determineLocale();
value = applicationContext.getText( key, locale );
}
public String getValue() {
return value;
}
public String getLocale() {
if( locale == null ) {
ProcessPuzzleContext applicationContext = UserRequestManager.getInstance().getApplicationContext();
return (String) applicationContext.getProperty( PropertyKeys.INTERNALIZATION_DEFAULT_LOCALE.getXPathKey() );
}
else
return locale.toString();
}
public void setLocale( ProcessPuzzleLocale locale ) {
this.locale = locale;
}
public void setLocale( String locale ) {
ProcessPuzzleContext applicationContext = UserRequestManager.getInstance().getApplicationContext();
this.locale = applicationContext.getInternalizationContext().findLocaleBySpecifier( locale );
}
private void determineLocale() {
if( userSession != null && userSession.getUser().getPrefferedLocale() != null ) {
locale = userSession.getUser().getPrefferedLocale();
} else {
locale = applicationContext.getDefaultLocale();
}
}
}