[jboss-svn-commits] JBL Code SVN: r9003 - in labs/jbossrules/trunk/drools-jbrms: src/main/java/org/drools/brms/client/common and 10 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jan 24 04:51:01 EST 2007
Author: michael.neale at jboss.com
Date: 2007-01-24 04:51:01 -0500 (Wed, 24 Jan 2007)
New Revision: 9003
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionBrowser.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionViewer.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/asset_version.png
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRXMLToDRLConverter.java
Modified:
labs/jbossrules/trunk/drools-jbrms/.classpath
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.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/AssetCategoryEditor.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.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/JBRMSServiceServlet.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
JBRULES-560 Version Browser
Modified: labs/jbossrules/trunk/drools-jbrms/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/.classpath 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/.classpath 2007-01-24 09:51:01 UTC (rev 9003)
@@ -1,23 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
- <classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/tmatesoft/javasvn/1.1-beta5/javasvn-1.1-beta5.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-repository/3.1.0-SNAPSHOT/drools-repository-3.1.0-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-repository/3.1.0-SNAPSHOT/drools-repository-3.1.0-SNAPSHOT-tests.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.8/log4j-1.2.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/google/gwt-servlet/1.2.11/gwt-servlet-1.2.11.jar"/>
- <classpathentry kind="var" path="M2_REPO/jsr170/jcr/1.0/jcr-1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/lucene/lucene/1.4.3/lucene-1.4.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.1/jackrabbit-core-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.1.3.1/derby-10.1.3.1.jar"/>
-</classpath>
\ No newline at end of file
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/tmatesoft/javasvn/1.1-beta5/javasvn-1.1-beta5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.8/log4j-1.2.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/google/gwt-servlet/1.2.11/gwt-servlet-1.2.11.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jsr170/jcr/1.0/jcr-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/lucene/lucene/1.4.3/lucene-1.4.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.1/jackrabbit-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.1.3.1/derby-10.1.3.1.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-repository"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -50,6 +50,13 @@
}
+ /** Adds a widget that takes up a whole row. */
+ public void addRow(Widget w) {
+ layout.setWidget( numInLayout, 0, w);
+ formatter.setColSpan( numInLayout, 0, 2 );
+ numInLayout++;
+ }
+
/**
* Adds a header at the top.
*/
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -0,0 +1,19 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+/**
+ * This is a generic call back that handles errors (very simply).
+ *
+ * @author Michael Neale
+ */
+public abstract class GenericCallback
+ implements
+ AsyncCallback {
+
+ public void onFailure(Throwable t) {
+ ErrorPopup.showMessage( t.getMessage() );
+ }
+
+ public abstract void onSuccess(Object data);
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -21,7 +21,7 @@
public Date lastModifiedDate;
public String lastContributor = "";
public String versionNumber;
- public String lastCheckinComment = "";
+
public Date createdDate;
public String packageName = "";
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -52,10 +52,23 @@
/**
+ * This will load the history of the given asset, in a summary format suitable
+ * for display in a table.
+ */
+ public TableDataResult loadAssetHistory(String uuid) throws SerializableException;
+
+ /**
* This checks in a new version of an asset.
* @return the UUID of the asset you are checking in,
* null if there was some problem (and an exception was not thrown).
*/
public String checkinVersion(RuleAsset asset) throws SerializableException;
+
+ /**
+ * This will restore the specified version in the repository, saving, and creating
+ * a new version (with all the restored content).
+ */
+ public void restoreVersion(String versionUUID, String assetUUID, String comment);
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -23,6 +23,8 @@
public void createNewRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, AsyncCallback cb);
public void listRulePackages(AsyncCallback cb);
public void loadRuleAsset(java.lang.String p0, AsyncCallback cb);
+ public void loadAssetHistory(java.lang.String p0, AsyncCallback cb);
public void checkinVersion(org.drools.brms.client.rpc.RuleAsset p0, AsyncCallback cb);
+ public void restoreVersion(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -4,13 +4,12 @@
/**
* This contains the results returned to populate a table/grid.
+ * This will be enhanced to provide pagination data shortly.
* @author Michael Neale
*/
public class TableDataResult
implements
IsSerializable {
-
- public int numberOfRows;
public TableDataRow[] data;
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -71,7 +71,6 @@
AsyncCallback callback) {
log("loading rule list", "for cat path: " + categoryPath);
TableDataResult result = new TableDataResult();
- result.numberOfRows = 42;
result.data = new TableDataRow[42];
@@ -330,6 +329,23 @@
}
+
+
+
+ public void loadAssetHistory(String p0,
+ AsyncCallback cb) {
+ cb.onSuccess( null );
+ }
+
+
+
+ public void restoreVersion(String p0,
+ String p1,
+ String p2,
+ AsyncCallback cb) {
+ cb.onSuccess( null );
+
+ }
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-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -32,15 +32,12 @@
private MetaData metaData;
private Command checkin;
- /**
- * TODO:
- * * need to somehow refresh on checkin? (or just close?)
- *
- */
+
+
public ActionToolbar(final MetaData meta,
- final Command checkin,
- final ClickListener changeState,
- final Command minimiseMaximise) {
+ final Command checkin,
+ final Command minimiseMaximise,
+ boolean readOnly) {
this.metaData = meta;
this.checkin = checkin;
@@ -50,6 +47,21 @@
HorizontalPanel saveControls = new HorizontalPanel();
HTML state = new HTML("<b>Status: <i>[" + status + "]</i></b>");
saveControls.add( state );
+
+ if (!readOnly) {
+ controls( minimiseMaximise,
+ formatter,
+ saveControls );
+
+ }
+
+ initWidget( layout );
+ setWidth( "100%" );
+ }
+
+ private void controls(final Command minimiseMaximise,
+ FlexCellFormatter formatter,
+ HorizontalPanel saveControls) {
Image editState = new Image("images/edit.gif");
editState.setTitle( "Change state (NOT IMPLEMENTED YET)." );
saveControls.add( editState );
@@ -100,48 +112,55 @@
layout.setWidget( 0, 1, windowControls );
formatter.setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE );
-
-
-
- initWidget( layout );
- setWidth( "100%" );
}
/**
* Called when user wants to checkin.
*/
protected void doCheckinConfirm() {
- final FormStylePopup pop = new FormStylePopup("images/checkin.gif", "Check in changes.");
- final TextArea comment = new TextArea();
- comment.setWidth( "100%" );
- Button save = new Button("Save");
- pop.addAttribute( "Comment", comment );
- pop.addAttribute( "", save);
- bindCommentField( comment );
-
-
- save.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
+ final CheckinPopup pop = new CheckinPopup(200, getAbsoluteTop(), "Check in changes.");
+ pop.setCommand( new Command() {
+
+ public void execute() {
+ metaData.checkinComment = pop.getCheckinComment();
+ checkin.execute();
- checkin.execute();
- pop.hide();
}
+
});
+ pop.show();
+// final FormStylePopup pop = new FormStylePopup("images/checkin.gif", "Check in changes.");
+// final TextArea comment = new TextArea();
+// comment.setWidth( "100%" );
+// Button save = new Button("Save");
+// pop.addAttribute( "Comment", comment );
+// pop.addAttribute( "", save);
+//
+// bindCommentField( comment );
+//
+//
+// save.addClickListener( new ClickListener() {
+// public void onClick(Widget w) {
+//
+// checkin.execute();
+// pop.hide();
+// }
+// });
+//
+// pop.setStyleName( "ks-popups-Popup" );
+// pop.setPopupPosition( 200, getAbsoluteTop() );
+// pop.show();
- pop.setStyleName( "ks-popups-Popup" );
- pop.setPopupPosition( 200, getAbsoluteTop() );
- pop.show();
-
}
- private void bindCommentField(final TextArea comment) {
- comment.addChangeListener( new ChangeListener() {
- public void onChange(Widget w) {
- metaData.checkinComment = comment.getText();
- }
- });
- }
+// private void bindCommentField(final TextArea comment) {
+// comment.addChangeListener( new ChangeListener() {
+// public void onChange(Widget w) {
+// metaData.checkinComment = comment.getText();
+// }
+// });
+// }
/**
* Called when user wants to close, but there is "dirtyness".
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -39,7 +39,8 @@
box = new ListBox();
- box.setVisibleItemCount( 4 );
+
+ box.setVisibleItemCount( 3 );
box.setWidth( "100%" );
box.setMultipleSelect( false );
loadData( box );
@@ -136,6 +137,13 @@
public void addToCategory(String selectedPath) {
+ //ignore already selected ones.
+ for ( int i = 0; i < data.categories.length; i++ ) {
+ if (data.categories[i].equals( selectedPath )) {
+ return;
+ }
+ }
+
String[] newList = new String[data.categories.length + 1];
for ( int i = 0; i < data.categories.length; i++ ) {
newList[i] = data.categories[i];
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -1,5 +1,8 @@
package org.drools.brms.client.ruleeditor;
+import org.drools.brms.client.common.FormStylePopup;
+
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.FlexTable;
@@ -18,41 +21,43 @@
* @author Michael Neale
*
*/
-public class CheckinPopup extends PopupPanel {
+public class CheckinPopup {
- final private FlexTable layout = new FlexTable();
- final private TextArea comment = new TextArea();
- final private ClickListener okClick;
- public CheckinPopup(ClickListener click) {
- super(true);
- this.okClick = click;
-
- this.setStyleName( "ks-popups-Popup" );
-
- FlexCellFormatter formatter = layout.getFlexCellFormatter();
-
- layout.setWidget( 0, 0, new Image() );
- layout.setWidget( 1, 0, new Label("Comment:") );
- formatter.setHorizontalAlignment( 1, 0, HasHorizontalAlignment.ALIGN_RIGHT );
-
- layout.setWidget( 1, 1, comment );
- formatter.setHorizontalAlignment( 1, 1, HasHorizontalAlignment.ALIGN_LEFT );
+ private TextArea comment;
+ private Button save;
+ private FormStylePopup pop;
+
+
+ public CheckinPopup(int left, int top, String message) {
+ pop = new FormStylePopup("images/checkin.gif", message);
+ comment = new TextArea();
comment.setWidth( "100%" );
- comment.setHeight( "100%" );
- comment.setStyleName( "rule-viewer-Documentation" );
+ save = new Button("Save");
+ pop.addAttribute( "Comment", comment );
+ pop.addAttribute( "", save);
+
- Button ok = new Button();
- ok.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- okClick.onClick( w );
- }
+ pop.setStyleName( "ks-popups-Popup" );
+ pop.setPopupPosition( left, top );
+
+ }
+
+ public void setCommand(final Command checkin) {
+ save.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ checkin.execute();
+ pop.hide();
+ }
});
-
- layout.setWidget( 2, 0, ok);
- formatter.setHorizontalAlignment( 2, 0, HasHorizontalAlignment.ALIGN_LEFT );
-
- add( layout );
}
+
+ public void show() {
+ pop.show();
+ }
+ public String getCheckinComment() {
+ return comment.getText();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -5,6 +5,7 @@
import org.drools.brms.client.common.FormStyleLayout;
import org.drools.brms.client.rpc.MetaData;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
@@ -21,11 +22,20 @@
private MetaData data;
private boolean readOnly;
+ private String uuid;
+ private Command refreshView;
- public MetaDataWidget(MetaData d, boolean readOnly) {
- super("images/meta_data.gif", d.name);
+ public MetaDataWidget(MetaData d, boolean readOnly, String uuid, Command refreshView) {
+
+ if (!readOnly) {
+ addHeader( "images/meta_data.gif", d.name );
+ } else {
+ addHeader( "images/asset_version.png", d.name );
+ }
+ this.uuid = uuid;
this.data = d;
this.readOnly = readOnly;
+ this.refreshView = refreshView;
loadData(d);
}
@@ -33,7 +43,21 @@
private void loadData(MetaData d) {
this.data = d;
addAttribute("Categories:", categories());
+
+ addAttribute("Last modified on:", readOnlyDate(data.lastModifiedDate));
+ addAttribute("Last modified by:", readOnlyText(data.lastContributor));
+ addAttribute("Checkin note:", readOnlyText( data.checkinComment ));
+ addAttribute("Created by:", readOnlyText(data.creator));
+ addAttribute("Version number:", getVersionNumberLabel());
+ addAttribute("Package:", readOnlyText(data.packageName));
+ if (!readOnly) {
+ addAttribute("Created on:", readOnlyDate( data.createdDate ));
+ }
+
+
+ addRow(new HTML("<hr/>"));
+
addAttribute("Subject:", editableText(new FieldBinding() {
public String getValue() {
return data.subject;
@@ -42,17 +66,8 @@
public void setValue(String val) {
data.subject = val;
}
- }, "A short description of the subject matter."));
+ }, "A short description of the subject matter."));
- addAttribute("Last modified on:", readOnlyDate(data.lastModifiedDate));
- addAttribute("Last modified by:", readOnlyText(data.lastContributor));
- addAttribute("Checkin note:", readOnlyText( data.lastCheckinComment ));
- addAttribute("Created by:", readOnlyText(data.creator));
- addAttribute("Created on:", readOnlyDate( data.createdDate ));
- addAttribute("Version number:", getVersionNumberLabel());
- addAttribute("Package:", readOnlyText(data.packageName));
-
-
addAttribute("Type:", editableText(new FieldBinding() {
public String getValue() {
return data.type;
@@ -85,6 +100,10 @@
}
}, "A short description or code indicating the source of the rule."));
+
+ if (!readOnly) {
+ addRow( new VersionBrowser(this.uuid, this.data, refreshView) );
+ }
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -26,14 +26,21 @@
protected RuleAsset asset;
private final FlexTable layout;
+ private boolean readOnly;
+ public RuleViewer(RuleAsset asset) {
+ this(asset, false);
+ }
+
/**
* @param UUID The resource to open.
* @param format The type of resource (may determine what editor is used).
* @param name The name to be displayed.
+ * @param historicalReadOnly true if this is a read only view for historical purposes.
*/
- public RuleViewer(RuleAsset asset) {
+ public RuleViewer(RuleAsset asset, boolean historicalReadOnly) {
this.asset = asset;
+ this.readOnly = historicalReadOnly;
layout = new FlexTable();
doWidgets();
@@ -52,10 +59,16 @@
this.layout.clear();
final MetaDataWidget metaWidget = new MetaDataWidget( this.asset.metaData,
- false );
+ readOnly, this.asset.uuid, new Command() {
+ public void execute() {
+ refreshDataAndView();
+ }
+
+ });
+
//now the main layout table
FlexCellFormatter formatter = layout.getFlexCellFormatter();
layout.setWidget( 0,
@@ -75,13 +88,13 @@
public void execute() {
doCheckin();
}
- },
- null,
+ },
new Command() {
public void execute() {
toggleMetaDataWidget();
}
- });
+ },
+ readOnly);
toolbar.setCloseCommand( new Command() {
public void execute() {
closeCommand.execute();
@@ -130,22 +143,32 @@
return;
}
- RepositoryServiceFactory.getService().loadRuleAsset( uuid, new AsyncCallback() {
- public void onFailure(Throwable t) {
- ErrorPopup.showMessage( t.getMessage() );
- }
- public void onSuccess(Object a) {
- asset = (RuleAsset) a;
- doWidgets();
- LoadingPopup.close();
- }
- });
+ refreshDataAndView( );
}
+
+
});
}
+
+ /**
+ * This will reload the contents from the database, and refresh the widgets.
+ */
+ public void refreshDataAndView() {
+
+ RepositoryServiceFactory.getService().loadRuleAsset( asset.uuid, new AsyncCallback() {
+ public void onFailure(Throwable t) {
+ ErrorPopup.showMessage( t.getMessage() );
+ }
+ public void onSuccess(Object a) {
+ asset = (RuleAsset) a;
+ doWidgets();
+ LoadingPopup.close();
+ }
+ });
+ }
/**
* Calling this will toggle the visibility of the meta-data widget (effectively zooming
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionBrowser.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionBrowser.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionBrowser.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -0,0 +1,189 @@
+package org.drools.brms.client.ruleeditor;
+
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.rpc.MetaData;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
+import org.drools.brms.client.table.SortableTable;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+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.FlexTable;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+/**
+ * This widget shows a list of versions.
+ *
+ * @author Michael Neale
+ */
+public class VersionBrowser extends Composite {
+
+ private Image refresh;
+ private FlexTable layout;
+ private String uuid;
+ private MetaData metaData;
+ private Command refreshCommand;
+
+ public VersionBrowser(String uuid, MetaData data, Command ref) {
+
+ this.uuid = uuid;
+ this.metaData = data;
+ this.refreshCommand = ref;
+
+ this.uuid = uuid;
+ HorizontalPanel wrapper = new HorizontalPanel();
+
+ layout = new FlexTable();
+ layout.setWidget( 0, 0, new Label("Version history") );
+ FlexCellFormatter formatter = layout.getFlexCellFormatter();
+ formatter.setHorizontalAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT);
+
+ refresh = new Image("images/refresh.gif");
+
+ refresh.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ clickLoadHistory();
+ }
+ });
+
+ layout.setWidget( 0, 1, refresh );
+ formatter.setHorizontalAlignment( 0, 1, HasHorizontalAlignment.ALIGN_RIGHT);
+
+
+ wrapper.setStyleName( "version-browser-Border" );
+
+ wrapper.add( layout );
+
+ layout.setWidth( "100%" );
+ wrapper.setWidth( "100%" );
+
+ initWidget( wrapper );
+ }
+
+ protected void clickLoadHistory() {
+ showBusyIcon();
+ DeferredCommand.add( new Command() {
+ public void execute() {
+ loadHistoryData();
+ }
+ });
+
+ }
+
+ private void showBusyIcon() {
+ refresh.setUrl( "images/searching.gif" );
+ }
+
+ /**
+ * Actually load the history data, as demanded.
+ */
+ protected void loadHistoryData() {
+
+ RepositoryServiceFactory.getService().loadAssetHistory( this.uuid, new GenericCallback() {
+
+ public void onSuccess(Object data) {
+ if (data == null) {
+ layout.setWidget( 1, 0, new Label("No history.") );
+ showStaticIcon();
+ return;
+ }
+ TableDataResult table = (TableDataResult) data;
+ TableDataRow[] rows = table.data;
+
+ String[] header = new String[] {"Version number", "Comment", "Date Modified", "Status"};
+
+ final SortableTable tableWidget = populateTableData( rows,
+ header );
+
+ tableWidget.setWidth( "100%" );
+
+ layout.setWidget( 1, 0, tableWidget );
+ FlexCellFormatter formatter = layout.getFlexCellFormatter();
+
+ formatter.setColSpan( 1, 0, 2 );
+
+ Button open = new Button("View selected version");
+
+ open.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showVersion(tableWidget.getSelectedKey());
+ }
+
+ });
+
+ layout.setWidget( 2, 1, open );
+ formatter.setColSpan( 2, 1, 3 );
+ formatter.setHorizontalAlignment( 2, 1, HasHorizontalAlignment.ALIGN_CENTER );
+
+ showStaticIcon();
+
+ }
+
+
+ });
+
+
+ }
+
+ /**
+ * This should popup a view of the chosen historical version.
+ * @param selectedUUID
+ */
+ private void showVersion(String selectedUUID) {
+
+ VersionViewer viewer = new VersionViewer(this.metaData, selectedUUID, uuid, refreshCommand);
+ viewer.setPopupPosition( 100, 100 );
+
+
+ viewer.show();
+
+ }
+
+
+
+
+ /**
+ * This will return a sortable table ready to go.
+ * @param rows The data.
+ * @param header Headers.
+ * @return
+ */
+ private SortableTable populateTableData(TableDataRow[] rows,
+ String[] header) {
+ SortableTable tableWidget = new SortableTable(rows.length + 1, rows[0].values.length + 1);
+
+ tableWidget.setColumnHeader( "", 0 );
+
+ for ( int i = 0; i < header.length; i++ ) {
+ tableWidget.setColumnHeader( header[i], i + 1 );
+ }
+
+
+ tableWidget.setHiddenColumn( 0 );
+ for ( int i = 0; i < rows.length; i++ ) {
+ String[] cols = rows[i].values;
+
+ tableWidget.setValue( i + 1, 0, rows[i].id );
+ for ( int j = 0; j < cols.length; j++ ) {
+ tableWidget.setValue( i + 1, j + 1, cols[j] );
+ }
+ }
+ return tableWidget;
+ }
+
+
+ private void showStaticIcon() {
+ refresh.setUrl( "images/refresh.gif" );
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionBrowser.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionViewer.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionViewer.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -0,0 +1,116 @@
+package org.drools.brms.client.ruleeditor;
+
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.WarningPopup;
+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;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.DialogBox;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+/**
+ * This shows a historical read only view of an asset, as a popup.
+ * Why a popup? well, people can drag it around how they want.
+ *
+ * @author Michael Neale
+ */
+public class VersionViewer extends DialogBox {
+
+ private String versionUUID;
+ private String headUUID;
+ private Command refresh;
+
+ public VersionViewer(final MetaData head, String versionUUID, String headUUID, Command refresh) {
+ super(false);
+
+ this.versionUUID = versionUUID;
+ this.headUUID = headUUID;
+ this.refresh = refresh;
+
+ setStyleName( "version-Popup" );
+
+ LoadingPopup.showMessage( "Loading version" );
+
+ RepositoryServiceFactory.getService().loadRuleAsset( versionUUID, new GenericCallback() {
+
+ public void onSuccess(Object data) {
+
+ RuleAsset asset = (RuleAsset) data;
+ asset.metaData.name = head.name;
+
+
+ setText( "Version number [" + asset.metaData.versionNumber + "] of ["
+ + asset.metaData.name + "]");
+
+ FlexTable layout = new FlexTable();
+ FlexCellFormatter formatter = layout.getFlexCellFormatter();
+
+ Button restore = new Button("Restore this version");
+ restore.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ restore(w);
+ }
+
+ });
+ layout.setWidget( 0, 0, restore );
+ formatter.setHorizontalAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT );
+
+ Button close = new Button("Close");
+ close.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ hide();
+ }
+ });
+
+ layout.setWidget( 0, 1, close );
+
+ formatter.setHorizontalAlignment( 0, 1, HasHorizontalAlignment.ALIGN_RIGHT );
+
+ RuleViewer viewer = new RuleViewer(asset, true);
+
+
+ viewer.setWidth( "100%" );
+ layout.setWidget( 1, 0, viewer );
+ formatter.setColSpan( 1, 1, 2 );
+ layout.setWidth( "100%" );
+
+ setWidget(layout);
+ }
+
+ });
+
+
+ }
+
+
+ private void restore(Widget w) {
+
+ final CheckinPopup pop = new CheckinPopup(w.getAbsoluteLeft() + 10,
+ w.getAbsoluteTop() + 10,
+ "Restore this version?");
+ pop.setCommand( new Command() {
+ public void execute() {
+ RepositoryServiceFactory.getService().restoreVersion( versionUUID, headUUID, pop.getCheckinComment(), new GenericCallback() {
+ public void onSuccess(Object data) {
+ hide();
+ refresh.execute();
+ }
+ });
+ }
+ });
+ pop.show();
+ }
+
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/VersionViewer.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -119,8 +119,8 @@
1,
"" );
} else {
- int maxRows = data.numberOfRows;
- if (data.numberOfRows < FILLER_ROWS) {
+ int maxRows = data.data.length;
+ if (maxRows < FILLER_ROWS) {
maxRows = FILLER_ROWS;
}
table = new SortableTable( maxRows,
@@ -150,7 +150,7 @@
HorizontalPanel panel = new HorizontalPanel();
panel.add( refreshIcon );
- panel.add( new Label( " " + data.numberOfRows + " items." ));
+ panel.add( new Label( " " + data.data.length + " items." ));
outer.setWidget( 0,
0,
@@ -159,13 +159,13 @@
//setup the "key" column
table.setHiddenColumn( 0 );
- table.addColumnHeader( "",
+ table.setColumnHeader( "",
0 );
table.setWidth( "100%" );
//add the headers
for ( int i = 0; i < this.tableConfig.headers.length; i++ ) {
- table.addColumnHeader( this.tableConfig.headers[i],
+ table.setColumnHeader( this.tableConfig.headers[i],
i + 1 );
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -62,8 +62,7 @@
/**
* Adds a header, which will be at the zero index in the table.
*/
- public void addColumnHeader(String name, int index){
-
+ public void setColumnHeader(String name, int index){
tableHeader.add(index, name);
this.renderTableHeader(name, index);
}
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-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css 2007-01-24 09:51:01 UTC (rev 9003)
@@ -139,8 +139,18 @@
font-size: smaller;
}
+.version-Popup {
+ background-color: white;
+ border: 1px solid #B8B8B8;
+}
+.version-Popup .Caption {
+ background-color: #B8B8B8;
+ font-color: white;
+ font-weight: bold;
+}
+
.gwt-TabBar {
background-color: #B8B8B8;
font-size: smaller;
@@ -327,6 +337,10 @@
background-color: #FDFCDC;
}
+.version-browser-Border {
+ border: 1px solid #B8B8B8;
+}
+
.dt-editor-Grid {
background-color: #FDFCDC;
border: 1px solid #B8B8B8;
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/asset_version.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/asset_version.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -1,5 +1,6 @@
package org.drools.brms.server;
+import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -10,6 +11,7 @@
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.servlet.http.HttpSession;
import org.drools.brms.client.rpc.MetaData;
@@ -17,6 +19,7 @@
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.brms.client.rpc.TableConfig;
import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
import org.drools.brms.server.util.MetaDataMapper;
import org.drools.brms.server.util.TableDisplayHandler;
import org.drools.repository.AssetItem;
@@ -41,6 +44,7 @@
RepositoryService {
private static final long serialVersionUID = 3150768417428383474L;
+ private static final DateFormat dateFormatter = DateFormat.getInstance();
/**
* The shared repository instance. This could be bound to JNDI eventually.
@@ -204,7 +208,7 @@
RulesRepository repo = getRulesRepository();
AssetItem item = repo.loadAssetByUUID( uuid );
RuleAsset asset = new RuleAsset();
- asset.uuid = item.getUUID();
+ asset.uuid = uuid;
//load standard meta data
@@ -282,9 +286,48 @@
handler.storeAssetContent( asset, repoAsset );
repoAsset.checkin( meta.checkinComment );
+
return repoAsset.getUUID();
}
+
+ public TableDataResult loadAssetHistory(String uuid) throws SerializableException {
+
+ List result = new ArrayList();
+
+ RulesRepository repo = getRulesRepository();
+
+ AssetItem item = repo.loadAssetByUUID( uuid );
+ Iterator versions = item.getPredecessorVersionsIterator();
+ while(versions.hasNext()) {
+
+ TableDataRow row = new TableDataRow();
+ AssetItem historical = (AssetItem) versions.next();
+ row.id = historical.getVersionSnapshotUUID();
+ row.values = new String[4];
+ row.values[0] = historical.getVersionNumber();
+ row.values[1] = historical.getCheckinComment();
+ row.values[2] = dateFormatter.format( historical.getLastModified().getTime() );
+ row.values[3] = historical.getStateDescription();
+ result.add( row );
+ }
+
+ if (result.size() == 0) return null;
+ TableDataResult table = new TableDataResult();
+ table.data = (TableDataRow[]) result.toArray(new TableDataRow[result.size()]);
+
+ return table;
+ }
+
+ public void restoreVersion(String versionUUID,
+ String assetUUID,
+ String comment) {
+ RulesRepository repo = getRulesRepository();
+ repo.restoreHistoricalAsset( repo.loadAssetByUUID( versionUUID ),
+ repo.loadAssetByUUID( assetUUID ),
+ comment );
+
+ }
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRXMLToDRLConverter.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRXMLToDRLConverter.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRXMLToDRLConverter.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -0,0 +1,105 @@
+package org.drools.brms.server.util;
+
+import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.FactPattern;
+import org.drools.brms.client.modeldriven.brxml.IPattern;
+import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
+import org.drools.brms.client.modeldriven.brxml.RuleModel;
+
+/**
+ * This class will convert BRXML to DRL.
+ * It will work off the RuleModel object graph, primarily.
+ *
+ * @author Michael Neale
+ * @written-when-jetlagged-in-hong-kong-oh-how-I-hate-jetlag
+ */
+public class BRXMLToDRLConverter {
+
+ public String toDRL(RuleModel model,
+ String ruleName) {
+ StringBuffer buf = new StringBuffer();
+ buf.append( "rule \"" + ruleName + "\"" );
+
+ render( model.attributes, buf );
+ buf.append( "\n\twhen" );
+ render( model.lhs, buf );
+
+ return buf.toString();
+ }
+
+ private void render(IPattern[] lhs, StringBuffer buf) {
+ for ( int i = 0; i < lhs.length; i++ ) {
+ IPattern cond = lhs[i];
+ if (cond instanceof DSLSentence) {
+ render((DSLSentence) cond, buf);
+ } else if (cond instanceof FactPattern) {
+ render((FactPattern) cond, buf);
+ } else if (cond instanceof CompositeFactPattern) {
+ render((CompositeFactPattern) cond, buf);
+ }
+ }
+
+ }
+
+ private void render(CompositeFactPattern pattern,
+ StringBuffer buf) {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void render(FactPattern pattern,
+ StringBuffer buf) {
+ buf.append( "\n\t\t" );
+
+ if (!nil(pattern.boundName)) {
+ buf.append( pattern.boundName );
+ buf.append( " : " );
+ }
+
+ buf.append( pattern.factType );
+ buf.append( '(' );
+
+
+ }
+
+ private boolean nil(String s) {
+ if (s== null) return false;
+ if (s.equals( "" )) {
+ return false;
+ }
+ return true;
+ }
+
+ private void render(DSLSentence sentence,
+ StringBuffer buf) {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void render(RuleAttribute[] attributes, StringBuffer buf) {
+
+ for ( int i = 0; i < attributes.length; i++ ) {
+ buf.append( "\n\t" );
+ RuleAttribute at = attributes[i];
+ String name = at.attributeName;
+ buf.append( name );
+ buf.append( ' ' );
+
+ if (name.equals( "agenda-group" )
+ || name.equals( "activation-group" )
+ || name.equals( "date-effective" )
+ || name.equals( "date-expires" )) {
+ buf.append( '"' );
+ buf.append( at.value );
+ buf.append( '"' );
+ } else if (name.equals( "no-loop" )) {
+ buf.append( "true" );
+ } else {
+ buf.append( at.value );
+ }
+ }
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRXMLToDRLConverter.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java 2007-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -50,7 +50,6 @@
}
TableDataResult result = new TableDataResult();
result.data = (TableDataRow[]) data.toArray( new TableDataRow[data.size()] );
- result.numberOfRows = data.size();
return result;
}
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-01-24 09:41:16 UTC (rev 9002)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-01-24 09:51:01 UTC (rev 9003)
@@ -110,7 +110,6 @@
impl.createNewRule( "testRuleTableLoad2", "ya", "testRuleTableLoad", "testRuleTableLoad", "rule" );
TableDataResult result = impl.loadRuleListForCategories( "testRuleTableLoad" );
- assertEquals(2, result.numberOfRows);
assertEquals(2, result.data.length);
String key = result.data[0].id;
@@ -173,10 +172,51 @@
asset = impl.loadRuleAsset( uuid );
assertEquals("whee", asset.metaData.state);
+ assertEquals("changed state", asset.metaData.checkinComment);
}
+ public void testLoadAssetHistoryAndRestore() throws Exception {
+ MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
+ impl.repo.createPackage( "testLoadAssetHistory", "desc" );
+ impl.createCategory( "", "testLoadAssetHistory", "this is a cat" );
+
+
+ String uuid = impl.createNewRule( "testLoadAssetHistory", "description", "testLoadAssetHistory", "testLoadAssetHistory", "txt" );
+ RuleAsset asset = impl.loadRuleAsset( uuid );
+ impl.checkinVersion( asset ); //1
+ impl.checkinVersion( asset ); //2
+ impl.checkinVersion( asset ); //HEAD
+
+ TableDataResult result = impl.loadAssetHistory( uuid );
+ assertNotNull(result);
+ TableDataRow[] rows = result.data;
+ assertEquals(2, rows.length);
+ assertFalse(rows[0].id.equals( uuid ));
+ assertFalse(rows[1].id.equals( uuid ));
+
+ RuleAsset old = impl.loadRuleAsset( rows[0].id );
+ RuleAsset newer = impl.loadRuleAsset( rows[1].id );
+ assertFalse(old.metaData.versionNumber.equals( newer.metaData.versionNumber ));
+
+ RuleAsset head = impl.loadRuleAsset( uuid );
+
+ String oldVersion = old.metaData.versionNumber;
+ assertFalse(oldVersion.equals( head.metaData.versionNumber ));
+
+ impl.restoreVersion( old.uuid, head.uuid, "this was cause of a mistake" );
+
+ RuleAsset newHead = impl.loadRuleAsset( uuid );
+
+
+ assertEquals("this was cause of a mistake", newHead.metaData.checkinComment);
+
+
+ }
+
+
+
public void testCheckin() throws Exception {
MockJBRMSServiceServlet serv = new MockJBRMSServiceServlet();
More information about the jboss-svn-commits
mailing list