[jboss-svn-commits] JBL Code SVN: r11621 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/decisiontable and 16 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 3 00:48:55 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-05-03 00:48:54 -0400 (Thu, 03 May 2007)
New Revision: 11621
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/DecisionTableXLSWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/AssetAttachmentFileWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/decision_table.png
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/spreadsheet_small.gif
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DecisionTableXLSHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/resources/SampleDecisionTable.xls
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Driver.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Policy.java
labs/jbossrules/trunk/drools-jbrms/src/test/resources/SampleDecisionTable_WithError.xls
Removed:
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ContentHandlerTest.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TestEnvironmentSessionHelper.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java
Log:
JBRULES-772 Decision Tables
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -31,14 +31,16 @@
public static String BUSINESS_RULE = "brxml";
- /** use a DSL, not sure about this one - can use text or constrained editor */
+ /** use a DSL, free text editor */
public static String DSL_TEMPLATE_RULE = "brule";
-
+ /** Use a decision table.*/
+ public static String DECISION_SPREADSHEET_XLS = "xls";
+
/**
* The following group the
*/
- public static String[] BUSINESS_RULE_FORMATS = new String[] {AssetFormats.BUSINESS_RULE, AssetFormats.DSL_TEMPLATE_RULE};
+ public static String[] BUSINESS_RULE_FORMATS = new String[] {AssetFormats.BUSINESS_RULE, AssetFormats.DSL_TEMPLATE_RULE, AssetFormats.DECISION_SPREADSHEET_XLS};
public static String[] TECHNICAL_RULE_FORMATS = new String[] {AssetFormats.DRL};
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/DecisionTableXLSWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/DecisionTableXLSWidget.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/DecisionTableXLSWidget.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -0,0 +1,33 @@
+package org.drools.brms.client.decisiontable;
+
+import org.drools.brms.client.packages.AssetAttachmentFileWidget;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.client.ruleeditor.RuleViewer;
+
+import com.google.gwt.user.client.ui.HTML;
+
+/**
+ * This widget deals with XLS files in "classic" decision tables.
+ *
+ * @author Michael Neale
+ */
+public class DecisionTableXLSWidget extends AssetAttachmentFileWidget {
+
+ public DecisionTableXLSWidget(
+ RuleAsset asset, RuleViewer viewer) {
+ super( asset,
+ viewer );
+ super.addDescription(new HTML("<small><i>This is a decision table in a spreadsheet (XLS). Typically they contain many rules in one sheet.</i></small>"));
+ }
+
+ public String getIcon() {
+ return "images/decision_table.png";
+ }
+
+ public String getOverallStyleName() {
+ return "decision-Table-upload";
+ }
+
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/DecisionTableXLSWidget.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/AssetAttachmentFileWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/AssetAttachmentFileWidget.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/AssetAttachmentFileWidget.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -0,0 +1,158 @@
+package org.drools.brms.client.packages;
+
+import org.drools.brms.client.common.ErrorPopup;
+import org.drools.brms.client.common.FormStyleLayout;
+import org.drools.brms.client.common.HTMLFileManagerFields;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.client.ruleeditor.RuleViewer;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FileUpload;
+import com.google.gwt.user.client.ui.FormHandler;
+import com.google.gwt.user.client.ui.FormPanel;
+import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
+import com.google.gwt.user.client.ui.FormSubmitEvent;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Hyperlink;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This wraps a file uploader utility for model packages.
+ * Model packages are jar files.
+ *
+ * @author Michael Neale
+ * @author Fernando Meyer
+ */
+
+public abstract class AssetAttachmentFileWidget extends Composite {
+
+
+ private FormPanel form;
+ private Button ok;
+ private HorizontalPanel busy;
+ private RuleViewer viewer;
+ private FormStyleLayout layout;
+
+
+ public AssetAttachmentFileWidget(final RuleAsset asset, final RuleViewer viewer) {
+ this.viewer = viewer;
+ initWidgets(asset.uuid, asset.metaData.name);
+ initAssetHandlers();
+ }
+
+ protected void initWidgets(final String uuid, String formName) {
+ form = new FormPanel();
+ form.setAction( GWT.getModuleBaseURL() + "asset" );
+ form.setEncoding( FormPanel.ENCODING_MULTIPART );
+ form.setMethod( FormPanel.METHOD_POST );
+
+ FileUpload up = new FileUpload();
+ up.setName( HTMLFileManagerFields.UPLOAD_FIELD_NAME_ATTACH );
+ HorizontalPanel fields = new HorizontalPanel();
+ fields.add( getHiddenField(HTMLFileManagerFields.FORM_FIELD_UUID, uuid) );
+
+ ok = new Button("Upload");
+
+ fields.add( up );
+ fields.add( ok );
+
+ form.add( fields );
+
+ layout = new FormStyleLayout(getIcon(),
+ formName);
+
+
+ layout.addAttribute( "Upload new version:", form );
+
+ Button dl = new Button("Download");
+ dl.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ Window.open( GWT.getModuleBaseURL() + "asset?" + HTMLFileManagerFields.FORM_FIELD_UUID + "=" + uuid,
+ "downloading...", "" );
+ }
+ });
+ layout.addAttribute( "Download current version:", dl );
+
+ busy = new HorizontalPanel();
+ busy.setVisible( false );
+ busy.add( new Label("Uploading file...") );
+ busy.add( new Image("images/spinner.gif") );
+
+ layout.addRow( busy );
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showUploadingBusy();
+ submitUpload();
+ }
+ });
+
+ initWidget( layout );
+ layout.setWidth( "100%" );
+ this.setStyleName( getOverallStyleName() );
+ }
+
+ /**
+ * @return The path to the icon to use.
+ */
+ public abstract String getIcon();
+
+ /**
+ * return the overall style name to use.
+ */
+ public abstract String getOverallStyleName();
+
+ void initAssetHandlers( ) {
+ form.addFormHandler( new FormHandler() {
+
+ public void onSubmit(FormSubmitEvent ev) {
+ }
+
+ public void onSubmitComplete(FormSubmitCompleteEvent ev) {
+ if (ev.getResults().indexOf( "OK" ) > -1) {
+ viewer.refreshDataAndView();
+ } else {
+ ErrorPopup.showMessage( "Unable to upload the file." );
+ }
+ }
+
+ });
+ }
+
+ protected void submitUpload() {
+ DeferredCommand.add( new Command() {
+ public void execute() {
+ form.submit();
+ }
+ });
+ }
+
+ protected void showUploadingBusy() {
+ this.ok.setVisible( false );
+ this.form.setVisible( false );
+ this.busy.setVisible( true );
+ }
+
+ private TextBox getHiddenField(String name, String value) {
+ TextBox t = new TextBox();
+ t.setName( name );
+ t.setText( value );
+ t.setVisible( false );
+ return t;
+ }
+
+ public void addDescription(Widget d) {
+ this.layout.addRow( d );
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/AssetAttachmentFileWidget.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -32,9 +32,27 @@
* @author Fernando Meyer
*/
-public class ModelAttachmentFileWidget extends Composite {
+public class ModelAttachmentFileWidget extends AssetAttachmentFileWidget {
+
+ public ModelAttachmentFileWidget(RuleAsset asset, RuleViewer viewer) {
+ super( asset, viewer );
+ }
+
+ public String getIcon() {
+ return "images/model_large.png";
+ }
+
+ public String getOverallStyleName() {
+ return "editable-Surface";
+ }
+
+}
+
+/*Composite {
+
+
private FormPanel form;
private Button ok;
private HorizontalPanel busy;
@@ -137,3 +155,5 @@
}
}
+
+*/
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -6,7 +6,6 @@
import org.drools.brms.client.common.ImageButton;
import org.drools.brms.client.common.RulePackageSelector;
import org.drools.brms.client.common.StatusChangePopup;
-import org.drools.brms.client.common.YesNoDialog;
import org.drools.brms.client.rpc.MetaData;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.RuleAsset;
@@ -126,14 +125,10 @@
Button archive = new Button("Archive");
archive.addClickListener(new ClickListener() {
public void onClick(Widget w) {
- YesNoDialog diag = new YesNoDialog("Are you sure about archive this Item?", new Command() {
- public void execute() {
- metaData.checkinComment = "Archived Item on " + new java.util.Date().toString();
- archiveAction.execute();
- }
- });
- diag.setPopupPosition(Window.getClientWidth() / 2, Window.getClientHeight() / 2);
- diag.show();
+ if (Window.confirm( "Are you sure you want to archive this item?" )) {
+ metaData.checkinComment = "Archived Item on " + new java.util.Date().toString();
+ archiveAction.execute();
+ }
}
});
saveControls.add(archive);
@@ -141,16 +136,11 @@
if (this.metaData.versionNumber == 0) {
Button delete = new Button( "Delete" );
delete.addClickListener( new ClickListener() {
+
public void onClick(Widget w) {
- YesNoDialog diag = new YesNoDialog( "Are you sure about delete this unversioned Item?",
- new Command() {
- public void execute() {
- deleteAction.execute();
- }
- } );
- diag.setPopupPosition( Window.getClientWidth() / 2,
- Window.getClientHeight() / 2 );
- diag.show();
+ if (Window.confirm( "Are you sure you want to permanently delete this (unversioned) item?" ) ) {
+ deleteAction.execute();
+ }
}
} );
saveControls.add( delete );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -5,6 +5,7 @@
import org.drools.brms.client.common.AssetFormats;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.decisiontable.DecisionTableXLSWidget;
import org.drools.brms.client.modeldriven.ui.RuleModeller;
import org.drools.brms.client.packages.ModelAttachmentFileWidget;
import org.drools.brms.client.packages.SuggestionCompletionCache;
@@ -41,8 +42,9 @@
return new DSLRuleEditor( asset );
} else if ( asset.metaData.format.equals( AssetFormats.MODEL ) ) {
return new ModelAttachmentFileWidget( asset, viewer );
+ } else if (asset.metaData.format.equals( AssetFormats.DECISION_SPREADSHEET_XLS )){
+ return new DecisionTableXLSWidget( asset, viewer );
} else {
-
return new DefaultRuleContentWidget( asset );
}
@@ -118,7 +120,10 @@
icon = "function_assets.gif";
} else if ( asset.metaData.format.equals( AssetFormats.MODEL ) ) {
icon = "model_asset.gif";
+ } else if (asset.metaData.format.equals( AssetFormats.DECISION_SPREADSHEET_XLS )) {
+ icon = "spreadsheet_small.gif";
}
+
tab.add( view,
"<img src='images/" + icon + "'>" + displayName,
true );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -131,6 +131,7 @@
box.addItem( "Business rule", AssetFormats.BUSINESS_RULE );
box.addItem( "DRL rule (technical rule)", AssetFormats.DRL );
box.addItem( "Business rule using a DSL template", AssetFormats.DSL_TEMPLATE_RULE );
+ box.addItem( "Decision table (spreadsheet)", AssetFormats.DECISION_SPREADSHEET_XLS );
box.setSelectedIndex( 0 );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -89,6 +89,7 @@
table.setWidget( 0, 1, quick);
formatter.setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
+ formatter.setAlignment( 1, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
formatter.setRowSpan( 0, 1, 3 );
formatter.setWidth( 0, 0, "30%" );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css 2007-05-03 04:48:54 UTC (rev 11621)
@@ -315,6 +315,11 @@
// padding: 4px;
}
+.decision-Table-upload {
+ background-color: white;
+ border: 1px solid #aaaa99;
+}
+
.package-Editor {
background-color: #f7f2d0;
border: 1px solid #aaaa99;
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/decision_table.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/decision_table.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/spreadsheet_small.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/spreadsheet_small.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -157,6 +157,9 @@
asset.updateContent( "[when]Condition sentence template {var}=" +
"rule language mapping {var}\n" +
"[then]Action sentence template=rule language mapping");
+ } else if (format.equals( AssetFormats.DECISION_SPREADSHEET_XLS )) {
+ asset.updateBinaryContentAttachment( this.getClass().getResourceAsStream( "/SampleDecisionTable.xls" ) );
+ asset.updateBinaryContentAttachmentFileName( "SampleDecisionTable.xls" );
}
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -27,6 +27,7 @@
put(AssetFormats.DSL, new DSLDefinitionContentHandler());
put(AssetFormats.FUNCTION, new FunctionContentHandler());
put(AssetFormats.MODEL, new ModelContentHandler());
+ put(AssetFormats.DECISION_SPREADSHEET_XLS, new DecisionTableXLSHandler());
}};
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DecisionTableXLSHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DecisionTableXLSHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DecisionTableXLSHandler.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -0,0 +1,50 @@
+package org.drools.brms.server.contenthandler;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.server.builder.BRMSPackageBuilder;
+import org.drools.brms.server.builder.ContentPackageAssembler.ErrorLogger;
+import org.drools.compiler.DroolsParserException;
+import org.drools.decisiontable.InputType;
+import org.drools.decisiontable.SpreadsheetCompiler;
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+
+import com.google.gwt.user.client.rpc.SerializableException;
+
+/**
+ * This is for handling XLS content (classic decision tables).
+ *
+ * @author Michael Neale
+ */
+public class DecisionTableXLSHandler extends ContentHandler implements IRuleAsset {
+
+
+ public void retrieveAssetContent(RuleAsset asset,
+ PackageItem pkg,
+ AssetItem item) throws SerializableException {
+ //do nothing, as we have an attachment
+ }
+
+ public void storeAssetContent(RuleAsset asset,
+ AssetItem repoAsset) throws SerializableException {
+ //do nothing, as we have an attachment
+ }
+
+ public void assembleDRL(BRMSPackageBuilder builder, AssetItem asset, StringBuffer buf) {
+ SpreadsheetCompiler comp = new SpreadsheetCompiler();
+ String drl = comp.compile( asset.getBinaryContentAttachment(), InputType.XLS );
+ buf.append( drl );
+ }
+
+ public void compile(BRMSPackageBuilder builder, AssetItem asset, ErrorLogger logger) throws DroolsParserException,
+ IOException {
+ SpreadsheetCompiler comp = new SpreadsheetCompiler();
+ String drl = comp.compile( asset.getBinaryContentAttachment(), InputType.XLS );
+ builder.addPackageFromDrl( new StringReader(drl) );
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DecisionTableXLSHandler.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TestEnvironmentSessionHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TestEnvironmentSessionHelper.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TestEnvironmentSessionHelper.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -1,5 +1,7 @@
package org.drools.brms.server.util;
+import java.io.File;
+
import javax.jcr.LoginException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
@@ -9,6 +11,7 @@
import org.drools.repository.JCRRepositoryConfigurator;
import org.drools.repository.JackrabbitRepositoryConfigurator;
+import org.drools.repository.RepositorySessionUtil;
import org.drools.repository.RulesRepository;
import org.drools.repository.RulesRepositoryAdministrator;
@@ -29,6 +32,14 @@
public static synchronized Session getSession(boolean erase) throws Exception {
if (repository == null) {
+
+ if (erase) {
+ File repoDir = new File("repository");
+ System.out.println("DELETE test repo dir: " + repoDir.getAbsolutePath());
+ RepositorySessionUtil.deleteDir( repoDir );
+ System.out.println("TEST repo dir deleted.");
+ }
+
JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
repository = config.getJCRRepository(null);;
Added: labs/jbossrules/trunk/drools-jbrms/src/main/resources/SampleDecisionTable.xls
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/resources/SampleDecisionTable.xls
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Driver.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Driver.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Driver.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -0,0 +1,41 @@
+package org.acme.insurance;
+
+/**
+ * This represents obviously a driver who is applying for an insurance Policy.
+ * @author Michael Neale
+ *
+ */
+public class Driver {
+
+ private String name = "Mr Joe Blogs";
+ private Integer age = new Integer(30);
+ private Integer priorClaims = new Integer(0);
+ private String locationRiskProfile = "LOW";
+
+ public Integer getAge() {
+ return age;
+ }
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+ public String getLocationRiskProfile() {
+ return locationRiskProfile;
+ }
+ public void setLocationRiskProfile(String locationRiskProfile) {
+ this.locationRiskProfile = locationRiskProfile;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public Integer getPriorClaims() {
+ return priorClaims;
+ }
+ public void setPriorClaims(Integer priorClaims) {
+ this.priorClaims = priorClaims;
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Driver.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Policy.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Policy.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Policy.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -0,0 +1,49 @@
+package org.acme.insurance;
+
+/**
+ * This represents a policy that a driver is applying for.
+ *
+ * Obviously in the real world, there are actuaries to mess things up, but lets just pretend there is
+ * some simple base price and discount that we can calculate with relatively simple rules !
+ *
+ * @author Michael Neale
+ */
+public class Policy {
+
+ private String type = "COMPREHENSIVE";
+ private boolean approved = false;
+ private int discountPercent = 0;
+ private int basePrice;
+
+ public boolean isApproved() {
+ return approved;
+ }
+ public void setApproved(boolean approved) {
+ this.approved = approved;
+ }
+ public int getDiscountPercent() {
+ return discountPercent;
+ }
+ public void setDiscountPercent(int discountPercent) {
+ this.discountPercent = discountPercent;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void applyDiscount(int discount) {
+ discountPercent += discount;
+ }
+ public int getBasePrice() {
+ return basePrice;
+ }
+ public void setBasePrice(int basePrice) {
+ this.basePrice = basePrice;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/acme/insurance/Policy.java
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ContentHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ContentHandlerTest.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ContentHandlerTest.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -1,17 +0,0 @@
-package org.drools.brms.server;
-
-import org.drools.brms.client.common.AssetFormats;
-import org.drools.brms.server.contenthandler.BRXMLContentHandler;
-import org.drools.brms.server.contenthandler.ContentHandler;
-import org.drools.brms.server.contenthandler.DSLRuleContentHandler;
-import org.drools.brms.server.contenthandler.PlainTextContentHandler;
-
-import junit.framework.TestCase;
-
-public class ContentHandlerTest extends TestCase {
-
-
- public void testContentHandlerCreate() {
-
- }
-}
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -150,6 +150,15 @@
// impl.createNewRule( "somerule_" + i, "description",
// "testAddRule", "another", "drl" );
// }
+
+ result = impl.createNewRule( "testDTSample",
+ "a description",
+ "testAddRule",
+ "another",
+ AssetFormats.DECISION_SPREADSHEET_XLS );
+ AssetItem dtItem = impl.repository.loadAssetByUUID( result );
+ assertNotNull(dtItem.getBinaryContentAsBytes());
+ assertTrue(dtItem.getBinaryContentAttachmentFileName().endsWith( ".xls" ));
}
public void testAttemptDupeRule() throws Exception {
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -1,18 +1,28 @@
package org.drools.brms.server.builder;
+import java.io.InputStream;
+
import junit.framework.TestCase;
+import org.acme.insurance.Driver;
+import org.acme.insurance.Policy;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
import org.drools.brms.client.common.AssetFormats;
import org.drools.brms.server.util.TestEnvironmentSessionHelper;
import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepository;
import org.drools.rule.Package;
+import org.drools.util.BinaryRuleBaseLoader;
+/**
+ * This will unit test package assembly into a binary.
+ * @author Michael Neale
+ */
public class ContentPackageAssemblerTest extends TestCase {
-
-
/**
* Test package configuration errors,
* including header, functions, DSL files.
@@ -298,7 +308,68 @@
}
+ public void testXLSDecisionTable() throws Exception {
+
+ RulesRepository repo = getRepo();
+
+ //first, setup the package correctly:
+ PackageItem pkg = repo.createPackage( "testXLSDecisionTable", "" );
+
+ pkg.updateHeader( "import org.acme.insurance.Policy\n import org.acme.insurance.Driver" );
+ repo.save();
+
+ InputStream xls = this.getClass().getResourceAsStream( "/SampleDecisionTable.xls" );
+ assertNotNull(xls);
+
+ AssetItem asset = pkg.addAsset( "MyDT", "" );
+ asset.updateFormat( AssetFormats.DECISION_SPREADSHEET_XLS );
+ asset.updateBinaryContentAttachment( xls );
+ asset.checkin( "" );
+
+ ContentPackageAssembler asm = new ContentPackageAssembler(pkg);
+ if (asm.hasErrors()) {
+ System.err.println(asm.getErrors().get( 0 ).errorReport);
+ System.err.println(asm.getDRL());
+ }
+ assertFalse(asm.hasErrors());
+
+ String drl = asm.getDRL();
+
+ assertContains( "policy: Policy", drl );
+
+
+ Package bin = asm.getBinaryPackage();
+
+ RuleBase rb = RuleBaseFactory.newRuleBase();
+ rb.addPackage( bin );
+
+ WorkingMemory wm = rb.newStatefulSession();
+
+ //now create some test data
+ Driver driver = new Driver();
+ Policy policy = new Policy();
+
+ wm.assertObject(driver);
+ wm.assertObject(policy);
+
+ wm.fireAllRules();
+
+ assertEquals(120, policy.getBasePrice());
+
+ asset.updateBinaryContentAttachment( this.getClass().getResourceAsStream( "/SampleDecisionTable_WithError.xls" ) );
+ asset.checkin( "" );
+ asm = new ContentPackageAssembler(pkg);
+ assertTrue(asm.hasErrors());
+ assertEquals(asset.getName(), asm.getErrors().get( 0 ).itemInError.getName());
+ asm = new ContentPackageAssembler(pkg, false);
+ assertFalse(asm.hasErrors());
+ drl = asm.getDRL();
+ assertNotNull(drl);
+ assertContains( "Driverx", drl);
+
+ }
+
private void assertContains(String sub, String text) {
if (text.indexOf( sub ) == -1) {
fail("the text: '" + sub +"' was not found.");
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java 2007-05-03 04:33:33 UTC (rev 11620)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java 2007-05-03 04:48:54 UTC (rev 11621)
@@ -11,7 +11,9 @@
assertTrue(ContentHandler.getHandler( AssetFormats.DSL ) instanceof DSLDefinitionContentHandler);
assertTrue(ContentHandler.getHandler( AssetFormats.DSL_TEMPLATE_RULE ) instanceof DSLRuleContentHandler);
assertTrue(ContentHandler.getHandler( AssetFormats.BUSINESS_RULE ) instanceof BRXMLContentHandler);
+ assertTrue(ContentHandler.getHandler( AssetFormats.DECISION_SPREADSHEET_XLS ) instanceof DecisionTableXLSHandler);
+
try {
ContentHandler.getHandler( "XXX" );
fail("should have thrown an exception");
@@ -24,6 +26,7 @@
assertTrue(ContentHandler.getHandler( AssetFormats.DRL ).isRuleAsset());
assertTrue(ContentHandler.getHandler( AssetFormats.DSL_TEMPLATE_RULE ).isRuleAsset());
assertTrue(ContentHandler.getHandler( AssetFormats.BUSINESS_RULE ).isRuleAsset());
+ assertTrue(ContentHandler.getHandler( AssetFormats.DECISION_SPREADSHEET_XLS ).isRuleAsset());
assertFalse(ContentHandler.getHandler( AssetFormats.DSL ).isRuleAsset());
assertFalse(ContentHandler.getHandler( AssetFormats.MODEL ).isRuleAsset());
Added: labs/jbossrules/trunk/drools-jbrms/src/test/resources/SampleDecisionTable_WithError.xls
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/resources/SampleDecisionTable_WithError.xls
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
More information about the jboss-svn-commits
mailing list