[jboss-svn-commits] JBL Code SVN: r5846 - labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Aug 13 18:03:59 EDT 2006


Author: KrisVerlaenen
Date: 2006-08-13 18:03:56 -0400 (Sun, 13 Aug 2006)
New Revision: 5846

Added:
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/DecisionTableLauncherSample.java.template
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizardPage.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/Sample.xls.template
Modified:
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java
Log:
JBRULES-301: The new rule project template should have a page for selecting what to create in the new project
 - added extra page to project wizard
 - added HelloWorld decision table example

Added: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/DecisionTableLauncherSample.java.template
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/DecisionTableLauncherSample.java.template	2006-08-13 22:03:20 UTC (rev 5845)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/DecisionTableLauncherSample.java.template	2006-08-13 22:03:56 UTC (rev 5846)
@@ -0,0 +1,93 @@
+package com.sample;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.StringReader;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.decisiontable.InputType;
+import org.drools.decisiontable.SpreadsheetCompiler;
+import org.drools.rule.Package;
+
+public class DecisionTableTest extends TestCase {
+
+    public static final void main(String[] args) {
+        try {
+        	
+        	//load up the rulebase
+            RuleBase ruleBase = readDecisionTable();
+            WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+            
+            //go !
+            Message message = new Message();
+            message.setMessage(  "Hello World" );
+            message.setStatus( Message.HELLO );
+            workingMemory.assertObject( message );
+            workingMemory.fireAllRules();   
+            
+            
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    /**
+     * Please note that this is the "low level" rule assembly API.
+     */
+	private static RuleBase readDecisionTable() throws Exception {
+		//read in the source
+        final SpreadsheetCompiler converter = new SpreadsheetCompiler();
+        final String drl = converter.compile( "/Sample.xls", InputType.XLS );
+		PackageBuilder builder = new PackageBuilder();
+		builder.addPackageFromDrl( new StringReader( drl ) );
+		Package pkg = builder.getPackage();
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage( pkg );
+		return ruleBase;
+	}
+
+	public static class Message {
+		public static final int HELLO = 0;
+		public static final int GOODBYE = 1;
+		
+		private String message;
+		
+		private int status;
+		
+		public String getMessage() {
+			return this.message;
+		}
+		
+		public void setMessage(String message) {
+			this.message = message;
+		}
+		
+		public int getStatus() {
+			return this.status;
+		}
+		
+		public void setStatus( int status ) {
+			this.status = status;
+		}
+	}
+    
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java	2006-08-13 22:03:20 UTC (rev 5845)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java	2006-08-13 22:03:56 UTC (rev 5846)
@@ -52,13 +52,16 @@
     private static final String JBOSS_RULES_NAME = "JBoss Rules";
     private IProject newProject;
     private WizardNewProjectCreationPage mainPage;
+    private NewDroolsProjectWizardPage extraPage;
     
     public void addPages() {
         super.addPages();
         mainPage = new WizardNewProjectCreationPage("basicNewProjectPage");
-        mainPage.setTitle("New Drools Project");
-        mainPage.setDescription("Create a new Drools Project");
+        mainPage.setTitle("New JBoss Rules Project");
+        mainPage.setDescription("Create a new JBoss Rules Project");
         this.addPage(mainPage);
+        extraPage = new NewDroolsProjectWizardPage();
+        addPage(extraPage);
         setNeedsProgressMonitor(true);
     }
 
@@ -251,12 +254,26 @@
 
     private void createInitialContent(IJavaProject project, IProgressMonitor monitor)
             throws CoreException, JavaModelException, IOException {
-		createRuleSampleLauncher(project);
-		createRule(project, monitor);
+    	try {
+	    	if (extraPage.createJavaRuleFile()) {
+	    		createRuleSampleLauncher(project);
+	    	}
+	    	if (extraPage.createRuleFile()) {
+	    		createRule(project, monitor);
+	    	}
+	    	if (extraPage.createDecisionTableFile()) {
+	    		createDecisionTable(project, monitor);
+	    	}
+	    	if (extraPage.createJavaDecisionTableFile()) {
+	    		createDecisionTableSampleLauncher(project);
+	    	}
+    	} catch (Throwable t) {
+    		t.printStackTrace();
+    	}
 	}
 
     /**
-     * Create the sample launcher file.
+     * Create the sample rule launcher file.
      */
     private void createRuleSampleLauncher(IJavaProject project)
             throws JavaModelException, IOException {
@@ -274,6 +291,24 @@
     }
 
     /**
+     * Create the sample decision table launcher file.
+     */
+    private void createDecisionTableSampleLauncher(IJavaProject project)
+            throws JavaModelException, IOException {
+        
+        String s = "org/drools/ide/wizard/project/DecisionTableLauncherSample.java.template";
+        IFolder folder = project.getProject().getFolder("src/java");
+        IPackageFragmentRoot packageFragmentRoot = project
+                .getPackageFragmentRoot(folder);
+        IPackageFragment packageFragment = packageFragmentRoot
+                .createPackageFragment("com.sample", true, null);
+        InputStream inputstream = getClass().getClassLoader()
+                .getResourceAsStream(s);
+        packageFragment.createCompilationUnit("DecisionTableTest.java", new String(
+                readStream(inputstream)), true, null);
+    }
+
+    /**
      * Create the sample rule file.
      */
     private void createRule(IJavaProject project, IProgressMonitor monitor)
@@ -289,6 +324,22 @@
         }
     }
 
+    /**
+     * Create the sample decision table file.
+     */
+    private void createDecisionTable(IJavaProject project, IProgressMonitor monitor)
+            throws CoreException {
+        String fileName = "org/drools/ide/wizard/project/Sample.xls.template";
+        IFolder folder = project.getProject().getFolder("src/rules");
+        IFile file = folder.getFile("Sample.xls");
+        InputStream inputstream = getClass().getClassLoader().getResourceAsStream(fileName);
+        if (!file.exists()) {
+        	file.create(inputstream, true, monitor);
+        } else {
+        	file.setContents(inputstream, true, false, monitor);
+        }
+    }
+
     protected void initializeDefaultPageImageDescriptor() {
     	ImageDescriptor desc = DroolsIDEPlugin.getImageDescriptor("icons/drools-large.PNG");
         setDefaultPageImageDescriptor(desc);

Added: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizardPage.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizardPage.java	2006-08-13 22:03:20 UTC (rev 5845)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizardPage.java	2006-08-13 22:03:56 UTC (rev 5846)
@@ -0,0 +1,112 @@
+package org.drools.ide.wizard.project;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+public class NewDroolsProjectWizardPage extends WizardPage {
+
+	private Button addSampleJavaRuleCodeButton;
+	private Button addSampleRuleButton;
+	private Button addSampleJavaDecisionTableCodeButton;
+	private Button addSampleDecisionTableCodeButton;
+	private boolean addSampleJavaRuleCode = true;
+	private boolean addSampleRule = true;
+	private boolean addSampleJavaDecisionTableCode = false;
+	private boolean addSampleDecisionTableCode = false;
+	
+	public NewDroolsProjectWizardPage() {
+		super("extendedNewProjectPage");
+		setTitle("New JBoss Rules Project");
+        setDescription("Create a new JBoss Rules Project");
+	}
+	
+	public void createControl(Composite parent) {
+        Composite composite = new Composite(parent, SWT.NULL);
+        composite.setFont(parent.getFont());
+        composite.setLayout(new GridLayout());
+        composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+        createControls(composite);
+        setPageComplete(true);
+        // Show description on opening
+        setErrorMessage(null);
+        setMessage(null);
+        setControl(composite);
+	}
+	
+	private void createControls(Composite parent) {
+		addSampleRuleButton = createCheckBox(parent,
+			"Add a sample HelloWorld rule file to this project.");
+		addSampleRuleButton.setSelection(addSampleRule);
+		addSampleRuleButton.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// do nothing
+			}
+			public void widgetSelected(SelectionEvent e) {
+				addSampleRule = ((Button) e.widget).getSelection();
+			}
+		});
+		addSampleJavaRuleCodeButton = createCheckBox(parent,
+			"Add a sample Java class for loading and executing the HelloWorld rules.");
+		addSampleJavaRuleCodeButton.setSelection(addSampleJavaRuleCode);
+		addSampleJavaRuleCodeButton.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// do nothing
+			}
+			public void widgetSelected(SelectionEvent e) {
+				addSampleJavaRuleCode = ((Button) e.widget).getSelection();
+			}
+		});
+		addSampleDecisionTableCodeButton = createCheckBox(parent,
+			"Add a sample HelloWorld decision table file to this project.");
+		addSampleDecisionTableCodeButton.setSelection(addSampleDecisionTableCode);
+		addSampleDecisionTableCodeButton.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// do nothing
+			}
+			public void widgetSelected(SelectionEvent e) {
+				addSampleDecisionTableCode = ((Button) e.widget).getSelection();
+			}
+		});
+		addSampleJavaDecisionTableCodeButton = createCheckBox(parent,
+			"Add a sample Java class for loading and executing the HelloWorld decision table.");
+		addSampleDecisionTableCodeButton.setSelection(addSampleDecisionTableCode);
+		addSampleJavaDecisionTableCodeButton.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// do nothing
+			}
+			public void widgetSelected(SelectionEvent e) {
+				addSampleJavaDecisionTableCode = ((Button) e.widget).getSelection();
+			}
+		});
+	}
+
+	private Button createCheckBox(Composite group, String label) {
+        Button button = new Button(group, SWT.CHECK | SWT.LEFT);
+        button.setText(label);
+        GridData data = new GridData();
+        button.setLayoutData(data);
+        return button;
+    }
+	
+	public boolean createRuleFile() {
+		return addSampleRule;
+	}
+	
+	public boolean createJavaRuleFile() {
+		return addSampleJavaRuleCode;
+	}
+	
+	public boolean createDecisionTableFile() {
+		return addSampleDecisionTableCode;
+	}
+	
+	public boolean createJavaDecisionTableFile() {
+		return addSampleJavaDecisionTableCode;
+	}
+}

Added: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/Sample.xls.template
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/Sample.xls.template
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list