mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-30 18:15:39 +00:00
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2005 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
328 lines
8.5 KiB
Java
328 lines
8.5 KiB
Java
/*
|
|
* Copyright (C) 2005 Alfresco, Inc.
|
|
*
|
|
* Licensed under the Mozilla Public License version 1.1
|
|
* with a permitted attribution clause. You may obtain a
|
|
* copy of the License at
|
|
*
|
|
* http://www.alfresco.org/legal/license.txt
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
* either express or implied. See the License for the specific
|
|
* language governing permissions and limitations under the
|
|
* License.
|
|
*/
|
|
package org.alfresco.web.bean;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import javax.faces.context.FacesContext;
|
|
import javax.faces.event.ActionEvent;
|
|
|
|
import org.alfresco.service.cmr.action.Action;
|
|
import org.alfresco.service.cmr.action.ActionCondition;
|
|
import org.alfresco.service.cmr.repository.NodeRef;
|
|
import org.alfresco.service.cmr.rule.Rule;
|
|
import org.alfresco.service.cmr.rule.RuleService;
|
|
import org.alfresco.web.app.Application;
|
|
import org.alfresco.web.bean.repository.Node;
|
|
import org.alfresco.web.ui.common.Utils;
|
|
import org.alfresco.web.ui.common.component.UIActionLink;
|
|
import org.alfresco.web.ui.common.component.UIModeList;
|
|
import org.alfresco.web.ui.common.component.data.UIRichList;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
|
/**
|
|
* Backing bean for the manage content rules dialog
|
|
*
|
|
* @author gavinc
|
|
*/
|
|
public class RulesBean
|
|
{
|
|
private static final String MSG_ERROR_DELETE_RULE = "error_delete_rule";
|
|
private static final String LOCAL = "local";
|
|
private static final String INHERITED = "inherited";
|
|
|
|
private static Log logger = LogFactory.getLog(RulesBean.class);
|
|
|
|
private String viewMode = INHERITED;
|
|
private BrowseBean browseBean;
|
|
private RuleService ruleService;
|
|
private List<WrappedRule> rules;
|
|
private Rule currentRule;
|
|
private UIRichList richList;
|
|
|
|
/**
|
|
* Returns the current view mode the list of rules is in
|
|
*
|
|
* @return The current view mode
|
|
*/
|
|
public String getViewMode()
|
|
{
|
|
return this.viewMode;
|
|
}
|
|
|
|
/**
|
|
* @return The space to work against
|
|
*/
|
|
public Node getSpace()
|
|
{
|
|
return this.browseBean.getActionSpace();
|
|
}
|
|
|
|
/**
|
|
* Returns the list of rules to display
|
|
*
|
|
* @return
|
|
*/
|
|
public List<WrappedRule> getRules()
|
|
{
|
|
boolean includeInherited = true;
|
|
|
|
if (this.viewMode.equals(LOCAL))
|
|
{
|
|
includeInherited = false;
|
|
}
|
|
|
|
// get the rules from the repository
|
|
List<Rule> repoRules = this.ruleService.getRules(getSpace().getNodeRef(), includeInherited);
|
|
this.rules = new ArrayList<WrappedRule>(repoRules.size());
|
|
|
|
// wrap them all passing the current space
|
|
for (Rule rule : repoRules)
|
|
{
|
|
WrappedRule wrapped = new WrappedRule(rule, getSpace().getNodeRef());
|
|
this.rules.add(wrapped);
|
|
}
|
|
|
|
return this.rules;
|
|
}
|
|
|
|
/**
|
|
* Handles a rule being clicked ready for an action i.e. edit or delete
|
|
*
|
|
* @param event The event representing the click
|
|
*/
|
|
public void setupRuleAction(ActionEvent event)
|
|
{
|
|
UIActionLink link = (UIActionLink)event.getComponent();
|
|
Map<String, String> params = link.getParameterMap();
|
|
String id = params.get("id");
|
|
if (id != null && id.length() != 0)
|
|
{
|
|
if (logger.isDebugEnabled())
|
|
logger.debug("Rule clicked, it's id is: " + id);
|
|
|
|
this.currentRule = this.ruleService.getRule(
|
|
getSpace().getNodeRef(), id);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the current rule
|
|
*
|
|
* @return The current rule
|
|
*/
|
|
public Rule getCurrentRule()
|
|
{
|
|
return this.currentRule;
|
|
}
|
|
|
|
/**
|
|
* Handler called upon the completion of the Delete Rule page
|
|
*
|
|
* @return outcome
|
|
*/
|
|
public String deleteOK()
|
|
{
|
|
String outcome = null;
|
|
|
|
if (this.currentRule != null)
|
|
{
|
|
try
|
|
{
|
|
String ruleTitle = this.currentRule.getTitle();
|
|
|
|
this.ruleService.removeRule(getSpace().getNodeRef(),
|
|
this.currentRule);
|
|
|
|
// clear the current rule
|
|
this.currentRule = null;
|
|
|
|
// setting the outcome will show the browse view again
|
|
outcome = "manageRules";
|
|
|
|
if (logger.isDebugEnabled())
|
|
logger.debug("Deleted rule '" + ruleTitle + "'");
|
|
}
|
|
catch (Throwable err)
|
|
{
|
|
Utils.addErrorMessage(Application.getMessage(
|
|
FacesContext.getCurrentInstance(), MSG_ERROR_DELETE_RULE) + err.getMessage(), err);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
logger.warn("WARNING: deleteOK called without a current Rule!");
|
|
}
|
|
|
|
return outcome;
|
|
}
|
|
|
|
/**
|
|
* Change the current view mode based on user selection
|
|
*
|
|
* @param event ActionEvent
|
|
*/
|
|
public void viewModeChanged(ActionEvent event)
|
|
{
|
|
UIModeList viewList = (UIModeList)event.getComponent();
|
|
this.viewMode = viewList.getValue().toString();
|
|
|
|
// force the list to be re-queried when the page is refreshed
|
|
if (this.richList != null)
|
|
{
|
|
this.richList.setValue(null);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sets the UIRichList component being used by this backing bean
|
|
*
|
|
* @param richList UIRichList component
|
|
*/
|
|
public void setRichList(UIRichList richList)
|
|
{
|
|
this.richList = richList;
|
|
this.richList.setValue(null);
|
|
}
|
|
|
|
/**
|
|
* Returns the UIRichList component being used by this backing bean
|
|
*
|
|
* @return UIRichList component
|
|
*/
|
|
public UIRichList getRichList()
|
|
{
|
|
return this.richList;
|
|
}
|
|
|
|
/**
|
|
* @param browseBean The BrowseBean to set.
|
|
*/
|
|
public void setBrowseBean(BrowseBean browseBean)
|
|
{
|
|
this.browseBean = browseBean;
|
|
}
|
|
|
|
/**
|
|
* @param ruleService Sets the rule service to use
|
|
*/
|
|
public void setRuleService(RuleService ruleService)
|
|
{
|
|
this.ruleService = ruleService;
|
|
}
|
|
|
|
/**
|
|
* Inner class to wrap the Rule objects so we can expose a flag to indicate whether
|
|
* the rule is a local or inherited rule
|
|
*/
|
|
public class WrappedRule
|
|
{
|
|
private Rule rule;
|
|
private NodeRef ruleNode;
|
|
|
|
/**
|
|
* Constructs a RuleWrapper object
|
|
*
|
|
* @param rule The rule we are wrapping
|
|
* @param ruleNode The node the rules belong to
|
|
*/
|
|
public WrappedRule(Rule rule, NodeRef ruleNode)
|
|
{
|
|
this.rule = rule;
|
|
this.ruleNode = ruleNode;
|
|
}
|
|
|
|
/**
|
|
* Returns the rule being wrapped
|
|
*
|
|
* @return The wrapped Rule
|
|
*/
|
|
public Rule getRule()
|
|
{
|
|
return this.rule;
|
|
}
|
|
|
|
/**
|
|
* Determines whether the current rule is a local rule or
|
|
* has been inherited from a parent
|
|
*
|
|
* @return true if the rule is defined on the current node
|
|
*/
|
|
public boolean getLocal()
|
|
{
|
|
return ruleNode.equals(this.rule.getOwningNodeRef());
|
|
}
|
|
|
|
/** Methods to support sorting of the rules list in a table */
|
|
|
|
/**
|
|
* Returns the rule id
|
|
*
|
|
* @return The id
|
|
*/
|
|
public String getId()
|
|
{
|
|
return this.rule.getId();
|
|
}
|
|
|
|
/**
|
|
* Returns the rule title
|
|
*
|
|
* @return The title
|
|
*/
|
|
public String getTitle()
|
|
{
|
|
return this.rule.getTitle();
|
|
}
|
|
|
|
/**
|
|
* Returns the rule description
|
|
*
|
|
* @return The description
|
|
*/
|
|
public String getDescription()
|
|
{
|
|
return this.rule.getDescription();
|
|
}
|
|
|
|
/**
|
|
* Returns the created date
|
|
*
|
|
* @return The created date
|
|
*/
|
|
public Date getCreatedDate()
|
|
{
|
|
return this.rule.getCreatedDate();
|
|
}
|
|
|
|
/**
|
|
* Returns the modfified date
|
|
*
|
|
* @return The modified date
|
|
*/
|
|
public Date getModifiedDate()
|
|
{
|
|
return this.rule.getModifiedDate();
|
|
}
|
|
}
|
|
}
|