[jboss-svn-commits] JBL Code SVN: r6144 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client main/java/org/drools/brms/client/breditor main/java/org/drools/brms/client/rulenav main/java/org/drools/brms/public main/java/org/drools/brms/server test/java/org/drools/brms test/java/org/drools/brms/server

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 11 11:58:12 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-09-11 11:58:00 -0400 (Mon, 11 Sep 2006)
New Revision: 6144

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulenav/RulesNavigatorTree.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/public/JBRMS.html
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
Log:
end to end now working

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -0,0 +1,62 @@
+package org.drools.brms.client;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+
+/** Generic error dialog popup */
+public class ErrorPopup extends PopupPanel {
+    
+    public static ErrorPopup instance = null;
+    
+    Label errorMessage = new Label();
+    Panel panel = new HorizontalPanel();
+    Button ok = new Button("OK");
+    
+    public ErrorPopup() {        
+        super(true);
+        panel.add( errorMessage );
+        panel.add( ok );
+        final PopupPanel self = this;
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget arg0) {                
+                self.hide();
+            }            
+        });
+        this.add( panel );
+        this.setPopupPosition( 0, 0 );
+        setStyleName( "rule-error-Popup" );        
+    }
+    
+    public void setMessage(String message) {
+        errorMessage.setText( message );        
+    }
+    
+    public void hide() {
+        errorMessage.setText( "" );
+        super.hide();
+    }
+    
+    public static ErrorPopup getInstance() {
+        if (instance == null) {
+            instance = new ErrorPopup();
+        }
+        return instance;
+    }
+    
+    /** Convenience method to popup the message. */
+    public static void showMessage(String message) {
+        ErrorPopup p = getInstance();
+        p.errorMessage.setText( message );
+        p.show();
+    }
+    
+     
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -15,124 +15,91 @@
  */
 package org.drools.brms.client;
 
+import org.drools.brms.client.breditor.BREditor;
+import org.drools.brms.client.breditor.EditableLine;
+
 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.DockPanel;
-import com.google.gwt.user.client.ui.Frame;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.PopupPanel;
 import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
 
 /**
  * Demonstrates {@link com.google.gwt.user.client.ui.PopupPanel} and
  * {@link com.google.gwt.user.client.ui.DialogBox}.
  */
-public class Packages extends JBRMSFeature implements ClickListener {
+public class Packages extends JBRMSFeature
+    implements
+    ClickListener {
 
-  /**
-   * A simple dialog box that displays a message, a Frame, and a close button.
-   */
-  private static class MyDialog extends DialogBox implements ClickListener {
-    public MyDialog() {
-      setText("Sample DialogBox with embedded Frame");
+    /**
+     * A very simple popup that closes automatically when you click off of it.
+     */
+    private static class MyPopup extends PopupPanel {
+        public MyPopup() {
+            super( true );
 
-      Frame iframe = new Frame("rembrandt/LaMarcheNocturne.html");
-      Button closeButton = new Button("Close", this);
-      HTML msg = new HTML(
-        "<center>This is an example of a standard dialog box component.<br>  "
-          + "You can put pretty much anything you like into it,<br>such as the "
-          + "following IFRAME:</center>", true);
+            ListBox list = new ListBox();
+            list.addItem( "There is a person {bob} who is blah" );
+            list.addItem( "There is a cheese {bob} who is {type}" );
+            list.addItem( "- age is less then {number}" );
+            list.addItem( "- likes doing '{number}'" );
 
-      DockPanel dock = new DockPanel();
-      dock.setSpacing(4);
+            HTML contents = new HTML( "Click anywhere outside this popup to make it disappear." );
+            contents.setWidth( "128px" );
 
-      dock.add(closeButton, DockPanel.SOUTH);
-      dock.add(msg, DockPanel.NORTH);
-      dock.add(iframe, DockPanel.CENTER);
-
-      dock.setCellHorizontalAlignment(closeButton, DockPanel.ALIGN_RIGHT);
-      dock.setCellWidth(iframe, "100%");
-      dock.setWidth("100%");
-      iframe.setWidth("36em");
-      iframe.setHeight("20em");
-      add(dock);
+            //add(contents);
+            add( list );
+            //add(new Label("this is a label"));      
+            setStyleName( "ks-popups-Popup" );
+        }
     }
 
-    public void onClick(Widget sender) {
-      hide();
+    public static ComponentInfo init() {
+        return new ComponentInfo( "Packages",
+                                  "This is where you configure packages of rules." + "You select rules to belong to packages, and what version they are. A rule can "
+                                          + "appear in more then one package, and possibly even different versions of the rule." ) {
+            public JBRMSFeature createInstance() {
+                return new Packages();
+            }
+
+            public Image getImage() {
+                return new Image( "images/package.gif" );
+            }
+        };
     }
-  }
 
-  /**
-   * A very simple popup that closes automatically when you click off of it.
-   */
-  private static class MyPopup extends PopupPanel {
-    public MyPopup() {
-      super(true);
+    private Button fPopupButton = new Button( "Show Popup",
+                                              this );
 
-      HTML contents = new HTML(
-        "Click anywhere outside this popup to make it disappear.");
-      contents.setWidth("128px");
-      add(contents);
-
-      setStyleName("ks-popups-Popup");
+    public Packages() {
+        VerticalPanel panel = new VerticalPanel();
+        panel.add( fPopupButton );
+        panel.add( new BREditor() );
+        
+        EditableLine line = new EditableLine();
+        line.makeEditable();
+        line.makeReadOnly();
+        panel.add( line );
+        
+        panel.setSpacing( 8 );
+        initWidget( panel );
     }
-  }
 
-  public static ComponentInfo init() {
-    return new ComponentInfo(
-      "Packages",
-      "This is where you configure packages of rules." +
-      "You select rules to belong to packages, and what version they are. A rule can " +
-      "appear in more then one package, and possibly even different versions of the rule.") {
-      public JBRMSFeature createInstance() {
-        return new Packages();
-      }
-
-	public Image getImage() { 
-		return new Image("images/package.gif");
-	}
-    };
-  }
-
-  private Button fDialogButton = new Button("Show Dialog", this);
-  private Button fPopupButton = new Button("Show Popup", this);
-
-  public Packages() {
-    VerticalPanel panel = new VerticalPanel();
-    panel.add(fPopupButton);
-    panel.add(fDialogButton);
-
-    ListBox list = new ListBox();
-    list.setVisibleItemCount(5);
-    for (int i = 0; i < 10; ++i)
-      list.addItem("list item " + i);
-    panel.add(list);
-
-    panel.setSpacing(8);
-    setWidget(panel);
-  }
-
-  public void onClick(Widget sender) {
-    if (sender == fPopupButton) {
-      MyPopup p = new MyPopup();
-      int left = sender.getAbsoluteLeft() + 10;
-      int top = sender.getAbsoluteTop() + 10;
-      p.setPopupPosition(left, top);
-      p.show();
-    } else if (sender == fDialogButton) {
-      DialogBox dlg = new MyDialog();
-      int left = fDialogButton.getAbsoluteLeft() + 10;
-      int top = fDialogButton.getAbsoluteTop() + 10;
-      dlg.setPopupPosition(left, top);
-      dlg.show();
+    public void onClick(Widget sender) {
+        if ( sender == fPopupButton ) {
+            MyPopup p = new MyPopup();
+            int left = sender.getAbsoluteLeft() + 10;
+            int top = sender.getAbsoluteTop() + 10;
+            p.setPopupPosition( left,
+                                top );
+            p.show();
+        }
     }
-  }
 
-  public void onShow() {
-  }
+    public void onShow() {
+    }
 }

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -0,0 +1,129 @@
+package org.drools.brms.client.breditor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class BREditor extends Composite {
+
+    final int DESC_COLUMN = 0;
+    final int CONTENT_COLUMN = 1;
+    final int ACTION_COLUMN = 2;
+    
+    
+    private Panel panel;
+    private List lhs = new ArrayList();
+    private List rhs = new ArrayList();
+    private FlexTable table = null;
+    
+    public BREditor() {
+        
+        panel = new VerticalPanel();
+        
+        initData();
+        populateTable();
+        
+        initWidget( panel );
+    }
+
+    /** This will populate and refresh the table */
+    private void populateTable() {
+        refreshTableOnPanel();
+        table.setText( 0, DESC_COLUMN, "IF" );
+        
+        final ChoiceList listPopup = new ChoiceList(new ClickListener() {
+            public void onClick(Widget popup) {
+                //need up add to the LHS list
+                ChoiceList c = (ChoiceList) popup;
+                lhs.add( new Label(c.getSelectedItem()) );
+                populateTable();
+            }            
+        });
+        
+        Button addLhs = new Button("+");
+        addLhs.addClickListener( new ClickListener() {
+            public void onClick(Widget sender) {
+                
+                
+                int left = sender.getAbsoluteLeft() + 10;
+                int top = sender.getAbsoluteTop() + 10;
+                listPopup.setPopupPosition( left,
+                                    top );
+                listPopup.show();                
+            }            
+        });
+        
+        table.setWidget( 0, ACTION_COLUMN, addLhs );
+        
+        int rowOffset = 1;
+        
+        //setup LHS
+        populateContent( 
+                         rowOffset, lhs );
+        
+        rowOffset = lhs.size() + 1;
+        
+        table.setText( rowOffset, DESC_COLUMN, "THEN" );
+        
+       
+        table.setWidget( rowOffset, ACTION_COLUMN, new Button("+") );
+        
+        rowOffset++;
+        
+        //setup RHS
+        populateContent( rowOffset, rhs );
+        
+//        //setup RHS
+//        for ( int i = 0; i < rhs.size(); i++ ) {
+//            Widget w = (Widget) rhs.get( 0 );
+//            table.setWidget( i+rowOffset, CONTENT_COLUMN, w );
+//        }
+
+    }
+
+    private void populateContent(int rowOffset, final List dataList) {
+        final BREditor editor = this;
+        for ( int i = 0; i < dataList.size(); i++ ) {
+            Widget w = (Widget) dataList.get( i );
+            int row = i + rowOffset;
+            table.setWidget( row, CONTENT_COLUMN, w );
+            Button removeButton = new Button("-");
+            final int idx = i;
+            removeButton.addClickListener( new ClickListener() {
+
+                public void onClick(Widget but) {
+                    dataList.remove( idx );
+                    editor.populateTable();
+                }
+                
+            });            
+            table.setWidget( row, ACTION_COLUMN, removeButton );
+        }
+    }
+
+    private void refreshTableOnPanel() {
+        //remove old if refreshing
+        if (table != null) {
+            panel.remove( table );
+        }
+        
+        //now add the new
+        table = new FlexTable();
+        panel.add( table );
+    }
+
+    private void initData() {
+        lhs.add( new Label("Hello this is {foo}"));
+        lhs.add( new Label("Hello this is {foo}"));
+        rhs.add(new Label("panic all is lost") );
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -0,0 +1,53 @@
+package org.drools.brms.client.breditor;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class ChoiceList extends PopupPanel {
+
+    private ListBox list;    
+    private ClickListener okClickListener;
+    
+    public ChoiceList(ClickListener okClickListener) {
+        super( true );
+        
+        this.okClickListener = okClickListener;
+        
+        list = new ListBox();
+        list.setVisibleItemCount( 5 );
+        list.addItem( "There is a person {bob} who is blah" );
+        list.addItem( "There is a cheese {bob} who is {type}" );
+        list.addItem( "- age is less then {number}" );
+        list.addItem( "- likes doing '{number}'" );
+        
+        VerticalPanel panel = new VerticalPanel();
+        panel.add( list );
+        
+        Button ok = new Button("ok");
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget btn) {                
+                onOkClicked();
+            }
+            
+        });
+        panel.add( ok );        
+        add( panel );      
+        setStyleName( "ks-popups-Popup" );
+        
+    }
+    
+    private void onOkClicked() {        
+        this.okClickListener.onClick( this );
+        this.hide();
+    }
+    
+    public String getSelectedItem() {
+        return list.getItemText( list.getSelectedIndex() );
+    }
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -0,0 +1,70 @@
+package org.drools.brms.client.breditor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+public class EditableLine extends Composite {
+
+    private Panel panel;
+    private List widgets = new ArrayList();
+    
+    
+    public EditableLine() {
+        widgets.add( new Label("The persons name is ") );
+        TextBox box = new TextBox();
+        box.setVisibleLength( 4 );
+        
+        widgets.add( box );
+        
+        panel = new HorizontalPanel();
+        initWidget( panel );        
+    }
+    
+    public void makeReadOnly() {
+        panel.clear();
+        for ( Iterator iter = widgets.iterator(); iter.hasNext(); ) {
+            Widget element = (Widget) iter.next();
+            if (element instanceof Label) {                
+                panel.add( element );
+            } else if (element instanceof TextBox) {
+                TextBox box = (TextBox) element;
+                panel.add( new Label(box.getText()) );
+            }
+        }
+    }
+    
+    public void makeEditable() {
+        panel.clear();
+        for ( Iterator iter = widgets.iterator(); iter.hasNext(); ) {
+            Widget element = (Widget) iter.next();
+            panel.add( element );
+        }        
+    }
+    
+    /**
+     * Returns the content.
+     */
+    public String toString() {
+        String result = "";
+        for ( Iterator iter = widgets.iterator(); iter.hasNext(); ) {
+            Widget element = (Widget) iter.next();
+            if (element instanceof Label) {
+                result = result + ((Label) element).getText();
+            } else {
+                result = result + ((TextBox) element).getText();
+            }            
+        }
+        return result;
+    }
+    
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulenav/RulesNavigatorTree.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulenav/RulesNavigatorTree.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulenav/RulesNavigatorTree.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -15,6 +15,7 @@
  */
 package org.drools.brms.client.rulenav;
 
+import org.drools.brms.client.ErrorPopup;
 import org.drools.brms.client.rpc.RepositoryServiceAsync;
 import org.drools.brms.client.rpc.RepositoryServiceFactory;
 
@@ -51,7 +52,11 @@
                                      new AsyncCallback() {
 
                                          public void onFailure(Throwable caught) {
-                                             //TODO: work out how to handle it.
+                                             ErrorPopup popup = ErrorPopup.getInstance();
+                                             popup.setMessage( "Unable to load categories" );
+                                             popup.setPopupPosition( 0, 0 );
+                                             popup.show();
+                                             
                                          }
 
                                          public void onSuccess(Object result) {

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	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-09-11 15:58:00 UTC (rev 6144)
@@ -239,6 +239,13 @@
   padding: 4px;
 }
 
+.rule-error-Popup {
+  background-color: red;
+  border: 1px solid #87B3FF;
+  padding: 4px;
+}
+
+
 .rule-ListHeader {
 	background-image: url(images/gray_gradient.gif);
 	background-repeat: repeat-x;

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html	2006-09-11 15:58:00 UTC (rev 6144)
@@ -3,6 +3,8 @@
 		<meta name='gwt:module' content='org.drools.brms.JBRMS'>		
 		<link rel='stylesheet' href='JBRMS.css'>
 		<title>JBoss Business Rules Management System</title>
+	    <link rel="shortcut icon" href="images/drools.gif" type="image/gif">
+	    <link rel="icon" href="images/drools.gif" type="image/gif">		
 	</head>
 	<body> 			
 		<img src="images/drools_logo.png" />		

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	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -1,7 +1,18 @@
 package org.drools.brms.server;
 
+import java.util.List;
+
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.servlet.http.HttpSession;
+
 import org.drools.brms.client.rpc.RepositoryService;
 import org.drools.brms.client.rpc.TableConfig;
+import org.drools.repository.CategoryItem;
+import org.drools.repository.RepositoryConfigurator;
+import org.drools.repository.RulesRepository;
 
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
@@ -12,42 +23,111 @@
     private static final long serialVersionUID = 3150768417428383474L;
 
     public String[] loadChildCategories(String categoryPath) {
-        log("loadChildCategories", "loading cat path: " + categoryPath);
-        sleep( 500 );
-        return new String[] { "Cat 1", "Cat 2", "Cat 3"};
+        RulesRepository repo = this.getRepositoryFrom( getSession() );
+        CategoryItem item = repo.getOrCreateCategory( categoryPath );
+        List children = item.getChildTags();
+
+        String[] list = new String[children.size()];
+
+        for ( int i = 0; i < list.length; i++ ) {
+            list[i] = ((CategoryItem) children.get( i )).getName();
+        }
+
+        log( "loadChildCategories",
+             "loading cat path: " + categoryPath );
+        return list;
     }
 
     public String[][] loadRuleListForCategories(String categoryPath,
                                                 String status) {
-        log("loading rule list", "for cat path: " + categoryPath);
-        String[][] data = { { "Rule 1", "Production", "mark", "2" },
-                            { "Rule 2", "Production", "mark", "2" },
-                            { "Rule 3", "Production", "mark", "2" }};
+        log( "loading rule list",
+             "for cat path: " + categoryPath );
+        String[][] data = {{"Rule 1", "Production", "mark", "2"}, {"Rule 2", "Production", "mark", "2"}, {"Rule 3", "Production", "mark", "2"}};
         return data;
     }
 
     public TableConfig loadTableConfig(String listName) {
-        log("loading table config", listName);
-        sleep(300);        
+        log( "loading table config",
+             listName );
+        sleep( 300 );
         final TableConfig config = new TableConfig();
 
-                config.headers = new String[] {"name", "status", "last updated by", "version"};
-                config.rowsPerPage = 30;
+        config.headers = new String[]{"name", "status", "last updated by", "version"};
+        config.rowsPerPage = 30;
         return config;
     }
 
-    private void sleep(int ms)  {
+    private void sleep(int ms) {
         try {
             Thread.sleep( ms );
-        } catch ( InterruptedException e ) {           
+        } catch ( InterruptedException e ) {
             e.printStackTrace();
         }
     }
-    
+
     private void log(String serviceName,
                      String message) {
-        System.out.println("[" + serviceName + "] " + message);
+        System.out.println( "[" + serviceName + "] " + message );
     }
+
+    private HttpSession getSession() {
+        return this.getThreadLocalRequest().getSession();
+    }
+
+    RulesRepository getRepositoryFrom(HttpSession session) {
+        Object obj = session.getAttribute( "drools.repository" );
+        if ( obj == null ) {
+            obj = createNewSession();
+            session.setAttribute( "drools.repository",
+                                  obj );
+        }
+        return (RulesRepository) obj;
+    }
+
+    /** Initialse the repository, set it up if it is brand new */
+    private RulesRepository createNewSession() {
+        
+        RepositoryConfigurator config = new RepositoryConfigurator();
+
+        try {
+            
+            Session session;
+            if (repository == null) {
+                long start = System.currentTimeMillis();
+                session = initialiseRepo( config );
+                System.out.println("initialise repo time: " + (System.currentTimeMillis() - start));
+            }  else {
+                long start = System.currentTimeMillis();
+                session = config.login( repository );
+                System.out.println("login repo time: " + (System.currentTimeMillis() - start));
+                
+            }
+            
+            return new RulesRepository( session );
+        } catch ( LoginException e ) {
+            throw new RuntimeException( e );
+        } catch ( RepositoryException e ) {
+            throw new RuntimeException( "Unable to get a repository: " + e.getMessage() );
+        }
+    }
     
+    
 
+    /** This will create a new repository instance (should only happen once after startup) */
+    private Session initialiseRepo(RepositoryConfigurator config) throws LoginException,
+                                                                 RepositoryException {
+        Session session;
+        repository = config.createRepository();
+        
+        session = config.login( repository );
+        
+        
+        config.setupRulesRepository( session );
+        return session;
+    }
+    
+    public static Repository repository;
+
+
+
 }

Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java	2006-09-11 15:47:48 UTC (rev 6143)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java	2006-09-11 15:58:00 UTC (rev 6144)
@@ -0,0 +1,109 @@
+package org.drools.brms.server;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionContext;
+
+import org.drools.repository.RulesRepository;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public class JBRMSServiceServletTest extends TestCase {
+
+    public void testInit() throws Exception {
+        JBRMSServiceServlet serv = new JBRMSServiceServlet();
+        MockHttpSession session = new MockHttpSession();
+        RulesRepository repo = serv.getRepositoryFrom( session );
+        assertTrue(session.sessionData.containsKey( "drools.repository" ));
+        assertEquals(repo, session.getAttribute( "drools.repository" ));
+        
+        RulesRepository repo2 = serv.getRepositoryFrom( session );
+        assertSame(repo, repo2);
+        
+        
+    }
+    
+    
+    static class MockHttpSession implements HttpSession {
+
+        public Map sessionData = new HashMap();
+        
+        public Object getAttribute(String arg0) {
+            
+            return sessionData.get( arg0 );
+        }
+
+        public Enumeration getAttributeNames() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public long getCreationTime() {
+            return 0;
+        }
+
+        public String getId() {
+            return null;
+        }
+
+        public long getLastAccessedTime() {
+            return 0;
+        }
+
+        public int getMaxInactiveInterval() {
+            return 0;
+        }
+
+        public ServletContext getServletContext() {
+            return null;
+        }
+
+        public HttpSessionContext getSessionContext() {
+            return null;
+        }
+
+        public Object getValue(String arg0) {
+            return null;
+        }
+
+        public String[] getValueNames() {
+            return null;
+        }
+
+        public void invalidate() {
+        }
+
+        public boolean isNew() {
+            return false;
+        }
+
+        public void putValue(String arg0,
+                             Object arg1) {
+            Assert.fail("DO NOT USE THIS METHOD !");
+            
+        }
+
+        public void removeAttribute(String arg0) {
+            this.sessionData.remove( arg0 );
+        }
+
+        public void removeValue(String arg0) {
+        }
+
+        public void setAttribute(String arg0,
+                                 Object arg1) {
+            sessionData.put( arg0, arg1 );
+        }
+
+        public void setMaxInactiveInterval(int arg0) {
+            
+            
+        }
+        
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list