[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