/**
* Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
*/
package org.ralasafe.servlet;
import java.util.HashMap;
import java.util.Map;
import org.ralasafe.EntityExistException;
import org.ralasafe.SystemConstant;
import org.ralasafe.db.sql.xml.DefineVariable;
import org.ralasafe.db.sql.xml.ExprGroup;
import org.ralasafe.db.sql.xml.BusinessData;
import org.ralasafe.db.sql.xml.BusinessDataType;
import org.ralasafe.entitle.ScriptTestResult;
import org.ralasafe.entitle.BusinessDataManager;
import org.ralasafe.script.AbstractPolicy;
import org.ralasafe.script.ScriptFactory;
import org.ralasafe.user.User;
public class BusinessDataPolicyDesignHandler extends AbstractPolicyDesignHandler {
private final BusinessDataManager manager;
final BusinessDataType xml;
public String getPolicyType() {
return "businessData";
}
public String getManagePage() {
return "./businessDataMng.rls";
}
public BusinessDataPolicyDesignHandler( BusinessDataManager manager,
BusinessDataType xmlUc ) {
this.manager=manager;
this.xml=xmlUc;
}
public String getDesignPageTitle() {
return "Design Business Data: " + xml.getName();
}
public String getRawPageTitle() {
return "Edit Business Data manually: " + xml.getName();
}
public DefineVariable[] getVariables() {
return xml.getDefineVariable();
}
public void deleteVariable( int id ) {
xml.removeDefineVariableAt( id );
}
public void addVariable( DefineVariable var ) {
xml.addDefineVariable( var );
}
public void updateVariable( int varIndex, DefineVariable var ) {
xml.setDefineVariable( varIndex, var );
}
public ExprGroup getExprGroup() {
return xml.getExprGroup();
}
public void save( int id ) throws EntityExistException {
manager.updateBusinessData( id, (BusinessData) xml );
}
public void setDesignMode() {
xml.setIsRawScript( false );
}
public void setRawMode() {
xml.setIsRawScript( true );
}
public void setRawScript( String script ) {
xml.getRawScript().setContent( script );
}
public String getRawScript() {
return xml.getRawScript().getContent();
}
public ScriptTestResult run( User user, Object businessData, Map context ) {
AbstractPolicy policy2=getPolicy();
org.ralasafe.script.BusinessData script=(org.ralasafe.script.BusinessData) policy2;
if( context==null ) {
context=new HashMap();
}
context.put(SystemConstant.BUSINESS_DATA, businessData);
return script.test( user, context, getQueryManager() );
}
public AbstractPolicy transferXml2Policy() {
return ScriptFactory.getBusinessData( xml, getQueryManager() );
}
}