[jboss-svn-commits] JBL Code SVN: r9485 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/packages and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Feb 14 03:02:06 EST 2007
Author: michael.neale at jboss.com
Date: 2007-02-14 03:02:05 -0500 (Wed, 14 Feb 2007)
New Revision: 9485
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.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/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/RuleViewer.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/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
JBRULES-624 Status changing now working
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -0,0 +1,105 @@
+package org.drools.brms.client.common;
+
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.DialogBox;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * Well this one should be pretty obvious what it does.
+ * I feel like I have wasted valuable time writing this comment, but I hope
+ * you enjoyed reading it.
+ *
+ * @author Michael Neale
+ *
+ */
+public class StatusChangePopup extends DialogBox {
+
+ private boolean isPackage;
+ private String uuid;
+ private String newStatus;
+ private Command changedStatus;
+
+ public StatusChangePopup(String uuid, boolean isPackage) {
+ super();
+
+ this.uuid = uuid;
+ this.isPackage = isPackage;
+
+ setHTML( "<img src='images/status_small.gif'/><b>Change status</b>" );
+ HorizontalPanel horiz = new HorizontalPanel();
+ final ListBox box = new ListBox();
+
+ LoadingPopup.showMessage( "Please wait..." );
+ RepositoryServiceFactory.getService().listStates( new GenericCallback() {
+ public void onSuccess(Object data) {
+ String[] list = (String[]) data;
+ for ( int i = 0; i < list.length; i++ ) {
+ box.addItem( list[i] );
+ }
+ LoadingPopup.close();
+ }
+ });
+
+ box.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ newStatus = box.getItemText( box.getSelectedIndex() );
+ }
+ });
+
+ horiz.add(box);
+ Button ok = new Button("Change status");
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ String newState = box.getItemText( box.getSelectedIndex() );
+ changeState(newState);
+ hide();
+ }
+ });
+ horiz.add( ok );
+
+
+ Button close = new Button("Cancel");
+ close.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ hide();
+ }
+ });
+ horiz.add( close );
+
+
+
+ setWidget( horiz );
+ }
+
+ /** Apply the state change */
+ private void changeState(String newState) {
+ LoadingPopup.showMessage( "Updating status..." );
+ RepositoryServiceFactory.getService().changeState( uuid, newStatus, isPackage, new GenericCallback() {
+ public void onSuccess(Object data) {
+ changedStatus.execute();
+ LoadingPopup.close();
+ }
+ });
+ }
+
+ /**
+ * Get what the state was changed to.
+ */
+ public String getState() {
+ return this.newStatus;
+ }
+
+ /**
+ * set the status change event
+ */
+ public void setChangeStatusEvent(Command command) {
+ this.changedStatus = command;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java 2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -4,9 +4,11 @@
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.StatusChangePopup;
import org.drools.brms.client.rpc.PackageConfigData;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
+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.ChangeListener;
@@ -29,6 +31,7 @@
public class PackageEditor extends FormStyleLayout {
private PackageConfigData conf;
+ private HTML status;
public PackageEditor(PackageConfigData data) {
this.conf = data;
@@ -48,12 +51,49 @@
addAttribute( "Description:", description() );
addAttribute( "Header:", header() );
addAttribute( "External URI:", externalURI() );
+ addRow(new HTML("<hr/>"));
addAttribute( "Last modified on:", new Label(this.conf.lastModified.toLocaleString()) );
addAttribute( "Last modified by:", new Label(this.conf.lasContributor));
addRow(new HTML("<hr/>"));
+
+ status = new HTML();
+ HorizontalPanel statusBar = new HorizontalPanel();
+ Image editState = new Image("images/edit.gif");
+ editState.setTitle( "Change status." );
+ editState.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showStatusChanger(w);
+ }
+
+
+ } );
+ statusBar.add( status );
+
+ statusBar.add( editState );
+
+ setState(conf.state);
+ addAttribute("Status:", statusBar);
+
addRow( saveChangeWidget() );
}
+ protected void showStatusChanger(Widget w) {
+ final StatusChangePopup pop = new StatusChangePopup(conf.uuid, true);
+ pop.setChangeStatusEvent(new Command() {
+ public void execute() {
+ setState( pop.getState() );
+ }
+ });
+ pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+ pop.show();
+
+ }
+
+ private void setState(String state) {
+ status.setHTML( "<b>" + state + "</b>" );
+
+ }
+
private Widget saveChangeWidget() {
Button save = new Button("Save configuration changes");
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.java 2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -20,6 +20,7 @@
public String description;
public Date lastModified;
public String lasContributor;
+ public String state;
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -113,4 +113,13 @@
*/
public String createState(String name) throws SerializableException;
+
+ /**
+ * This will change the state of an asset or package.
+ * @param uuid The UUID of the asset we are tweaking.
+ * @param newState The new state to set. It must be valid in the repo.
+ * @param wholePackage true if it is a package we are setting the state of.
+ * If this is true, UUID must be the status of a package, if false, it must be an asset.
+ */
+ public void changeState(String uuid, String newState, boolean wholePackage);
}
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -32,4 +32,5 @@
public void listAssetsByFormat(java.lang.String p0, java.lang.String p1, int p2, int p3, AsyncCallback cb);
public void listStates(AsyncCallback cb);
public void createState(java.lang.String p0, AsyncCallback cb);
+ public void changeState(java.lang.String p0, java.lang.String p1, boolean p2, AsyncCallback cb);
}
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -395,6 +395,16 @@
cb.onSuccess( new String[0] );
}
+
+
+
+ public void changeState(String p0,
+ String p1,
+ boolean 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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -1,12 +1,12 @@
package org.drools.brms.client.ruleeditor;
import org.drools.brms.client.common.FormStylePopup;
-import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.StatusChangePopup;
import org.drools.brms.client.rpc.MetaData;
+import org.drools.brms.client.rpc.RuleAsset;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
@@ -15,8 +15,6 @@
import com.google.gwt.user.client.ui.HasVerticalAlignment;
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.TextArea;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
@@ -32,20 +30,27 @@
private MetaData metaData;
private Command checkin;
+ private String uuid;
+ private HTML state;
- public ActionToolbar(final MetaData meta,
+ public ActionToolbar(final RuleAsset asset,
+
final Command checkin,
final Command minimiseMaximise,
boolean readOnly) {
- this.metaData = meta;
+ this.metaData = asset.metaData;
this.checkin = checkin;
+ this.uuid = asset.uuid;
+ this.state = new HTML();
String status = metaData.state;
FlexCellFormatter formatter = layout.getFlexCellFormatter();
HorizontalPanel saveControls = new HorizontalPanel();
- HTML state = new HTML("<b>Status: <i>[" + status + "]</i></b>");
+ setState(status);
+
+
saveControls.add( state );
if (!readOnly) {
@@ -59,11 +64,25 @@
setWidth( "100%" );
}
+ /**
+ * Sets the visible status display.
+ */
+ private void setState(String status) {
+ state.setHTML( "Status: <b>[" + status + "]</b>");
+ }
+
private void controls(final Command minimiseMaximise,
FlexCellFormatter formatter,
HorizontalPanel saveControls) {
Image editState = new Image("images/edit.gif");
- editState.setTitle( "Change state (NOT IMPLEMENTED YET)." );
+ editState.setTitle( "Change status." );
+ editState.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showStatusChanger(w);
+ }
+
+
+ } );
saveControls.add( editState );
@@ -130,37 +149,25 @@
});
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();
+
}
-// private void bindCommentField(final TextArea comment) {
-// comment.addChangeListener( new ChangeListener() {
-// public void onChange(Widget w) {
-// metaData.checkinComment = comment.getText();
-// }
-// });
-// }
+
+
+ /**
+ * Show the stats change popup.
+ */
+ private void showStatusChanger(Widget w) {
+ final StatusChangePopup pop = new StatusChangePopup(uuid, false);
+ pop.setChangeStatusEvent(new Command() {
+ public void execute() {
+ setState( pop.getState() );
+ }
+ });
+ pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+ pop.show();
+ }
/**
* Called when user wants to close, but there is "dirtyness".
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -1,8 +1,7 @@
package org.drools.brms.client.ruleeditor;
-import org.drools.brms.client.common.LoadingPopup;
import org.drools.brms.client.common.ErrorPopup;
-import org.drools.brms.client.common.WarningPopup;
+import org.drools.brms.client.common.LoadingPopup;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.RuleAsset;
@@ -84,7 +83,7 @@
"40%" );
//and now the action widgets (checkin/close etc).
- ActionToolbar toolbar = new ActionToolbar( asset.metaData,
+ ActionToolbar toolbar = new ActionToolbar( asset,
new Command() {
public void execute() {
doCheckin();
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css 2007-02-14 08:02:05 UTC (rev 9485)
@@ -315,7 +315,7 @@
}
.metadata-Widget {
- border: 1px solid #B8B8B8;
+ //border: 1px solid #B8B8B8;
}
.rule-error-Popup {
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -12,9 +12,6 @@
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.version.Version;
-import javax.jcr.version.VersionIterator;
import javax.servlet.http.HttpSession;
import org.drools.brms.client.common.AssetFormats;
@@ -405,6 +402,7 @@
data.name = item.getName();
data.lastModified = item.getLastModified().getTime();
data.lasContributor = item.getLastContributor();
+ data.state = item.getStateDescription();
return data;
@@ -453,6 +451,24 @@
}
return result;
}
+
+ public void changeState(String uuid,
+ String newState,
+ boolean wholePackage) {
+ RulesRepository repo = getRulesRepository();
+ if (!wholePackage) {
+ AssetItem asset = repo.loadAssetByUUID( uuid );
+ asset.updateState( newState );
+ repo.save();
+ } else {
+ PackageItem pkg = repo.loadPackageByUUID( uuid );
+ pkg.changeStatus(newState);
+ repo.save();
+ }
+
+
+
+ }
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-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-02-14 08:02:05 UTC (rev 9485)
@@ -18,6 +18,7 @@
import org.drools.repository.AssetItemIterator;
import org.drools.repository.CategoryItem;
import org.drools.repository.PackageItem;
+import org.drools.repository.StateItem;
import com.google.gwt.user.client.rpc.SerializableException;
@@ -367,6 +368,7 @@
}
+
public void testStatus() throws Exception {
MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
String uuid = impl.createState( "testStatus1" );
@@ -390,8 +392,33 @@
assertEquals(2, match);
+
+ String packagUUID = impl.createPackage( "testStatus", "description" );
+ String ruleUUID = impl.createNewRule( "testStatus", "desc", null, "testStatus", "drl" );
+ String ruleUUID2 = impl.createNewRule( "testStatus2", "desc", null, "testStatus", "drl" );
+ impl.createState( "testState" );
+ RuleAsset asset = impl.loadRuleAsset( ruleUUID );
+ assertEquals(StateItem.DRAFT_STATE_NAME, asset.metaData.state);
+ impl.changeState( ruleUUID, "testState", false );
+ asset = impl.loadRuleAsset( ruleUUID );
+ assertEquals("testState", asset.metaData.state);
+ asset = impl.loadRuleAsset( ruleUUID2 );
+ assertEquals( StateItem.DRAFT_STATE_NAME, asset.metaData.state);
+
+
+
+ impl.createState( "testState2" );
+ impl.changeState( packagUUID, "testState2", true );
+
+ PackageConfigData pkg = impl.loadPackage( "testStatus" );
+ assertEquals("testState2", pkg.state);
+
+ asset = impl.loadRuleAsset( ruleUUID2 );
+ assertEquals("testState2", asset.metaData.state);
+
}
+
}
More information about the jboss-svn-commits
mailing list