package org.jblooming.operator.businessLogic;
import org.jblooming.ApplicationException;
import org.jblooming.PlatformRuntimeException;
import org.jblooming.messaging.Listener;
import org.jblooming.messaging.MessagingSystem;
import org.jblooming.operator.Operator;
import org.jblooming.persistence.PersistenceHome;
import org.jblooming.persistence.exceptions.PersistenceException;
import org.jblooming.utilities.JSP;
import org.jblooming.waf.SessionState;
import org.jblooming.waf.constants.OperatorConstants;
import static org.jblooming.waf.constants.OperatorConstants.*;
import org.jblooming.waf.settings.ApplicationState;
import org.jblooming.waf.view.PageState;
/**
* @author Pietro Polsinelli ppolsinelli@open-lab.com
* @author Roberto Bicchierai rbicchierai@open-lab.com
*/
public class OptionAction {
public void cmdEdit(PageState pageState) throws PersistenceException {
make(pageState);
}
protected void make(PageState pageState) {
make(pageState.getLoggedOperator(), pageState);
}
public static void make(Operator to, PageState pageState) {
pageState.addClientEntry(FLD_SELECT_LANG, to.getLanguage());
String whb = to.getOption(FLD_WORKING_HOUR_BEGIN);
if (whb != null) {
pageState.addClientEntry(FLD_WORKING_HOUR_BEGIN, whb);
}
String whe = to.getOption(FLD_WORKING_HOUR_END);
if (whe != null) {
pageState.addClientEntry(FLD_WORKING_HOUR_END, whe);
}
whe = to.getOption(FLD_WORKING_HOUR_TOTAL);
if (whe != null) {
pageState.addClientEntry(FLD_WORKING_HOUR_TOTAL, whe);
}
pageState.addClientEntry(OP_PAGE_SIZE, to.getOption(OP_PAGE_SIZE));
String s = to.getOption(FLD_CURRENT_SKIN);
if (!JSP.ex(s))
s = ApplicationState.getApplicationSetting(FLD_CURRENT_SKIN);
pageState.addClientEntry(FLD_CURRENT_SKIN, s);
String operatorOption = to.getOption(SEND_EVENT_BY_ICAL);
pageState.addClientEntry(SEND_EVENT_BY_ICAL, operatorOption);
MessagingSystem.makeMedias(to.getOption(MEDIA_PREFERRED_CHANNEL), MEDIA_PREFERRED_CHANNEL + "_", pageState);
pageState.addClientEntry("BUDDY_IMAGE", to.getOption("BUDDY_IMAGE"));
pageState.addClientEntry("PREFERRED_COLOR", to.getOption("PREFERRED_COLOR"));
pageState.addClientEntry("ADD_PHOTO_FROM_GRAVATAR", to.getOption("ADD_PHOTO_FROM_GRAVATAR"));
pageState.addClientEntry("SVN_LOGIN_USER_OPT", to.getOption("SVN_LOGIN_USER_OPT"));
pageState.addClientEntry("SVN_LOGIN_PWD_OPT", to.getOption("SVN_LOGIN_PWD_OPT"));
pageState.addClientEntry("SEND_TO_TWITTER", to.getOption("SEND_TO_TWITTER"));
pageState.addClientEntry("GOOGLE_LOGIN_USER", to.getOption("GOOGLE_LOGIN_USER"));
pageState.addClientEntry("SEND_TO_GOOGLE", to.getOption("SEND_TO_GOOGLE"));
pageState.addClientEntry("DEFAULT_EXT_CALENDAR", to.getOption("DEFAULT_EXT_CALENDAR"));
pageState.addClientEntry( OperatorConstants.NOTIFY_MY_EVENTS_TO_MYSELF, to.getOption( OperatorConstants.NOTIFY_MY_EVENTS_TO_MYSELF));
pageState.addClientEntry( "MESSAGE_DIGESTER_BY_EMAIL", to.getOption( "MESSAGE_DIGESTER_BY_EMAIL"));
pageState.addClientEntry( "MESSAGE_DIGESTER_BY_RSS", to.getOption( "MESSAGE_DIGESTER_BY_RSS"));
pageState.addClientEntry("REMEMBER_LOGIN" , to.getOption( "REMEMBER_LOGIN"));
pageState.addClientEntry("HOME_PAGE", to.getOption("HOME_PAGE"));
}
public void cmdSave(PageState pageState, String contextPath) throws PersistenceException {
SessionState sessionState = pageState.sessionState;
Operator logged = pageState.getLoggedOperator();
logged = (Operator) PersistenceHome.findByPrimaryKey(Operator.class, logged.getId());
pageState.mainObject = logged;
saveOptions(logged, pageState);
String value = pageState.getEntry(FLD_CURRENT_SKIN).stringValueNullIfEmpty();
if (value != null) {
sessionState.setSkin(SessionState.createSkin(contextPath, value, pageState.getApplication().getRootFolder()));
}
logged.store();
}
public static void saveOptions(Operator operator, PageState pageState) {
String value = pageState.getEntry(FLD_SELECT_LANG).stringValueNullIfEmpty();
if (value != null)
operator.putOption(FLD_SELECT_LANG, value);
else
operator.getOptions().remove(FLD_SELECT_LANG);
value = pageState.getEntry(OP_PAGE_SIZE).stringValueNullIfEmpty();
if (value != null)
operator.putOption(OP_PAGE_SIZE, value);
else
operator.getOptions().remove(OP_PAGE_SIZE);
operator.putOption(SEND_EVENT_BY_ICAL, pageState.getEntry(SEND_EVENT_BY_ICAL).checkFieldHtmlValue());
value = pageState.getEntry(FLD_WORKING_HOUR_BEGIN).stringValueNullIfEmpty();
if (value != null)
operator.putOption(FLD_WORKING_HOUR_BEGIN, value);
else
operator.getOptions().remove(FLD_WORKING_HOUR_BEGIN);
value = pageState.getEntry(FLD_WORKING_HOUR_END).stringValueNullIfEmpty();
if (value != null)
operator.putOption(FLD_WORKING_HOUR_END, value);
else
operator.getOptions().remove(FLD_WORKING_HOUR_END);
value = pageState.getEntry(FLD_WORKING_HOUR_TOTAL).stringValueNullIfEmpty();
if (value != null)
operator.putOption(FLD_WORKING_HOUR_TOTAL, value);
else
operator.getOptions().remove(FLD_WORKING_HOUR_TOTAL);
value = pageState.getEntry(FLD_CURRENT_SKIN).stringValueNullIfEmpty();
if (value != null) {
operator.putOption(FLD_CURRENT_SKIN, value);
} else
operator.getOptions().remove(FLD_CURRENT_SKIN);
value = pageState.getEntry("PREFERRED_COLOR").stringValueNullIfEmpty();
if (value != null) {
operator.putOption("PREFERRED_COLOR", value);
} else
operator.getOptions().remove("PREFERRED_COLOR");
value = pageState.getEntry("BUDDY_IMAGE").stringValueNullIfEmpty();
if (value != null) {
operator.putOption("BUDDY_IMAGE", value);
} else
operator.getOptions().remove("BUDDY_IMAGE");
value = pageState.getEntry("REMEMBER_LOGIN").stringValueNullIfEmpty();
if (value != null)
operator.putOption("REMEMBER_LOGIN", value);
value = pageState.getEntry("SVN_LOGIN_USER_OPT").stringValueNullIfEmpty();
if (value != null) {
operator.putOption("SVN_LOGIN_USER_OPT", value);
} else
operator.getOptions().remove("SVN_LOGIN_USER_OPT");
value = pageState.getEntry("SVN_LOGIN_PWD_OPT").stringValueNullIfEmpty();
if (value != null) {
operator.putOption("SVN_LOGIN_PWD_OPT", value);
} else
operator.getOptions().remove("SVN_LOGIN_PWD_OPT");
value = pageState.getEntry("SEND_TO_TWITTER").stringValueNullIfEmpty();
if (value != null)
operator.putOption("SEND_TO_TWITTER", value);
value = pageState.getEntry("GOOGLE_LOGIN_USER").stringValueNullIfEmpty();
if (value != null) {
operator.putOption("GOOGLE_LOGIN_USER", value);
} else
operator.getOptions().remove("GOOGLE_LOGIN_USER");
value = pageState.getEntry("SEND_TO_GOOGLE").stringValueNullIfEmpty();
if (value != null)
operator.putOption("SEND_TO_GOOGLE", value);
value = pageState.getEntry("DEFAULT_EXT_CALENDAR").stringValueNullIfEmpty();
if (value != null)
operator.putOption("DEFAULT_EXT_CALENDAR", value);
}
public static void cmdUpdateLoggedOption(PageState pageState, String optionName, String optionValue) throws PersistenceException {
SessionState sessionState = pageState.sessionState;
Operator logged = pageState.getLoggedOperator();
if (logged != null) {
logged = (Operator) PersistenceHome.findByPrimaryKey(Operator.class, logged.getId());
logged.putOption(optionName, optionValue);
logged.store();
}
}
public void cmdDelete(PageState pageState) throws PersistenceException {
String id = pageState.getMainObjectId().toString();
Listener l = (Listener) PersistenceHome.findByPrimaryKey(Listener.class, id);
if (l != null)
l.remove();
pageState.stopPageAfterController = true;
//make(pageState);
}
public void cmdRemoveOption(PageState pageState) throws PersistenceException {
String[] opId_key = ((String) pageState.mainObjectId).split("___");
String opId = opId_key[0];
String key = opId_key[1];
Operator operator = (Operator) PersistenceHome.findByPrimaryKey(Operator.class, opId);
operator.getOptions().remove(key);
operator.store();
SessionState sessionState = pageState.sessionState;
Operator logged = pageState.getLoggedOperator();
if (logged.equals(operator))
logged.getOptions().remove(key);
}
}