package com.extendedencryption.web.bean;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Serializable;
import java.text.MessageFormat;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.alfresco.repo.action.ActionImpl;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.web.app.Application;
import org.alfresco.web.bean.BrowseBean;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.component.UIActionLink;
import org.springframework.web.jsf.FacesContextUtils;
import com.extendedencryption.action.executer.BaseExecuter;
/**
* This bean manages the Web Settings on a node.
*
* @a
*/
public class WebSettingsBean implements Serializable {
private static final long serialVersionUID = -2971315501270684048L;
private static final String PARAM_ID = "id";
private static final String PARAM_ACTIVE = "active";
private static final String MSG_SUCCESS_WEB_SET_ACTIVE = "success_web_set_active";
private static final String PANEL_ID_SPACE_PROPS = "space-props";
/**
* The BrowseBean to be used by the bean
*/
protected BrowseBean browseBean;
/**
* Public constructor
*/
public WebSettingsBean() {
}
/**
* Action handler called when the enable or disable action is clicked.
*
* @param event
*/
public void setActive(final ActionEvent event) {
UIActionLink link = (UIActionLink) event.getComponent();
Map<String, String> params = link.getParameterMap();
String id = params.get(PARAM_ID);
String active = params.get(PARAM_ACTIVE);
final Boolean activeFlag = Boolean.parseBoolean(active);
final FacesContext fc = FacesContext.getCurrentInstance();
if (id != null && id.length() != 0) {
try {
final NodeRef ref = new NodeRef(Repository.getStoreRef(), id);
RetryingTransactionHelper txnHelper = Repository.getRetryingTransactionHelper(fc);
RetryingTransactionCallback<Object> callback = new RetryingTransactionCallback<Object>() {
public Object execute() throws Throwable {
ActionImpl action = new ActionImpl(ref, BaseExecuter.NAME, null);
action.setParameterValue(BaseExecuter.PARAM_ACTIVE, activeFlag);
BaseExecuter actionExecuter = (BaseExecuter) FacesContextUtils.getWebApplicationContext(fc).getBean(BaseExecuter.NAME);
actionExecuter.execute(action, ref);
String msg = Application.getMessage(fc, MSG_SUCCESS_WEB_SET_ACTIVE);
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
String formId = Utils.getParentForm(fc,
event.getComponent()).getClientId(fc);
fc.addMessage(formId + ':' + PANEL_ID_SPACE_PROPS, facesMsg);
return null;
}
};
txnHelper.doInTransaction(callback);
this.browseBean.getDocument().reset();
} catch (InvalidNodeRefException refErr) {
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
fc, Repository.ERROR_NODEREF), new Object[]{id}));
} catch (Throwable err) {
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
fc, Repository.ERROR_GENERIC), err.getMessage()), err);
}
}
}
// ------------------------------------------------------------------------------
// Bean property setter
/**
* @param browseBean The BrowseBean to set.
*/
public void setBrowseBean(BrowseBean browseBean) {
this.browseBean = browseBean;
}
}