[jboss-svn-commits] JBL Code SVN: r14235 - in labs/jbossrules/trunk/experimental: drools-insurance and 31 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 14 23:05:55 EDT 2007


Author: fmeyer
Date: 2007-08-14 23:05:55 -0400 (Tue, 14 Aug 2007)
New Revision: 14235

Added:
   labs/jbossrules/trunk/experimental/drools-insurance/
   labs/jbossrules/trunk/experimental/drools-insurance/.classpath
   labs/jbossrules/trunk/experimental/drools-insurance/.project
   labs/jbossrules/trunk/experimental/drools-insurance/.settings/
   labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jdt.core.prefs
   labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jst.common.project.facet.core.prefs
   labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.component
   labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.project.facet.core.xml
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/META-INF/
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/antlr-2.7.6.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/antlr-runtime-3.0.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/drools-compiler-4.0.0.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/drools-core-4.0.0.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/junit-3.8.1.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/mvel14-1.2rc1rv789.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/xstream-1.1.3.jar
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/web.xml
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/drools.css
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/droolslogo.png
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/header-bg.100x42.png
   labs/jbossrules/trunk/experimental/drools-insurance/WebContent/index.jsp
   labs/jbossrules/trunk/experimental/drools-insurance/build/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/approval.drl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/calculateInsurance.drl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/raw.drl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/Marginal-age.drl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/acme.dsl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/approvalDSL.drl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/technical.drl
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/AccessoriesCoverage.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Approve.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Driver.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/DriverAdditionalInfo.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Policy.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Rejection.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/SupplementalInfo.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/DriverAdditionalInfoTest.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/DriverTest.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/InsuranceCalculateTest.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/InsuranceTestHelper.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/SupplementalInfoTest.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/DroolsBusiness.class
   labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/InsuranceServlet.class
   labs/jbossrules/trunk/experimental/drools-insurance/file.log
   labs/jbossrules/trunk/experimental/drools-insurance/src/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/AccessoriesCoverage.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Approve.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Driver.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/DriverAdditionalInfo.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Policy.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Rejection.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/SupplementalInfo.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/DroolsBusiness.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/InsuranceServlet.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/approval.drl
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/calculateInsurance.drl
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/raw.drl
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/Marginal-age.drl
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/acme.dsl
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/approvalDSL.drl
   labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/technical.drl
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverAdditionalInfoTest.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverTest.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceCalculateTest.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceTestHelper.java
   labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/SupplementalInfoTest.java
Log:
adding drools insurance end to end under experimental 


Added: labs/jbossrules/trunk/experimental/drools-insurance/.classpath
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/.classpath	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/rules"/>
+	<classpathentry kind="src" path="src/test"/>
+	<classpathentry kind="src" path="src/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+	<classpathentry kind="output" path="build/classes"/>
+</classpath>

Added: labs/jbossrules/trunk/experimental/drools-insurance/.project
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/.project	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/.project	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>droolsinsurance</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+	</natures>
+</projectDescription>

Added: labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jdt.core.prefs	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jdt.core.prefs	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,7 @@
+#Tue Aug 14 11:34:18 BRT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

Added: labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jst.common.project.facet.core.prefs
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jst.common.project.facet.core.prefs	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.jst.common.project.facet.core.prefs	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,4 @@
+#Tue Aug 14 11:34:18 BRT 2007
+classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0
+classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v6.0/owners=jst.web\:2.5
+eclipse.preferences.version=1

Added: labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.component
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.component	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.component	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+<wb-module deploy-name="droolsinsurance">
+<wb-resource deploy-path="/" source-path="/WebContent"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/rules"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/java"/>
+<property name="context-root" value="droolsinsurance"/>
+<property name="java-output-path" value="build/classes"/>
+</wb-module>
+</project-modules>

Added: labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.project.facet.core.xml
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.project.facet.core.xml	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/.settings/org.eclipse.wst.common.project.facet.core.xml	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <runtime name="Apache Tomcat v6.0"/>
+  <fixed facet="jst.java"/>
+  <fixed facet="jst.web"/>
+  <installed facet="jst.java" version="5.0"/>
+  <installed facet="jst.web" version="2.5"/>
+</faceted-project>

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/WebContent/META-INF/MANIFEST.MF	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/WebContent/META-INF/MANIFEST.MF	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/antlr-2.7.6.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/antlr-2.7.6.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/antlr-runtime-3.0.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/antlr-runtime-3.0.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/drools-compiler-4.0.0.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/drools-compiler-4.0.0.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/drools-core-4.0.0.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/drools-core-4.0.0.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/junit-3.8.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/junit-3.8.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/mvel14-1.2rc1rv789.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/mvel14-1.2rc1rv789.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/xstream-1.1.3.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/lib/xstream-1.1.3.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/web.xml
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/web.xml	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/WebContent/WEB-INF/web.xml	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
+  <display-name>droolsinsurance</display-name>
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>default.html</welcome-file>
+    <welcome-file>default.htm</welcome-file>
+    <welcome-file>default.jsp</welcome-file>
+  </welcome-file-list>
+  <servlet>
+    <description></description>
+    <display-name>InsuranceServlet</display-name>
+    <servlet-name>InsuranceServlet</servlet-name>
+    <servlet-class>org.acme.insurance.web.InsuranceServlet</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>InsuranceServlet</servlet-name>
+    <url-pattern>/InsuranceServlet</url-pattern>
+  </servlet-mapping>
+</web-app>
\ No newline at end of file

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/drools.css
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/WebContent/drools.css	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/WebContent/drools.css	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,96 @@
+body {
+	background-color: #333333;
+	color: #333333;
+	text-align: center;
+	margin: 0 0 0 0;
+	padding: 0 0 0 0;
+}
+
+body, p, ol, ul, td {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size:   13px;
+  line-height: 18px;
+}
+
+pre {
+  background-color: #eee;
+  padding: 10px;
+  font-size: 11px;
+}
+
+a { 
+	color: #000000;
+}
+
+a:hover {
+	color: #FFFFFF;
+	background-color: #000000;
+}
+
+.clear {
+	clear: both;
+}
+
+li.clear {
+	display: none;
+	clear: both;
+}
+
+#header {
+	width: 100%;
+	height: 84px;
+	display: block;
+	background: url(images/header-bg.100x42.png) repeat-x;
+	text-align: center;
+}
+
+#header div.area {
+	width: 676px;
+	text-align: left;
+	margin: 0 auto 0 auto;
+}
+
+#header a.logo span {
+	display: none;
+}
+
+#header a.logo {
+	display: block;
+	float: left;
+	width: 160px;
+	height: 84px;
+	background: url(images/droolslogo.png);
+	margin: 1px 10px 0 0;
+}
+
+#header div.column {
+	float: left;
+}
+
+#header ul.options {
+	display: block;
+	list-style: none;
+	margin: 0 0 0 0;
+	padding: 2px 0 0 0;
+}
+
+#header ul.options li {
+	list-style: none;
+	display: block;
+	float: left;
+}
+
+#header ul.options li a {
+	display: block;
+	text-decoration: none;
+	font-size: 12pt;
+	color: white;
+	font-weight: bold;
+	padding: 12px 20px 6px 4px;
+	letter-spacing: 0.03em;
+}
+
+#header ul.options li a:hover {
+	background: none;
+	text-decoration: underline;
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/droolslogo.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/droolslogo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/header-bg.100x42.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/images/header-bg.100x42.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/WebContent/index.jsp
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/WebContent/index.jsp	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/WebContent/index.jsp	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,386 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+
+<html>
+<head>
+<title>Calculo de seguro</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="drools.css" media="screen" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<div id="header">
+<div class="area">
+<div class="column">
+<ul class="options">
+	<li class="new"><a href="#"><span>Drools Insurance
+	Company</span></a></li>
+</ul>
+</div>
+</div>
+</div>
+
+<form action="InsuranceServlet" method="get" accept-charset="utf-8">
+
+<table align="center">
+	<tr>
+		<td>
+		<table width="600" height="236" border="0" align="center"
+			cellpadding="0" cellspacing="2" bgcolor="#999999"
+			class="seucorretor6">
+			<tbody>
+				<tr class="seucorretor6">
+					<td class="seucorretor2" align="center">
+					<div align="left"><b>Dados do condutor principal</b></div>
+					</td>
+				</tr>
+
+				<tr>
+					<td align="center" bgcolor="#FFFFFF" valign="top">
+					<div align="left"><br>
+
+					<table border="0" cellpadding="3" cellspacing="0" width="584">
+						<tbody>
+							<tr>
+								<td width="162" class="c1">Sexo:</td>
+
+								<td width="363"><select name="sexo">
+									<option value=0 selected="selected"> Masculino</option>
+									<option value=1>Feminino</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Data Nascimento:</td>
+
+								<td><input size="2" name="data_nascimento_dia"
+									maxlength="2" value="01" type="text" width="2"> / <input
+									size="2" name="data_nascimento_mes" maxlength="2" value="01"
+									type="text"> / <input size="4"
+									name="data_nascimento_ano" maxlength="4" value="1900"
+									type="text"> <span class="c2">&nbsp; (dd/mm/aaaa
+								)</span></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Tempo de Habilitacao:</td>
+
+								<td><input name="habilitacao" size="2" maxlength="2"
+									value="0" type="text"> <span class="c2">Anos</span></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Estado Civil:</td>
+
+								<td><select name="estadoCivil">
+									<option value="0" selected="selected" >Solteiro/Divorciado</option>
+									<option value="1">Casado/Uniao Estavel Viuvo</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Tem filhos?</td>
+
+								<td><select name="temFilhos">
+									<option value="1">Sim, até 17 anos.</option>
+									<option value="2">Sim, entre 17 e 25 anos.</option>
+									<option value="3">Sim, até 30 anos.</option>
+									<option value="0" selected="selected" >Não ou Nenhuma das anteriores</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Escolaridade:</td>
+
+								<td><select name="escolaridade">
+									<option value="1" selected="selected" >1 Grau</option>
+									<option value="2">2 Grau</option>
+									<option value="3">3 Grau (Univ.)</option>
+									<option value="4">Pós Graduação</option>
+								</select></td>
+							</tr>
+						</tbody>
+					</table>
+					<br>
+					</div>
+					</td>
+				</tr>
+			</tbody>
+		</table>
+		</td>
+		<td>
+		<table width="600" border="0" align="center" cellpadding="0"
+			cellspacing="2" bgcolor="#999999" class="seucorretor6">
+			<tbody>
+				<tr class="seucorretor6">
+					<td class="seucorretor2" align="center">
+					<div align="left"><b>Informacoes adicionais do condutor
+					principal</b></div>
+					</td>
+				</tr>
+
+				<tr>
+					<td valign="top" bgcolor="#FFFFFF">
+					<div align="left"><br>
+
+					<table width="98%" height="188" border="0" align="center"
+						cellpadding="4" cellspacing="2">
+						<tbody>
+							<tr>
+								<td width="296" class="c1">Guarda do veiculo de dia:</td>
+
+								<td width="266"><select name="garagemDia">
+									<option value="1">Garagem fechada</option>
+									<option value="2">Estacionamento</option>
+									<option value="0" selected="selected" >Não informado ou na rua</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Guarda do veículo de noite:</td>
+
+								<td><select name="garagemNoite">
+									<option value="1">Garagem fechada</option>
+									<option value="2">Estacionamento</option>
+									<option value="0" selected="selected" >Não informado ou na rua</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Residência atual:</td>
+
+								<td><select name="condicaoImovel">
+									<option value="1">Própria/Familia</option>
+									<option value="0" selected="selected">Alugada</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Emprego atual:</td>
+
+								<td><select name="profissao">
+									<option value="0" selected="selected" >Desempregado</option>
+									<option value="1">Proprietário de Empresa ou Negócio</option>
+									<option value="2">Funcionario Publico</option>
+									<option value="3">Funcionario Privado</option>
+									<option value="4">Estudante</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Reside em:</td>
+
+								<td><select name="tipoResidencia">
+									<option value="0" selected="selected" >Casa</option>
+									<option value="1">Casa em condomínio fechado</option>
+									<option value="2">Apartamento</option>
+								</select></td>
+							</tr>
+
+							<tr>
+								<td class="c1">Quantos sinistros indenizados ?</td>
+
+								<td><select name="sinistros">
+									<option value="0" selected="selected">Nenhum</option>
+									<option value="1">1</option>
+									<option value="2">2</option>
+									<option value="3">3</option>
+									<option value="4">4</option>
+									<option value="5">5</option>
+									<option value="6">6</option>
+									<option value="7">7</option>
+									<option value="8">8</option>
+									<option value="9">mais de 8</option>
+								</select></td>
+							</tr>
+						</tbody>
+					</table>
+					</div>
+					</td>
+				</tr>
+			</tbody>
+		</table>
+
+		</td>
+	</tr>
+
+	<tr>
+		<td>
+		<table width="600" border="0" align="center" cellpadding="0"
+			cellspacing="2" bgcolor="#999999" class="seucorretor6">
+			<tbody>
+				<tr class="seucorretor6">
+					<td align="center" bordercolor="#000000" class="seucorretor2">
+					<div align="left"><span class="seucorretor2 seucorretor2"><b>Clausulas
+					complementares</b></span></div>
+					</td>
+				</tr>
+
+				<tr>
+					<td valign="top" bordercolor="#000000" bgcolor="#FFFFFF">
+					<div align="left"><br>
+
+					<table align="center" border="0" cellpadding="2" cellspacing="2"
+						width="95%">
+						<tbody>
+							<tr>
+								<td class="c1" width="50%">Quer Carro Reserva?</td>
+
+								<td width="50%"><select name="carroReserva">
+									<option value="1">Sim</option>
+									<option value="0" selected="selected" >Não</option>
+								</select> &nbsp;</td>
+							</tr>
+
+							<tr>
+								<td class="c1" width="50%">Quer Assistência 24 horas?</td>
+								<td width="50%"><select name="assistencia24h">
+									<option value="1">Sim</option>
+									<option value="0" selected="selected" >Não</option>									
+								</select> &nbsp;</td>
+							</tr>
+
+							<tr>
+								<td class="c1" width="50%">Quer Cobertura de vidros?</td>
+
+								<td width="50%"><select name="vidros">
+									<option value="1">Sim</option>
+									<option value="0" selected="selected" >Não</option>									
+								</select> &nbsp;</td>
+							</tr>
+
+							<tr>
+								<td class="c1" width="50%">Despesas Extraordinárias:</td>
+
+								<td width="50%"><select name="despExtra">
+									<option value="1">Sim</option>
+									<option value="0" selected="selected" >Não</option>
+								</select> &nbsp;</td>
+							</tr>
+						</tbody>
+					</table>
+					</div>
+					</td>
+				</tr>
+			</tbody>
+		</table>
+		</td>
+
+		<td>
+		<table width="600" border="0" align="center" cellpadding="0"
+			cellspacing="2" bgcolor="#999999" class="seucorretor6">
+			<tbody>
+				<tr class="seucorretor6">
+					<td align="center" bordercolor="#000000" class="seucorretor2">
+					<div align="left"><span class="seucorretor1"><b>Cobertura
+					de Acessórios:</b></span></div>
+					</td>
+				</tr>
+
+				<tr>
+					<td valign="top" bordercolor="#000000" bgcolor="#FFFFFF">
+					<div align="left"><br>
+
+					<table align="center" border="0" cellpadding="2" cellspacing="2"
+						width="95%">
+						<tbody>
+							<tr>
+								<td class="c5" width="50%">Descrição</td>
+
+								<td class="c5" width="50%">Valor (R$)</td>
+							</tr>
+
+							<tr>
+								<td class="c1" width="50%">Alarme:</td>
+
+								<td width="50%"><input size="12" name="alarme" value="0.00"
+									type="text"> &nbsp;</td>
+							</tr>
+
+							<tr>
+								<td class="c1" width="50%">Sistema de Som:</td>
+
+								<td width="50%"><input size="12" name="sistemaSom"
+									value="0.00" type="text"> &nbsp;</td>
+							</tr>
+
+							<tr>
+								<td class="c1" width="50%">Blindagem:</td>
+
+								<td width="50%"><input size="12" name="blindagem"
+									value="0.00" type="text"> &nbsp;</td>
+							</tr>
+						</tbody>
+					</table>
+					</div>
+					</td>
+				</tr>
+			</tbody>
+		</table>
+		</td>
+	</tr>
+
+</table>
+
+
+
+
+<p>&nbsp;</p>
+<p><input name="Reset" type="reset" value="Reset"> <input
+	type="submit" value="Continue"></p>
+</form>
+
+
+<%
+	try {
+		if ( request.getParameter("calculo") != null ) {
+%>
+	tabe
+	<table width="600" border="0" align="center" cellpadding="0"
+			cellspacing="2" bgcolor="#999999" class="seucorretor6">
+      <tbody>
+        <tr class="seucorretor6">
+          <td align="center" bordercolor="#000000" class="seucorretor2"><div align="left"><span class="seucorretor2 seucorretor2"><b>Calculo de Seguro</b></span></div></td>
+        </tr>
+        <tr>
+          <td valign="top" bordercolor="#000000" bgcolor="#FFFFFF"><div align="left"><br>
+                  <table align="center" border="0" cellpadding="2" cellspacing="2"
+						width="95%">
+                    <tbody>
+                      <tr>
+                        <td class="c1" width="50%">Seguro aprovado</td>
+                        <td width="50%"><%  out.print(request.getParameter("aprovado")); %></td>
+                      </tr>
+                      <tr>
+                        <td class="c1" width="50%">Fator risco</td>
+                        <td width="50%"><% out.print(request.getParameter("fatorrisco"));%></td>
+                      </tr>
+                      <tr>
+                        <td class="c1" width="50%">Preco Base Apolice</td>
+                        <td width="50%"><% out.print(request.getParameter("base")); %></td>
+                      </tr>
+                      <tr>
+                        <td class="c1" width="50%">Valor do Seguro</td>
+                        <td width="50%"><% out.print(request.getParameter("valor")); %></td>
+                      </tr>
+                    </tbody>
+                  </table>
+          </div></td>
+        </tr>
+      </tbody>
+    </table>
+<%			
+		}
+	} catch (Exception e) {
+%>
+
+    <%		
+	}
+%>
+
+
+<p>&nbsp;</p>
+
+<p><br>
+</p>
+</body>
+</html>

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/approval.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/approval.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/approval.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,25 @@
+package org.acme.insurance;
+
+rule "approve"
+	agenda-group "risk assessment"
+	salience -1
+	when
+		not Rejection()
+		$policy : Policy( approved == false )
+	then
+		System.out.println("approve: " + $policy.getInsurancePrice() );	
+		$policy.setApproved(true);
+		update($policy);
+		drools.setFocus("insurancecalcule");
+end
+
+rule "rejection"
+	agenda-group "rejection"
+	auto-focus 
+	when
+		Rejection()
+	then
+		drools.halt();
+		System.out.println("rejection: ");
+end
+

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/calculateInsurance.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/calculateInsurance.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/calculateInsurance.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,32 @@
+#created on: Aug 14, 2007
+package org.acme.insurance
+
+// After approved insurance calcule the value
+rule "Insurance extra itens percent"
+	agenda-group "insurancecalcule"
+	salience 20
+	when
+		not Rejection()	
+		driver : Driver ( driverID : id )
+		access : AccessoriesCoverage ( driverId == driverID)
+		policy : Policy( approved == true )
+	then
+		policy.setInsurancePrice( policy.getInsurancePrice() + 
+			(access.getAlarmSystemValue() * 0.10) + 
+			(access.getArmorValue() * 0.20) +
+			(access.getSoundSystemValue() * 0.30 ));
+			
+		System.out.println("Insurance extra itens percent: " + policy.getInsurancePrice() );					
+end
+
+rule "Insurance Calcule"
+	agenda-group "insurancecalcule"
+	salience 10
+	when
+		not Rejection()	
+		driver : Driver()
+		policy : Policy( approved == true )
+	then
+		policy.setInsurancePrice(policy.getBasePrice() * driver.getInsuranceFactor() + policy.getInsurancePrice());		
+		System.out.println("Insurance Calcule: " + policy.getInsurancePrice() );		
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/raw.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/raw.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/approval/raw.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,124 @@
+package org.acme.insurance
+
+import org.acme.insurance.base.Rejection;
+import org.acme.insurance.base.Policy;
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.DriverAdditionalInfo;
+import org.acme.insurance.base.AccessoriesCoverage;
+import org.acme.insurance.base.SupplementalInfo;
+
+
+rule "Driver is underage"
+	agenda-group "risk assessment"
+	when
+		not Rejection()	 
+		driver : Driver ( age < 18)
+	then
+		driver.updateInsuranceFactor(0.0);
+		insert(new Rejection("Driver is Underage"));
+		System.out.println("Driver is Underage");
+end
+
+
+rule "New licenced Driver"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( licenceYears < 3 )
+	then
+		driver.updateInsuranceFactor(1.2);
+		System.out.println("New Licenced driver " + driver.getInsuranceFactor());		
+end
+
+rule "Driver Single Young Male Driver factor"
+	agenda-group "risk assessment"
+	when
+		driver : Driver( genre == Driver.MALE, age < 25, maritalState == Driver.SINGLE )
+	then 
+		driver.updateInsuranceFactor(1.6);
+		System.out.println("Driver Single Young Male Driver factor: " + driver.getInsuranceFactor());
+end
+
+rule "Driver Mature Married With Young Child factor"
+	agenda-group "risk assessment"
+	when
+		driver : Driver( genre == Driver.MALE, age > 40, maritalState == Driver.MARRIED, hasChildren == true )
+	then 
+		driver.updateInsuranceFactor(1.5);
+		System.out.println("Driver Mature Married With Young Child factor: " + driver.getInsuranceFactor());
+end
+
+rule "Priory Claimed Driver"
+	agenda-group "risk assessment"
+	when
+		$driver : Driver ( $prior : priorClaims > 2 )
+	then
+		$driver.updateInsuranceFactor((0.2 * $prior) + 1);
+		System.out.println("Priory Claimed Driver + 20% for each previous problem " + $driver.getInsuranceFactor());		
+end
+
+rule "Day Vehicle Place"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		daddit : DriverAdditionalInfo ( driverId == driverID, dayVehiclePlace == DriverAdditionalInfo.STREET ) 
+	then
+		driver.updateInsuranceFactor( 1.15 );
+		System.out.println("Day Vehicle Place: " + driver.getInsuranceFactor());		
+end
+
+rule "Night Vehicle Place"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		daddit : DriverAdditionalInfo ( driverId == driverID, nightVehiclePlace  == DriverAdditionalInfo.STREET ) 
+	then
+		driver.updateInsuranceFactor(1.44); // streets are very dangerous dangerous at night ;) 
+		System.out.println("Night Vehicle Place: " + driver.getInsuranceFactor());		
+end
+
+// Supplemental itens insurance 
+
+rule "Driver wants an extra Car"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, extraCar  == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants an extra Car: " + driver.getInsuranceFactor());		
+end
+
+rule "Driver wants extra assistence"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, extraAssistence   == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants extra assistence: " + driver.getInsuranceFactor());		
+end
+
+
+rule "Driver wants glass coverage"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, glassCoverage  == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants glass coverage: " + driver.getInsuranceFactor());		
+end
+
+rule "Driver wants non related expenses coverage"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, nonRelatedExpenses  == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants non related expenses coverage: " + driver.getInsuranceFactor());		
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/Marginal-age.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/Marginal-age.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/Marginal-age.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,17 @@
+package org.acme.insurance
+expander acme.dsl
+
+#
+# Sometimes it may make sense to manage one rule per file.
+#
+
+rule "Driver is in marginal age" 	
+ 	#remember, don't leave any blank lines in between expressions
+	when
+		There is a Driver
+			- age is between 18 and 24 years old
+			- has had more than 1 prior claims
+		Policy type is 'COMPREHENSIVE'
+	then
+		Reject Policy with explanation : 'No accidents allowed if in marginal age group'
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/acme.dsl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/acme.dsl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/acme.dsl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,13 @@
+[condition][]There is a Driver=Driver()
+[condition][]- age less than {age} years old=age < {age}
+[condition][]- age is equal to {age} years old=age == {age}
+[condition][]- age greater than {age} years old=age > {age}
+[condition][]- has had more than {number} prior claims=priorClaims > {number}
+[condition][]- has a location risk profile of '{risk}'=locationRiskProfile == "{risk}"
+[condition][]- age is at least {age}=age >= {age}
+[condition][]- age is between {lower} and {upper} years old=age >= {lower}, age <= {upper}
+[condition][]- has had exactly {number} prior claims=priorClaims ==  {number}
+[condition][]Policy type is '{type}'=Policy(type ==  "{type}")
+[consequence][]Reject Policy with explanation : '{reason}'=insert(new Rejection("{reason}"));
+[condition][]Policy has not been rejected=not Rejection()
+[consequence][]Approve Policy with the reason : '{reason}'=insert(new Approve("{reason}"));

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/approvalDSL.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/approvalDSL.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/approvalDSL.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,101 @@
+#created on: 23/05/2006
+package org.acme.insurance
+expander acme.dsl
+
+#
+# These rules are mostly "negative" in the sense that
+# a driver has to not be rejected. There is 
+# one rule that allows immediate approval however.
+#
+
+rule "Driver has had too many accidents"
+	
+	when 
+		There is a Driver
+			- has had more than 3 prior claims
+	then 
+		Reject Policy with explanation : 'Too many accidents'
+end 
+
+
+rule "Driver is 45"
+	
+	when 
+		There is a Driver
+			- age is equal to 45 years old
+	then 
+		Reject Policy with explanation : 'Too old'
+end 
+
+
+rule "Driver is underage"
+
+	when
+		There is a Driver
+			- age less than 18 years old
+	then 		
+		Reject Policy with explanation : 'Driver is underage. Try another insurer'
+		
+end
+
+rule "Driver is in marginal age" 	
+	when
+		There is a Driver
+			- age is between 18 and 24 years old
+			- has had more than 1 prior claims
+		Policy type is 'COMPREHENSIVE'
+	then
+		Reject Policy with explanation : 'No accidents allowed if in marginal age group'
+end
+
+rule "Driver in unsafe area for marginal age"
+	when
+		Policy type is 'COMPREHENSIVE'	
+		There is a Driver
+			- age less than 25 years old
+			- has a location risk profile of 'HIGH'				
+	then
+		Reject Policy with explanation : 'Marginal age driver in high risk area'		
+end
+
+rule "Driver in unsafe area with priors"
+	when
+		There is a Driver
+			- has a location risk profile of 'MED'
+			- age less than 25 years old
+			- has had more than 1 prior claims
+		Policy type is 'COMPREHENSIVE'
+		
+	then
+		Reject Policy with explanation : 'Driver in that area is too risky - given past accidents and age.'
+end
+
+rule "Driver unsafe for third party"
+	when
+		Policy type is 'THIRD_PARTY'		
+		There is a Driver
+			- has had more than 2 prior claims
+	then		
+		Reject Policy with explanation : 'Too many priors for third party'
+		
+end
+ 
+rule "Driver in bad area for theft"
+	when 
+		Policy type is 'FIRE_THEFT'
+		There is a Driver
+			- has a location risk profile of 'HIGH'
+	then		
+		Reject Policy with explanation : 'Unsafe area for theft'				
+end
+
+rule "Quick approval - safe driver, any policy type"
+	when		
+		Policy has not been rejected	
+		There is a Driver
+			- age is at least 30
+			- has had exactly 0 prior claims
+	then
+		Approve Policy with the reason : 'Driver is safe and mature.'
+end
+

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/technical.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/technical.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/build/classes/legacy/technical.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,44 @@
+package org.acme.insurance
+
+rule "DemoRule"
+	salience 10
+	dialect "mvel"
+	when
+	d : Driver( age > 65 )
+	then
+	insert(new Rejection(" too old "));
+end
+
+rule "Approve policy affirmative"
+	salience 100 #this can short circuit any processing
+	when
+		a : Approve()
+		p : Policy()
+	then
+		p.setApproved(true);
+		System.out.println("APPROVED: " 
+								+ a.getReason());
+		drools.halt();
+end
+
+rule "Approve if not rejected"
+	salience -100 #approve if there are no objections
+	when
+		not Rejection() 		
+		p : Policy(approved == false)
+	then
+		System.out.println("APPROVED: due to no objections."); 
+		p.setApproved(true);
+end
+
+rule "Reject application"
+	salience 100 #this can short circuit any other processing
+	when
+		r : Rejection()
+		d : Driver()
+		p : Policy()
+	then
+		System.out.println("REJECTED: " + r.getReason());
+		p.setApproved(false);
+		retract(d); #effectively halts the rules
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/AccessoriesCoverage.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/AccessoriesCoverage.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Approve.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Approve.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Driver.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Driver.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/DriverAdditionalInfo.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/DriverAdditionalInfo.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Policy.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Policy.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Rejection.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/Rejection.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/SupplementalInfo.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/base/SupplementalInfo.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/DriverAdditionalInfoTest.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/DriverAdditionalInfoTest.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/DriverTest.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/DriverTest.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/InsuranceCalculateTest.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/InsuranceCalculateTest.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/InsuranceTestHelper.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/InsuranceTestHelper.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/SupplementalInfoTest.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/test/SupplementalInfoTest.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/DroolsBusiness.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/DroolsBusiness.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/InsuranceServlet.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/experimental/drools-insurance/build/classes/org/acme/insurance/web/InsuranceServlet.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/experimental/drools-insurance/file.log
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/file.log	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/file.log	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,109 @@
+<object-stream>
+  <list>
+    <org.drools.audit.event.ObjectLogEvent>
+      <factId>1</factId>
+      <objectToString>org.acme.insurance.base.Policy at 739474</objectToString>
+      <type>1</type>
+    </org.drools.audit.event.ObjectLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver Single Young Male Driver factor [2]</activationId>
+      <rule>Driver Single Young Male Driver factor</rule>
+      <declarations>driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>4</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>New licenced Driver [2]</activationId>
+      <rule>New licenced Driver</rule>
+      <declarations>driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>4</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ObjectLogEvent>
+      <factId>2</factId>
+      <objectToString>org.acme.insurance.base.Driver at a82a10</objectToString>
+      <type>1</type>
+    </org.drools.audit.event.ObjectLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants an extra Car [3, 2]</activationId>
+      <rule>Driver wants an extra Car</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>4</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants glass coverage [3, 2]</activationId>
+      <rule>Driver wants glass coverage</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>4</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants non related expenses coverage [3, 2]</activationId>
+      <rule>Driver wants non related expenses coverage</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>4</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ObjectLogEvent>
+      <factId>3</factId>
+      <objectToString>org.acme.insurance.base.SupplementalInfo at 94a8eb</objectToString>
+      <type>1</type>
+    </org.drools.audit.event.ObjectLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants non related expenses coverage [3, 2]</activationId>
+      <rule>Driver wants non related expenses coverage</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>6</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants non related expenses coverage [3, 2]</activationId>
+      <rule>Driver wants non related expenses coverage</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>7</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants glass coverage [3, 2]</activationId>
+      <rule>Driver wants glass coverage</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>6</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants glass coverage [3, 2]</activationId>
+      <rule>Driver wants glass coverage</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>7</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants an extra Car [3, 2]</activationId>
+      <rule>Driver wants an extra Car</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>6</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver wants an extra Car [3, 2]</activationId>
+      <rule>Driver wants an extra Car</rule>
+      <declarations>driverID=400(2); supple=org.acme.insurance.base.SupplementalInfo at 94a8eb(3); driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>7</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver Single Young Male Driver factor [2]</activationId>
+      <rule>Driver Single Young Male Driver factor</rule>
+      <declarations>driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>6</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>Driver Single Young Male Driver factor [2]</activationId>
+      <rule>Driver Single Young Male Driver factor</rule>
+      <declarations>driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>7</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>New licenced Driver [2]</activationId>
+      <rule>New licenced Driver</rule>
+      <declarations>driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>6</type>
+    </org.drools.audit.event.ActivationLogEvent>
+    <org.drools.audit.event.ActivationLogEvent>
+      <activationId>New licenced Driver [2]</activationId>
+      <rule>New licenced Driver</rule>
+      <declarations>driver=org.acme.insurance.base.Driver at a82a10(2)</declarations>
+      <type>7</type>
+    </org.drools.audit.event.ActivationLogEvent>
+  </list>
+</object-stream>
\ No newline at end of file

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/AccessoriesCoverage.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/AccessoriesCoverage.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/AccessoriesCoverage.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,39 @@
+package org.acme.insurance.base;
+
+public class AccessoriesCoverage {
+
+    private int driverId;
+    
+    private Double soundSystemValue;
+    private Double armorValue;
+    private Double alarmSystemValue;
+    
+    public Double getArmorValue() {
+        return armorValue;
+    }
+    public void setArmorValue(Double armorValue) {
+        this.armorValue = armorValue;
+    }
+    
+    public Double getSoundSystemValue() {
+        return soundSystemValue;
+    }
+    public void setSoundSystemValue(Double soundSystemValue) {
+        this.soundSystemValue = soundSystemValue;
+    }
+    public Double getAlarmSystemValue() {
+        return alarmSystemValue;
+    }
+    public void setAlarmSystemValue(Double alarmSystemValue) {
+        this.alarmSystemValue = alarmSystemValue;
+    }
+    public int getDriverId() {
+        return driverId;
+    }
+    public void setDriverId(int driverId) {
+        this.driverId = driverId;
+    }
+    
+    
+    
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Approve.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Approve.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Approve.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,24 @@
+package org.acme.insurance.base;
+
+/**
+ * This is a simple fact class to mark something as approved.
+ * @author Michael Neale
+ *
+ */
+public class Approve {
+	
+	private String reason;
+
+	public Approve(String reason) {
+		this.reason = reason;
+	}
+
+	public String getReason() {
+		return reason;
+	}
+
+	public void setReason(String reason) {
+		this.reason = reason;
+	}
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Driver.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Driver.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Driver.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,105 @@
+package org.acme.insurance.base;
+
+import java.text.ParseException;
+import java.util.Date;
+
+/**
+ * This represents obviously a driver who is applying for an insurance Policy.
+ */
+public class Driver {
+    
+    public static final int MALE = 0;
+    public static final int FEMALE = 1;
+    
+    public static final int SINGLE = 0;
+    public static final int MARRIED = 1;
+    
+    private int     id;
+
+    private String  name;
+    private Date    birhDate;
+    private Integer licenceYears;
+
+    private Integer priorClaims;
+    private Integer maritalState;
+    private boolean hasChildren;
+    private Integer genre;
+    
+    private Double  insuranceFactor = 1.0;
+    
+    public Double getInsuranceFactor(){
+        return insuranceFactor;
+    }
+    
+    public void updateInsuranceFactor(Double factor) {
+        this.insuranceFactor *= factor;
+    }
+    
+    public int getGenre() {
+        return genre;
+    }
+
+    public void setGenre(int genre) {
+        this.genre = genre;
+    }
+
+    public int getAge() throws ParseException {
+        return (int) (((new Date()).getTime() - birhDate.getTime()) / 86400000L / 360);
+    }
+
+    public Date getBirhDate() {
+        return birhDate;
+    }
+
+    public void setBirhDate(Date birhDate) {
+        this.birhDate = birhDate;
+    }
+
+    public boolean getHasChildren() {
+        return hasChildren;
+    }
+
+    public void setHasChildren(boolean hasChildren) {
+        this.hasChildren = hasChildren;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Integer getLicenceYears() {
+        return licenceYears;
+    }
+
+    public void setLicenceYears(Integer licenceYears) {
+        this.licenceYears = licenceYears;
+    }
+
+    public Integer getMaritalState() {
+        return maritalState;
+    }
+
+    public void setMaritalState(Integer maritalState) {
+        this.maritalState = maritalState;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getPriorClaims() {
+        return priorClaims;
+    }
+
+    public void setPriorClaims(Integer priorClaims) {
+        this.priorClaims = priorClaims;
+    }
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/DriverAdditionalInfo.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/DriverAdditionalInfo.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/DriverAdditionalInfo.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,64 @@
+package org.acme.insurance.base;
+
+public class DriverAdditionalInfo {
+
+    public static final int STREET             = 0;
+    public static final int GARAGE             = 1;
+    public static final int PUBLICPARKING      = 2;
+
+    public static final int RENTEDHOME         = 0;
+    public static final int OWNHOME            = 1;
+
+    public static final int UNEMPLOYED         = 0;
+    public static final int STUDENT            = 1;
+    public static final int GOVERNMENTEMPLOYEE = 2;
+    public static final int PRIVATEEMPLOYEE    = 3;
+    public static final int BUSINESSOWNER      = 4;
+
+    private int             driverId;
+    private Integer         dayVehiclePlace;
+    private Integer         nightVehiclePlace;
+    private Integer         jobStatus;
+    private Integer         residenceStatus;
+
+    public Integer getDayVehiclePlace() {
+        return dayVehiclePlace;
+    }
+
+    public void setDayVehiclePlace(Integer dayVehiclePlace) {
+        this.dayVehiclePlace = dayVehiclePlace;
+    }
+
+    public int getDriverId() {
+        return driverId;
+    }
+
+    public void setDriverId(int driverId) {
+        this.driverId = driverId;
+    }
+
+    public Integer getJobStatus() {
+        return jobStatus;
+    }
+
+    public void setJobStatus(Integer jobStatus) {
+        this.jobStatus = jobStatus;
+    }
+
+    public Integer getNightVehiclePlace() {
+        return nightVehiclePlace;
+    }
+
+    public void setNightVehiclePlace(Integer nightVehiclePlace) {
+        this.nightVehiclePlace = nightVehiclePlace;
+    }
+
+    public Integer getResidenceStatus() {
+        return residenceStatus;
+    }
+
+    public void setResidenceStatus(Integer residenceStatus) {
+        this.residenceStatus = residenceStatus;
+    }
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Policy.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Policy.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Policy.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,49 @@
+package org.acme.insurance.base;
+
+/**
+ * This represents a policy that a driver is applying for. 
+ * 
+ * Obviously in the real world, there are actuaries to mess things up, but lets just pretend there is
+ * some simple base price and discount that we can calculate with relatively simple rules !
+ * 
+ */
+public class Policy {
+    
+    private int driverId;
+    
+	private boolean approved = false;
+	private int discountPercent = 0;
+	private double basePrice;
+    private double insurancePrice;
+    
+	public double getInsurancePrice() {
+        return insurancePrice;
+    }
+    public void setInsurancePrice(double insurancePrice) {
+        this.insurancePrice = insurancePrice;
+    }
+    public boolean isApproved() {
+		return approved;
+	}
+	public void setApproved(boolean approved) {
+		this.approved = approved;
+	}
+    public double getBasePrice() {
+        return basePrice;
+    }
+    public void setBasePrice(double basePrice) {
+        this.basePrice = basePrice;
+    }
+    public int getDiscountPercent() {
+        return discountPercent;
+    }
+    public void setDiscountPercent(int discountPercent) {
+        this.discountPercent = discountPercent;
+    }
+    public int getDriverId() {
+        return driverId;
+    }
+    public void setDriverId(int driverId) {
+        this.driverId = driverId;
+    }
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Rejection.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Rejection.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/Rejection.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,19 @@
+package org.acme.insurance.base;
+
+public class Rejection {
+
+	private String reason;
+
+	public Rejection(String reason) {
+		this.reason = reason;
+	}
+
+	public String getReason() {
+		return reason;
+	}
+
+	public void setReason(String reason) {
+		this.reason = reason;
+	}
+	
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/SupplementalInfo.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/SupplementalInfo.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/base/SupplementalInfo.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,52 @@
+package org.acme.insurance.base;
+
+public class SupplementalInfo {
+    
+    private int     driverId;
+
+    private boolean extraCar;
+    private boolean extraAssistence;
+    private boolean glassCoverage;
+    private boolean nonRelatedExpenses;
+
+
+    public int getDriverId() {
+        return driverId;
+    }
+
+    public void setDriverId(int driverId) {
+        this.driverId = driverId;
+    }
+
+    public boolean isExtraAssistence() {
+        return extraAssistence;
+    }
+
+    public void setExtraAssistence(boolean extraAssistence) {
+        this.extraAssistence = extraAssistence;
+    }
+
+    public boolean isExtraCar() {
+        return extraCar;
+    }
+
+    public void setExtraCar(boolean extraCar) {
+        this.extraCar = extraCar;
+    }
+
+    public boolean isGlassCoverage() {
+        return glassCoverage;
+    }
+
+    public void setGlassCoverage(boolean glassCoverage) {
+        this.glassCoverage = glassCoverage;
+    }
+
+    public boolean isNonRelatedExpenses() {
+        return nonRelatedExpenses;
+    }
+
+    public void setNonRelatedExpenses(boolean nonRelatedExpenses) {
+        this.nonRelatedExpenses = nonRelatedExpenses;
+    }
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/DroolsBusiness.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/DroolsBusiness.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/DroolsBusiness.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,165 @@
+package org.acme.insurance.web;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.acme.insurance.base.AccessoriesCoverage;
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.DriverAdditionalInfo;
+import org.acme.insurance.base.Policy;
+import org.acme.insurance.base.SupplementalInfo;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+
+public class DroolsBusiness {
+
+	private DriverAdditionalInfo driverAdit = new DriverAdditionalInfo();
+	private SupplementalInfo suppinfo = new SupplementalInfo();
+	private AccessoriesCoverage accessCov = new AccessoriesCoverage();
+	private Driver driverMale = new Driver();
+	private SimpleDateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy");
+	private Date defaultBirthday;
+	private Policy policy = new Policy();
+
+	private RuleBase rulebase;
+	private StatefulSession session;
+
+	public boolean isApproved() {
+		return policy.isApproved(); 
+	}
+	
+	public Double getBasePrice() {
+		return policy.getBasePrice();
+	}
+	
+	public Double getRiskFactor() {
+		return driverMale.getInsuranceFactor();
+	}
+	
+	public Double getInsurancePrice() {
+		return policy.getInsurancePrice();
+	}
+	
+	private RuleBase loadRuleBase() throws Exception {
+
+		PackageBuilder builder = new PackageBuilder();
+		builder.addPackageFromDrl(getTechnicalRules("/approval/raw.drl"));
+		builder.addPackageFromDrl(getTechnicalRules("/approval/approval.drl"));
+		builder.addPackageFromDrl(getTechnicalRules("/approval/calculateInsurance.drl"));
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage(builder.getPackage());
+		return ruleBase;
+	}
+
+	private Reader getTechnicalRules(String name) {
+
+		InputStream stream = this.getClass().getResourceAsStream(
+				name);
+		
+		return new InputStreamReader(stream);
+
+	}
+	
+	
+	protected void setUp() throws Exception {
+
+		rulebase = loadRuleBase();
+		session = rulebase.newStatefulSession();
+		
+		session.setFocus("risk assessment");
+		
+		SimpleDateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy");
+		defaultBirthday = df.parse("18/09/1983");
+
+	}
+
+
+	public void execute(HttpServletRequest request) throws Exception {
+
+		setUp();
+
+		defaultBirthday = df
+				.parse(Integer.parseInt(request
+						.getParameter("data_nascimento_dia"))
+						+ "/"
+						+ Integer.parseInt(request
+								.getParameter("data_nascimento_mes"))
+						+ "/"
+						+ Integer.parseInt(request
+								.getParameter("data_nascimento_ano")));
+		
+		policy.setBasePrice(500.00);
+		
+		driverMale.setBirhDate(defaultBirthday);
+
+		driverMale.setId(400);
+		driverMale.setGenre(Integer.parseInt(request.getParameter("sexo")));
+		driverMale.setMaritalState(Integer.parseInt(request
+				.getParameter("estadoCivil")));
+		driverMale.setHasChildren(Boolean.parseBoolean(request
+				.getParameter("temFilhos")));
+		driverMale.setPriorClaims(Integer.parseInt(request
+				.getParameter("sinistros")));
+		driverMale.setLicenceYears(Integer.parseInt(request
+				.getParameter("habilitacao")));
+
+		driverAdit.setDriverId(driverMale.getId());
+		driverAdit.setDayVehiclePlace(Integer.parseInt(request
+				.getParameter("garagemDia")));
+		driverAdit.setNightVehiclePlace(Integer.parseInt(request
+				.getParameter("garagemNoite")));
+		driverAdit.setJobStatus(Integer.parseInt(request
+				.getParameter("profissao")));
+		driverAdit.setResidenceStatus(Integer.parseInt(request
+				.getParameter("condicaoImovel")));
+
+		suppinfo.setDriverId(driverMale.getId());
+		suppinfo.setExtraAssistence(Boolean.parseBoolean(request
+				.getParameter("assistencia24h")));
+		suppinfo.setExtraCar(Boolean.parseBoolean(request
+				.getParameter("carroReserva")));
+		suppinfo.setGlassCoverage(Boolean.parseBoolean(request
+				.getParameter("vidros")));
+		suppinfo.setNonRelatedExpenses(Boolean.parseBoolean(request
+				.getParameter("despExtra")));
+
+		accessCov.setDriverId(driverMale.getId());
+
+		accessCov.setAlarmSystemValue(Double.parseDouble(request
+				.getParameter("sistemaSom")));
+		accessCov.setArmorValue(Double.parseDouble(request
+				.getParameter("blindagem")));
+		accessCov.setSoundSystemValue(Double.parseDouble(request
+				.getParameter("sistemaSom")));
+
+		policy.setApproved(false);
+
+		session.insert(policy);
+		session.insert(driverMale);
+		session.insert(driverAdit);
+		session.insert(suppinfo);
+		session.insert(accessCov);
+		
+		session.setFocus("risk assessment");
+
+		session.fireAllRules();
+		
+		System.out.println("Insurance Factor: " + driverMale.getInsuranceFactor());
+		System.out.println("Is Approved     : " + policy.isApproved());
+		System.out.println("Insurance Price :" + policy.getInsurancePrice());
+		
+		
+		
+		
+	}
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/InsuranceServlet.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/InsuranceServlet.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/java/org/acme/insurance/web/InsuranceServlet.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,50 @@
+package org.acme.insurance.web;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Servlet implementation class for Servlet: InsuranceServlet
+ * 
+ */
+public class InsuranceServlet extends javax.servlet.http.HttpServlet implements
+		javax.servlet.Servlet {
+	static final long serialVersionUID = 1L;
+
+	/*
+	 * (non-Java-doc)
+	 * 
+	 * @see javax.servlet.http.HttpServlet#HttpServlet()
+	 */
+	public InsuranceServlet() {
+		super();
+	}
+
+	protected void doGet(HttpServletRequest request,
+			HttpServletResponse response) throws ServletException, IOException {
+
+		DroolsBusiness business = new DroolsBusiness();
+		try {
+			business.execute(request);
+
+			String redirectURL = "index.jsp";
+			redirectURL += "?calculo=sim";
+			redirectURL += "&aprovado=" + business.isApproved();
+			redirectURL += "&fatorrisco=" + business.getRiskFactor();
+			redirectURL += "&base=" + business.getBasePrice();
+			redirectURL += "&valor=" + business.getInsurancePrice();
+			
+			response.sendRedirect(redirectURL);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	protected void doPost(HttpServletRequest request,
+			HttpServletResponse response) throws ServletException, IOException {
+		// TODO Auto-generated method stub
+	}
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/approval.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/approval.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/approval.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,25 @@
+package org.acme.insurance;
+
+rule "approve"
+	agenda-group "risk assessment"
+	salience -1
+	when
+		not Rejection()
+		$policy : Policy( approved == false )
+	then
+		System.out.println("approve: " + $policy.getInsurancePrice() );	
+		$policy.setApproved(true);
+		update($policy);
+		drools.setFocus("insurancecalcule");
+end
+
+rule "rejection"
+	agenda-group "rejection"
+	auto-focus 
+	when
+		Rejection()
+	then
+		drools.halt();
+		System.out.println("rejection: ");
+end
+

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/calculateInsurance.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/calculateInsurance.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/calculateInsurance.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,32 @@
+#created on: Aug 14, 2007
+package org.acme.insurance
+
+// After approved insurance calcule the value
+rule "Insurance extra itens percent"
+	agenda-group "insurancecalcule"
+	salience 20
+	when
+		not Rejection()	
+		driver : Driver ( driverID : id )
+		access : AccessoriesCoverage ( driverId == driverID)
+		policy : Policy( approved == true )
+	then
+		policy.setInsurancePrice( policy.getInsurancePrice() + 
+			(access.getAlarmSystemValue() * 0.10) + 
+			(access.getArmorValue() * 0.20) +
+			(access.getSoundSystemValue() * 0.30 ));
+			
+		System.out.println("Insurance extra itens percent: " + policy.getInsurancePrice() );					
+end
+
+rule "Insurance Calcule"
+	agenda-group "insurancecalcule"
+	salience 10
+	when
+		not Rejection()	
+		driver : Driver()
+		policy : Policy( approved == true )
+	then
+		policy.setInsurancePrice(policy.getBasePrice() * driver.getInsuranceFactor() + policy.getInsurancePrice());		
+		System.out.println("Insurance Calcule: " + policy.getInsurancePrice() );		
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/raw.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/raw.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/approval/raw.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,124 @@
+package org.acme.insurance
+
+import org.acme.insurance.base.Rejection;
+import org.acme.insurance.base.Policy;
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.DriverAdditionalInfo;
+import org.acme.insurance.base.AccessoriesCoverage;
+import org.acme.insurance.base.SupplementalInfo;
+
+
+rule "Driver is underage"
+	agenda-group "risk assessment"
+	when
+		not Rejection()	 
+		driver : Driver ( age < 18)
+	then
+		driver.updateInsuranceFactor(0.0);
+		insert(new Rejection("Driver is Underage"));
+		System.out.println("Driver is Underage");
+end
+
+
+rule "New licenced Driver"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( licenceYears < 3 )
+	then
+		driver.updateInsuranceFactor(1.2);
+		System.out.println("New Licenced driver " + driver.getInsuranceFactor());		
+end
+
+rule "Driver Single Young Male Driver factor"
+	agenda-group "risk assessment"
+	when
+		driver : Driver( genre == Driver.MALE, age < 25, maritalState == Driver.SINGLE )
+	then 
+		driver.updateInsuranceFactor(1.6);
+		System.out.println("Driver Single Young Male Driver factor: " + driver.getInsuranceFactor());
+end
+
+rule "Driver Mature Married With Young Child factor"
+	agenda-group "risk assessment"
+	when
+		driver : Driver( genre == Driver.MALE, age > 40, maritalState == Driver.MARRIED, hasChildren == true )
+	then 
+		driver.updateInsuranceFactor(1.5);
+		System.out.println("Driver Mature Married With Young Child factor: " + driver.getInsuranceFactor());
+end
+
+rule "Priory Claimed Driver"
+	agenda-group "risk assessment"
+	when
+		$driver : Driver ( $prior : priorClaims > 2 )
+	then
+		$driver.updateInsuranceFactor((0.2 * $prior) + 1);
+		System.out.println("Priory Claimed Driver + 20% for each previous problem " + $driver.getInsuranceFactor());		
+end
+
+rule "Day Vehicle Place"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		daddit : DriverAdditionalInfo ( driverId == driverID, dayVehiclePlace == DriverAdditionalInfo.STREET ) 
+	then
+		driver.updateInsuranceFactor( 1.15 );
+		System.out.println("Day Vehicle Place: " + driver.getInsuranceFactor());		
+end
+
+rule "Night Vehicle Place"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		daddit : DriverAdditionalInfo ( driverId == driverID, nightVehiclePlace  == DriverAdditionalInfo.STREET ) 
+	then
+		driver.updateInsuranceFactor(1.44); // streets are very dangerous dangerous at night ;) 
+		System.out.println("Night Vehicle Place: " + driver.getInsuranceFactor());		
+end
+
+// Supplemental itens insurance 
+
+rule "Driver wants an extra Car"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, extraCar  == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants an extra Car: " + driver.getInsuranceFactor());		
+end
+
+rule "Driver wants extra assistence"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, extraAssistence   == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants extra assistence: " + driver.getInsuranceFactor());		
+end
+
+
+rule "Driver wants glass coverage"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, glassCoverage  == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants glass coverage: " + driver.getInsuranceFactor());		
+end
+
+rule "Driver wants non related expenses coverage"
+	agenda-group "risk assessment"
+	when
+		driver : Driver ( driverID : id )
+		supple : SupplementalInfo ( driverId == driverID, nonRelatedExpenses  == true) 
+
+	then
+		driver.updateInsuranceFactor( 1.05 );
+		System.out.println("Driver wants non related expenses coverage: " + driver.getInsuranceFactor());		
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/Marginal-age.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/Marginal-age.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/Marginal-age.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,17 @@
+package org.acme.insurance
+expander acme.dsl
+
+#
+# Sometimes it may make sense to manage one rule per file.
+#
+
+rule "Driver is in marginal age" 	
+ 	#remember, don't leave any blank lines in between expressions
+	when
+		There is a Driver
+			- age is between 18 and 24 years old
+			- has had more than 1 prior claims
+		Policy type is 'COMPREHENSIVE'
+	then
+		Reject Policy with explanation : 'No accidents allowed if in marginal age group'
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/acme.dsl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/acme.dsl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/acme.dsl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,13 @@
+[condition][]There is a Driver=Driver()
+[condition][]- age less than {age} years old=age < {age}
+[condition][]- age is equal to {age} years old=age == {age}
+[condition][]- age greater than {age} years old=age > {age}
+[condition][]- has had more than {number} prior claims=priorClaims > {number}
+[condition][]- has a location risk profile of '{risk}'=locationRiskProfile == "{risk}"
+[condition][]- age is at least {age}=age >= {age}
+[condition][]- age is between {lower} and {upper} years old=age >= {lower}, age <= {upper}
+[condition][]- has had exactly {number} prior claims=priorClaims ==  {number}
+[condition][]Policy type is '{type}'=Policy(type ==  "{type}")
+[consequence][]Reject Policy with explanation : '{reason}'=insert(new Rejection("{reason}"));
+[condition][]Policy has not been rejected=not Rejection()
+[consequence][]Approve Policy with the reason : '{reason}'=insert(new Approve("{reason}"));

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/approvalDSL.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/approvalDSL.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/approvalDSL.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,101 @@
+#created on: 23/05/2006
+package org.acme.insurance
+expander acme.dsl
+
+#
+# These rules are mostly "negative" in the sense that
+# a driver has to not be rejected. There is 
+# one rule that allows immediate approval however.
+#
+
+rule "Driver has had too many accidents"
+	
+	when 
+		There is a Driver
+			- has had more than 3 prior claims
+	then 
+		Reject Policy with explanation : 'Too many accidents'
+end 
+
+
+rule "Driver is 45"
+	
+	when 
+		There is a Driver
+			- age is equal to 45 years old
+	then 
+		Reject Policy with explanation : 'Too old'
+end 
+
+
+rule "Driver is underage"
+
+	when
+		There is a Driver
+			- age less than 18 years old
+	then 		
+		Reject Policy with explanation : 'Driver is underage. Try another insurer'
+		
+end
+
+rule "Driver is in marginal age" 	
+	when
+		There is a Driver
+			- age is between 18 and 24 years old
+			- has had more than 1 prior claims
+		Policy type is 'COMPREHENSIVE'
+	then
+		Reject Policy with explanation : 'No accidents allowed if in marginal age group'
+end
+
+rule "Driver in unsafe area for marginal age"
+	when
+		Policy type is 'COMPREHENSIVE'	
+		There is a Driver
+			- age less than 25 years old
+			- has a location risk profile of 'HIGH'				
+	then
+		Reject Policy with explanation : 'Marginal age driver in high risk area'		
+end
+
+rule "Driver in unsafe area with priors"
+	when
+		There is a Driver
+			- has a location risk profile of 'MED'
+			- age less than 25 years old
+			- has had more than 1 prior claims
+		Policy type is 'COMPREHENSIVE'
+		
+	then
+		Reject Policy with explanation : 'Driver in that area is too risky - given past accidents and age.'
+end
+
+rule "Driver unsafe for third party"
+	when
+		Policy type is 'THIRD_PARTY'		
+		There is a Driver
+			- has had more than 2 prior claims
+	then		
+		Reject Policy with explanation : 'Too many priors for third party'
+		
+end
+ 
+rule "Driver in bad area for theft"
+	when 
+		Policy type is 'FIRE_THEFT'
+		There is a Driver
+			- has a location risk profile of 'HIGH'
+	then		
+		Reject Policy with explanation : 'Unsafe area for theft'				
+end
+
+rule "Quick approval - safe driver, any policy type"
+	when		
+		Policy has not been rejected	
+		There is a Driver
+			- age is at least 30
+			- has had exactly 0 prior claims
+	then
+		Approve Policy with the reason : 'Driver is safe and mature.'
+end
+

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/technical.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/technical.drl	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/rules/legacy/technical.drl	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,44 @@
+package org.acme.insurance
+
+rule "DemoRule"
+	salience 10
+	dialect "mvel"
+	when
+	d : Driver( age > 65 )
+	then
+	insert(new Rejection(" too old "));
+end
+
+rule "Approve policy affirmative"
+	salience 100 #this can short circuit any processing
+	when
+		a : Approve()
+		p : Policy()
+	then
+		p.setApproved(true);
+		System.out.println("APPROVED: " 
+								+ a.getReason());
+		drools.halt();
+end
+
+rule "Approve if not rejected"
+	salience -100 #approve if there are no objections
+	when
+		not Rejection() 		
+		p : Policy(approved == false)
+	then
+		System.out.println("APPROVED: due to no objections."); 
+		p.setApproved(true);
+end
+
+rule "Reject application"
+	salience 100 #this can short circuit any other processing
+	when
+		r : Rejection()
+		d : Driver()
+		p : Policy()
+	then
+		System.out.println("REJECTED: " + r.getReason());
+		p.setApproved(false);
+		retract(d); #effectively halts the rules
+end

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverAdditionalInfoTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverAdditionalInfoTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverAdditionalInfoTest.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,71 @@
+package org.acme.insurance.test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.DriverAdditionalInfo;
+import org.acme.insurance.base.Policy;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+
+public class DriverAdditionalInfoTest extends TestCase {
+    private StatefulSession session;
+    private Date            defaultBirthday;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        session = (new InsuranceTestHelper()).getSession();
+        
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        defaultBirthday = df.parse( "18/09/1983" );
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        session.dispose();
+    }
+
+    public void testDriveVehiclePlace() throws DroolsParserException,
+                                          IOException,
+                                          Exception {
+
+        Driver driver = new Driver();
+        
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+        
+        DriverAdditionalInfo driverAdditional = new DriverAdditionalInfo();
+        driverAdditional.setDayVehiclePlace( DriverAdditionalInfo.STREET );
+        driverAdditional.setNightVehiclePlace( DriverAdditionalInfo.STREET );
+        driverAdditional.setDriverId( driver.getId() );
+        
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( driverAdditional );
+        
+        session.fireAllRules();
+
+        assertEquals( 1.656 , driver.getInsuranceFactor() );
+        assertTrue( policy.isApproved() );
+    }
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/DriverTest.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,189 @@
+package org.acme.insurance.test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.Policy;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+
+public class DriverTest extends TestCase {
+    private StatefulSession session;
+    private Date            defaultBirthday;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        session = (new InsuranceTestHelper()).getSession();
+        
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        defaultBirthday = df.parse( "18/09/1983" );
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        session.dispose();
+    }
+
+    public void testDriverGenreFactor() throws DroolsParserException,
+                                       IOException,
+                                       Exception {
+        Driver driverMale = new Driver();
+        driverMale.setGenre( Driver.MALE );
+        driverMale.setBirhDate( defaultBirthday );
+        driverMale.setMaritalState( Driver.SINGLE );
+        driverMale.setLicenceYears( 2 );
+
+        Driver driverFemale = new Driver();
+        driverFemale.setGenre( Driver.FEMALE );
+        driverFemale.setBirhDate( defaultBirthday );
+        driverFemale.setMaritalState( Driver.MARRIED );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+        session.insert( policy );
+
+        session.insert( driverMale );
+        session.fireAllRules();
+
+        assertEquals( 1.92,
+                      driverMale.getInsuranceFactor() );
+
+        policy = new Policy();
+        policy.setApproved( false );
+        session.insert( policy );
+
+        session.insert( driverFemale );
+        session.fireAllRules();
+
+        assertEquals( 1.0,
+                      driverFemale.getInsuranceFactor() );
+
+    }
+
+    public void testMatureDriverWithChildFactor() throws DroolsParserException,
+                                                 IOException,
+                                                 Exception {
+
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        defaultBirthday = df.parse( "18/09/1959" );
+
+        Driver driverMale = new Driver();
+        driverMale.setGenre( Driver.MALE );
+        driverMale.setBirhDate( defaultBirthday );
+        driverMale.setMaritalState( Driver.MARRIED );
+        driverMale.setHasChildren( true );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+        session.insert( policy );
+
+        session.insert( driverMale );
+        session.fireAllRules();
+
+        assertEquals( 1.5,
+                      driverMale.getInsuranceFactor() );
+
+    }
+
+    public void testDriverUnderAgeRejection() throws ParseException {
+        Driver driver = new Driver();
+
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        Date birhDate = df.parse( "18/09/1996" );
+
+        driver.setGenre( Driver.MALE );
+        driver.setMaritalState( Driver.SINGLE );
+        driver.setHasChildren( false );
+        driver.setBirhDate( birhDate );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( driver );
+        session.insert( policy );
+
+        session.fireAllRules();
+
+        assertEquals( 0.0,
+                      driver.getInsuranceFactor() );
+
+        assertFalse( policy.isApproved() );
+    }
+
+    public void testYoungProblematicDriver() {
+        Driver driverMale = new Driver();
+        driverMale.setGenre( Driver.MALE );
+        driverMale.setBirhDate( defaultBirthday );
+        driverMale.setMaritalState( Driver.SINGLE );
+        driverMale.setLicenceYears( 2 );
+        driverMale.setPriorClaims( 5 );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+        session.insert( policy );
+
+        session.insert( driverMale );
+        session.fireAllRules();
+
+        assertEquals( 3.84,
+                      driverMale.getInsuranceFactor() );
+
+    }
+
+    public void testEmptyDriver() {
+        Driver driver = new Driver();
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        try {
+            session.insert( driver );
+            session.insert( policy );
+            session.fireAllRules();
+            fail("should throw exception");
+        } catch ( Exception e ) {
+            // OK 
+        }
+    }
+
+    public void testProblematicDriver() throws ParseException {
+        Driver driver = new Driver();
+
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        Date birhDate = df.parse( "18/09/1960" );
+
+        driver.setGenre( Driver.MALE );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setHasChildren( false );
+        driver.setBirhDate( birhDate );
+        driver.setPriorClaims( 5 );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( driver );
+        session.insert( policy );
+
+        session.fireAllRules();
+
+        assertEquals( 2.0,
+                      driver.getInsuranceFactor() );
+
+        assertTrue( policy.isApproved() );
+    }
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceCalculateTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceCalculateTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceCalculateTest.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,156 @@
+package org.acme.insurance.test;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.acme.insurance.base.AccessoriesCoverage;
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.DriverAdditionalInfo;
+import org.acme.insurance.base.Policy;
+import org.acme.insurance.base.SupplementalInfo;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.DroolsParserException;
+
+public class InsuranceCalculateTest extends TestCase {
+    private StatefulSession session;
+    private Date            defaultBirthday;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        session = (new InsuranceTestHelper()).getSession();
+        
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        defaultBirthday = df.parse( "18/09/1983" );
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        session.dispose();
+    }
+
+    public void testHasExtraCar() throws DroolsParserException,
+                                 IOException,
+                                 Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.SINGLE );
+        driver.setLicenceYears( 2 );
+        driver.setId( 400 );
+
+        SupplementalInfo suppinfo = new SupplementalInfo();
+
+        suppinfo.setExtraCar( true );
+        suppinfo.setExtraAssistence( true );
+        suppinfo.setGlassCoverage( true );
+        suppinfo.setNonRelatedExpenses( true );
+        suppinfo.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        policy.setBasePrice( 1000.00 );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( suppinfo );
+
+        session.fireAllRules();
+
+        assertEquals( 2.333772,
+                      driver.getInsuranceFactor() );
+
+        assertTrue( policy.isApproved() );
+
+        assertEquals( 2333.7720000000004,
+                      policy.getInsurancePrice() );
+    }
+
+    public void testDriveVehiclePlace() throws DroolsParserException,
+                                       IOException,
+                                       Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        DriverAdditionalInfo driverAdditional = new DriverAdditionalInfo();
+        driverAdditional.setDayVehiclePlace( DriverAdditionalInfo.STREET );
+        driverAdditional.setNightVehiclePlace( DriverAdditionalInfo.STREET );
+        driverAdditional.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+        policy.setBasePrice( 500.00 );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( driverAdditional );
+
+        session.fireAllRules();
+
+        assertEquals( 1.656,
+                      driver.getInsuranceFactor() );
+
+        assertTrue( policy.isApproved() );
+        assertEquals( 828.00,
+                      policy.getInsurancePrice() );
+    }
+
+    public void testAccessoriesValue() throws DroolsParserException,
+                                      IOException,
+                                      Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        DriverAdditionalInfo driverAdditional = new DriverAdditionalInfo();
+        driverAdditional.setDayVehiclePlace( DriverAdditionalInfo.STREET );
+        driverAdditional.setNightVehiclePlace( DriverAdditionalInfo.STREET );
+        driverAdditional.setDriverId( driver.getId() );
+        
+        AccessoriesCoverage accessories = new AccessoriesCoverage();
+        
+        accessories.setAlarmSystemValue( 350.00 );
+        accessories.setArmorValue( 1500.00 );
+        accessories.setSoundSystemValue( 700.00 );
+        accessories.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+        policy.setBasePrice( 500.00 );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( driverAdditional );
+        session.insert( accessories );
+
+        session.fireAllRules();
+
+        assertEquals( 1.656,
+                      driver.getInsuranceFactor() );
+
+        assertTrue( policy.isApproved() );
+        assertEquals( 1373.00,
+                      policy.getInsurancePrice() );
+    }
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceTestHelper.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceTestHelper.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/InsuranceTestHelper.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,53 @@
+package org.acme.insurance.test;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.audit.WorkingMemoryLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class InsuranceTestHelper {
+	private RuleBase rulebase;
+	private StatefulSession session;
+
+	public StatefulSession getSession() {
+		try { 
+			rulebase = loadRuleBase();
+			session = rulebase.newStatefulSession();
+			
+			session.setFocus("risk assessment");
+			
+			return session;
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	private RuleBase loadRuleBase() throws Exception {
+
+		PackageBuilder builder = new PackageBuilder();
+		builder.addPackageFromDrl(getTechnicalRules("/approval/raw.drl"));
+		builder.addPackageFromDrl(getTechnicalRules("/approval/approval.drl"));
+		builder.addPackageFromDrl(getTechnicalRules("/approval/calculateInsurance.drl"));
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage(builder.getPackage());
+		return ruleBase;
+	}
+
+	private Reader getTechnicalRules(String name) {
+
+		InputStream stream = this.getClass().getResourceAsStream(
+				name);
+		
+		return new InputStreamReader(stream);
+
+	}
+
+}

Added: labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/SupplementalInfoTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/SupplementalInfoTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-insurance/src/test/org/acme/insurance/test/SupplementalInfoTest.java	2007-08-15 03:05:55 UTC (rev 14235)
@@ -0,0 +1,197 @@
+package org.acme.insurance.test;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.acme.insurance.base.Driver;
+import org.acme.insurance.base.Policy;
+import org.acme.insurance.base.SupplementalInfo;
+import org.drools.StatefulSession;
+import org.drools.compiler.DroolsParserException;
+
+public class SupplementalInfoTest extends TestCase {
+    private StatefulSession session;
+    private Date            defaultBirthday;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        session = (new InsuranceTestHelper()).getSession();
+        
+        SimpleDateFormat df = new java.text.SimpleDateFormat( "dd/MM/yyyy" );
+        defaultBirthday = df.parse( "18/09/1983" );
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        session.dispose();
+    }
+
+    public void testHasExtraCar() throws DroolsParserException,
+                                 IOException,
+                                 Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        SupplementalInfo suppinfo = new SupplementalInfo();
+
+        suppinfo.setExtraCar( true );
+        suppinfo.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( suppinfo );
+
+        session.setFocus("risk assessment");
+        session.fireAllRules();
+
+        assertEquals( 1.05,
+                      driver.getInsuranceFactor() );
+        assertTrue( policy.isApproved() );
+    }
+
+    public void testeHasExtraAssistence() throws DroolsParserException,
+                                         IOException,
+                                         Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        SupplementalInfo suppinfo = new SupplementalInfo();
+
+        suppinfo.setExtraAssistence( true );
+        suppinfo.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( suppinfo );
+
+        session.fireAllRules();
+
+        assertEquals( 1.05,
+                      driver.getInsuranceFactor() );
+        assertTrue( policy.isApproved() );
+    }
+
+    public void testeGlassCoverage() throws DroolsParserException,
+                                    IOException,
+                                    Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        SupplementalInfo suppinfo = new SupplementalInfo();
+
+        suppinfo.setGlassCoverage( true );
+        suppinfo.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( suppinfo );
+
+        session.fireAllRules();
+
+        assertEquals( 1.05,
+                      driver.getInsuranceFactor() );
+        assertTrue( policy.isApproved() );
+    }
+
+    public void testeNonRelatedExpenses() throws DroolsParserException,
+                                         IOException,
+                                         Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        SupplementalInfo suppinfo = new SupplementalInfo();
+
+        suppinfo.setNonRelatedExpenses( true );
+        suppinfo.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( suppinfo );
+
+        session.fireAllRules();
+
+        assertEquals( 1.05,
+                      driver.getInsuranceFactor() );
+        assertTrue( policy.isApproved() );
+    }
+
+    public void testeSupplementalInfoMix() throws DroolsParserException,
+                                         IOException,
+                                         Exception {
+
+        Driver driver = new Driver();
+
+        driver.setGenre( Driver.MALE );
+        driver.setBirhDate( defaultBirthday );
+        driver.setMaritalState( Driver.MARRIED );
+        driver.setLicenceYears( 10 );
+        driver.setId( 400 );
+
+        SupplementalInfo suppinfo = new SupplementalInfo();
+
+        suppinfo.setNonRelatedExpenses( true );
+        suppinfo.setGlassCoverage( true );
+        suppinfo.setExtraAssistence( true );
+        suppinfo.setExtraCar( true );
+        
+        suppinfo.setDriverId( driver.getId() );
+
+        Policy policy = new Policy();
+        policy.setApproved( false );
+
+        session.insert( policy );
+        session.insert( driver );
+        session.insert( suppinfo );
+
+        session.fireAllRules();
+
+        assertEquals( 1.2155062500000002,
+                      driver.getInsuranceFactor());
+        
+
+        assertTrue( policy.isApproved() );
+    }
+
+}




More information about the jboss-svn-commits mailing list