summaryrefslogtreecommitdiff
path: root/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test')
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/booleanexpr/BooleanExprTests.java439
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Address.java84
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Car.java84
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Family.java282
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyFactory.java85
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyPackage.java707
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Person.java160
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Sexe.java215
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/WealthyFamily.java83
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/AddressImpl.java204
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/CarImpl.java204
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyFactoryImpl.java197
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyImpl.java604
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyPackageImpl.java437
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/PersonImpl.java352
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/WealthyFamilyImpl.java200
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilyAdapterFactory.java199
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilySwitch.java202
18 files changed, 4738 insertions, 0 deletions
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/booleanexpr/BooleanExprTests.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/booleanexpr/BooleanExprTests.java
new file mode 100755
index 0000000..60ca14d
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/booleanexpr/BooleanExprTests.java
@@ -0,0 +1,439 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.booleanexpr;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.genivi.booleanexpr.util.FilterExprUtil;
+import org.genivi.family.Address;
+import org.genivi.family.Family;
+import org.genivi.family.FamilyFactory;
+import org.genivi.family.Person;
+import org.genivi.family.Sexe;
+import org.genivi.family.WealthyFamily;
+import org.genivi.trafficinfo.demo.logging.EclipseConsoleFormatter;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * About the tests:
+ * - Literals and attributes are implicitly tested in predicate tests
+ */
+public class BooleanExprTests {
+ private final static Logger LOGGER = Logger.getLogger(BooleanExprTests.class.getName());
+ private static final FamilyFactory FAMILY_FACTORY = FamilyFactory.eINSTANCE;
+
+ private static final String FAMILY_SURNAME = "Smith";
+ private static final int FAMILY_NUMBER_OF_PETS = 2;
+ private static final boolean FAMILY_HAS_SWIMMINGPOOL = false;
+ private static final String FAMILY_PERSON_1_FIRSTNAME = "Jim";
+ private static final Sexe FAMILY_PERSON_1_SEXE = Sexe.MALE;
+ private static final String FAMILY_PERSON_2_FIRSTNAME = "John";
+ private static final Sexe FAMILY_PERSON_2_SEXE = Sexe.MALE;
+ private static final String FAMILY_ADDRESS_STREET = "PacificHwy";
+ private static final String[] FAMILY_FAVORITE_HOLIDAY_DESTINATIONS = {
+ "Egypt", "Austria"
+ };
+
+ private static final String WEALTHY_FAMILY_SURNAME = "Slim";
+ private static final boolean WEALTHY_FAMILY_HAS_SWIMMINGPOOL = true;
+ private static final int WEALTHY_FAMILY_FORBES_RANKING = 1;
+
+ private static Family family;
+ private static Family wealthyFamily;
+ private final static Level logLevel = Level.SEVERE;
+
+ @BeforeClass
+ public static void setUp() {
+ logSetup();
+
+ family = createFamily();
+ wealthyFamily = createWealthyFamily();
+ LOGGER.info("family = " + family);
+ }
+
+ @Test
+ public void testUnaryExpression() {
+ String expressionString;
+ BooleanExpression expression;
+
+ expressionString = "not (@surname != \"" + FAMILY_SURNAME + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "not (@surname != \"Adams\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+ }
+
+ @Test
+ public void testDyadicExpression() {
+ String expressionString;
+ BooleanExpression expression;
+
+ expressionString = "(@surname == \"" + FAMILY_SURNAME + "\") and (@numberOfPets == " + FAMILY_NUMBER_OF_PETS + ")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "(@surname != \"" + FAMILY_SURNAME + "\") and (@numberOfPets == " + FAMILY_NUMBER_OF_PETS + ")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "(@surname != \"" + FAMILY_SURNAME + "\") or (@numberOfPets == " + FAMILY_NUMBER_OF_PETS + ")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+ }
+
+ @Test
+ public void testComparisonPredicate() {
+ String expressionString;
+ BooleanExpression expression;
+
+ // Test all supported operations for type String (only EQUAL, NOT_EQUAL)
+ expressionString = "@surname == \"" + FAMILY_SURNAME + "\"";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+
+ expressionString = "@surname == \"Adams\"";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@surname != \"" + FAMILY_SURNAME + "\"";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@surname != \"Adams\"";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ // Test all supported operations for type Integer (all operations)
+ expressionString = "@numberOfPets == " + FAMILY_NUMBER_OF_PETS;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets == " + 99;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets != " + 99;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets != " + FAMILY_NUMBER_OF_PETS;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets > " + -1;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets > " + FAMILY_NUMBER_OF_PETS;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets >= " + -1;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets >= " + (FAMILY_NUMBER_OF_PETS + 1);
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets < " + 1000;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets < " + FAMILY_NUMBER_OF_PETS;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets <= " + FAMILY_NUMBER_OF_PETS;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets <= " + (FAMILY_NUMBER_OF_PETS - 1);
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ // Test all supported operations for type boolean (only EQUAL, NOT_EQUAL)
+ expressionString = "@hasASwimmingPool == " + FAMILY_HAS_SWIMMINGPOOL;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@hasASwimmingPool == " + !FAMILY_HAS_SWIMMINGPOOL;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@hasASwimmingPool != " + !FAMILY_HAS_SWIMMINGPOOL;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@hasASwimmingPool != " + FAMILY_HAS_SWIMMINGPOOL;
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ }
+
+ @Test
+ public void testSubClassPredicate() {
+ String expressionString;
+ BooleanExpression expression;
+
+ expressionString = "@address (@street == \"" + FAMILY_ADDRESS_STREET + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@address (@street != \"" + FAMILY_ADDRESS_STREET + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+ }
+
+ @Test
+ public void testDownCastPredicate() {
+ String expressionString;
+ BooleanExpression expression;
+
+ expressionString = "[@WealthyFamily](@forbesRanking < 100)";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(wealthyFamily));
+
+
+ expressionString = "[@WealthyFamily](@forbesRanking != 1)";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(wealthyFamily));
+ }
+
+ @Test
+ public void testIsSetPredicate() {
+ String expressionString;
+ BooleanExpression expression;
+
+ expressionString = "isSet @numberOfPets";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+ assertFalse("Wrong evaluation result", expression.evaluate(wealthyFamily));
+ }
+
+ @Test
+ public void testInPredicate() {
+ String expressionString;
+ BooleanExpression expression;
+
+ expressionString = "@surname in [\"Dummy\", \"Smith\", \"Dummy2\"]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@surname in [\"Dummy\", \"Dummy3\", \"Dummy2\"]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@surname not-in [\"Dummy\", \"Smith\", \"Dummy2\"]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@surname not-in [\"Dummy\", \"Dummy3\", \"Dummy2\"]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets in [2, 3, 4]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets in [4, 3, 2]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets in [4, 3, 12]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets not-in [2, 3, 4]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets not-in [4, 3, 2]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@numberOfPets not-in [4, 3, 12]";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+ }
+
+ @Test
+ public void testMultiplicityPredicate() {
+ String expressionString;
+ BooleanExpression expression;
+
+ // ANY
+ expressionString = "#any @members (@firstName == \"" + FAMILY_PERSON_1_FIRSTNAME + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "#any @members (@firstName == \"Susan\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "#any @favoriteHolidayDestinations (@ in [\"Netherlands\", \"Egypt\"])";
+ System.out.println(expressionString);
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ // ALL
+ expressionString = "#all @members (@sexe == " + Sexe.MALE.getValue() + ")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "#all @members (@firstName == \"" + FAMILY_PERSON_1_FIRSTNAME + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ // NONE
+ expressionString = "#none @members (@sexe == " + Sexe.FEMALE.getValue() + ")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "#none @members (@sexe == " + Sexe.MALE.getValue() + ")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ // MetaOperator
+ expressionString = "@members^size == 2";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@members^size == 4";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+
+ // index
+ expressionString = "@members[1] (@firstName == \"" + FAMILY_PERSON_2_FIRSTNAME + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertTrue("Wrong evaluation result", expression.evaluate(family));
+
+ expressionString = "@members[0] (@firstName == \"" + FAMILY_PERSON_2_FIRSTNAME + "\")";
+ expression = FilterExprUtil.parseFilterExpression(expressionString);
+ assertEquals("Error in expression translation", expressionString, expression.toString());
+ assertFalse("Wrong evaluation result", expression.evaluate(family));
+ }
+
+ private static void logSetup() {
+ // Create Logger
+ Logger logger = Logger.getLogger("");
+ logger.setLevel(logLevel);
+
+ Handler consoleHandler = null;
+ for (Handler handler: logger.getHandlers()) {
+ if (handler.getClass().getName().equals("java.util.logging.ConsoleHandler")) {
+ consoleHandler = handler;
+ break;
+ }
+ }
+ consoleHandler.setFormatter(new EclipseConsoleFormatter());
+ consoleHandler.setLevel(Level.INFO);
+ }
+
+ private static Family createFamily() {
+ Family family = FAMILY_FACTORY.createFamily();
+
+ family.setSurname(FAMILY_SURNAME);
+ family.setNumberOfPets(FAMILY_NUMBER_OF_PETS);
+ family.setHasASwimmingPool(FAMILY_HAS_SWIMMINGPOOL);
+
+ Person person;
+
+ person = FAMILY_FACTORY.createPerson();
+ person.setFirstName(FAMILY_PERSON_1_FIRSTNAME);
+ person.setSexe(FAMILY_PERSON_1_SEXE);
+ family.getMembers().add(person);
+
+ person = FAMILY_FACTORY.createPerson();
+ person.setFirstName(FAMILY_PERSON_2_FIRSTNAME);
+ person.setSexe(FAMILY_PERSON_2_SEXE);
+ family.getMembers().add(person);
+
+ Address address = FAMILY_FACTORY.createAddress();
+ address.setStreet(FAMILY_ADDRESS_STREET);
+ family.setAddress(address);
+
+ for (String destination: FAMILY_FAVORITE_HOLIDAY_DESTINATIONS) {
+ family.getFavoriteHolidayDestinations().add(destination);
+ }
+
+ return family;
+ }
+
+ private static Family createWealthyFamily() {
+ WealthyFamily family = FAMILY_FACTORY.createWealthyFamily();
+
+ family.setSurname(WEALTHY_FAMILY_SURNAME);
+ family.setHasASwimmingPool(WEALTHY_FAMILY_HAS_SWIMMINGPOOL);
+ family.setForbesRanking(WEALTHY_FAMILY_FORBES_RANKING);
+
+ return family;
+ }
+}
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Address.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Address.java
new file mode 100755
index 0000000..e004ca8
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Address.java
@@ -0,0 +1,84 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Address</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.genivi.family.Address#getStreet <em>Street</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.genivi.family.FamilyPackage#getAddress()
+ * @model
+ * @generated
+ */
+public interface Address extends EObject {
+ /**
+ * Returns the value of the '<em><b>Street</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Street</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Street</em>' attribute.
+ * @see #isSetStreet()
+ * @see #unsetStreet()
+ * @see #setStreet(String)
+ * @see org.genivi.family.FamilyPackage#getAddress_Street()
+ * @model unsettable="true"
+ * @generated
+ */
+ String getStreet();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Address#getStreet <em>Street</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Street</em>' attribute.
+ * @see #isSetStreet()
+ * @see #unsetStreet()
+ * @see #getStreet()
+ * @generated
+ */
+ void setStreet(String value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Address#getStreet <em>Street</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetStreet()
+ * @see #getStreet()
+ * @see #setStreet(String)
+ * @generated
+ */
+ void unsetStreet();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Address#getStreet <em>Street</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Street</em>' attribute is set.
+ * @see #unsetStreet()
+ * @see #getStreet()
+ * @see #setStreet(String)
+ * @generated
+ */
+ boolean isSetStreet();
+
+} // Address
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Car.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Car.java
new file mode 100755
index 0000000..09c82fc
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Car.java
@@ -0,0 +1,84 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Car</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.genivi.family.Car#getNumberOfSeats <em>Number Of Seats</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.genivi.family.FamilyPackage#getCar()
+ * @model
+ * @generated
+ */
+public interface Car extends EObject {
+ /**
+ * Returns the value of the '<em><b>Number Of Seats</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Number Of Seats</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Number Of Seats</em>' attribute.
+ * @see #isSetNumberOfSeats()
+ * @see #unsetNumberOfSeats()
+ * @see #setNumberOfSeats(Integer)
+ * @see org.genivi.family.FamilyPackage#getCar_NumberOfSeats()
+ * @model unsettable="true"
+ * @generated
+ */
+ Integer getNumberOfSeats();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Car#getNumberOfSeats <em>Number Of Seats</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Number Of Seats</em>' attribute.
+ * @see #isSetNumberOfSeats()
+ * @see #unsetNumberOfSeats()
+ * @see #getNumberOfSeats()
+ * @generated
+ */
+ void setNumberOfSeats(Integer value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Car#getNumberOfSeats <em>Number Of Seats</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetNumberOfSeats()
+ * @see #getNumberOfSeats()
+ * @see #setNumberOfSeats(Integer)
+ * @generated
+ */
+ void unsetNumberOfSeats();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Car#getNumberOfSeats <em>Number Of Seats</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Number Of Seats</em>' attribute is set.
+ * @see #unsetNumberOfSeats()
+ * @see #getNumberOfSeats()
+ * @see #setNumberOfSeats(Integer)
+ * @generated
+ */
+ boolean isSetNumberOfSeats();
+
+} // Car
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Family.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Family.java
new file mode 100755
index 0000000..021fdcc
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Family.java
@@ -0,0 +1,282 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Family</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.genivi.family.Family#getMembers <em>Members</em>}</li>
+ * <li>{@link org.genivi.family.Family#getSurname <em>Surname</em>}</li>
+ * <li>{@link org.genivi.family.Family#getNumberOfPets <em>Number Of Pets</em>}</li>
+ * <li>{@link org.genivi.family.Family#isHasASwimmingPool <em>Has ASwimming Pool</em>}</li>
+ * <li>{@link org.genivi.family.Family#getAddress <em>Address</em>}</li>
+ * <li>{@link org.genivi.family.Family#getFavoriteHolidayDestinations <em>Favorite Holiday Destinations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.genivi.family.FamilyPackage#getFamily()
+ * @model
+ * @generated
+ */
+public interface Family extends EObject {
+ /**
+ * Returns the value of the '<em><b>Members</b></em>' containment reference list.
+ * The list contents are of type {@link org.genivi.family.Person}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Members</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Members</em>' containment reference list.
+ * @see org.genivi.family.FamilyPackage#getFamily_Members()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<Person> getMembers();
+
+ /**
+ * Returns the value of the '<em><b>Surname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Surname</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Surname</em>' attribute.
+ * @see #isSetSurname()
+ * @see #unsetSurname()
+ * @see #setSurname(String)
+ * @see org.genivi.family.FamilyPackage#getFamily_Surname()
+ * @model unsettable="true" required="true"
+ * @generated
+ */
+ String getSurname();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Family#getSurname <em>Surname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Surname</em>' attribute.
+ * @see #isSetSurname()
+ * @see #unsetSurname()
+ * @see #getSurname()
+ * @generated
+ */
+ void setSurname(String value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Family#getSurname <em>Surname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetSurname()
+ * @see #getSurname()
+ * @see #setSurname(String)
+ * @generated
+ */
+ void unsetSurname();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Family#getSurname <em>Surname</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Surname</em>' attribute is set.
+ * @see #unsetSurname()
+ * @see #getSurname()
+ * @see #setSurname(String)
+ * @generated
+ */
+ boolean isSetSurname();
+
+ /**
+ * Returns the value of the '<em><b>Number Of Pets</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Number Of Pets</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Number Of Pets</em>' attribute.
+ * @see #isSetNumberOfPets()
+ * @see #unsetNumberOfPets()
+ * @see #setNumberOfPets(int)
+ * @see org.genivi.family.FamilyPackage#getFamily_NumberOfPets()
+ * @model unsettable="true"
+ * @generated
+ */
+ int getNumberOfPets();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Family#getNumberOfPets <em>Number Of Pets</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Number Of Pets</em>' attribute.
+ * @see #isSetNumberOfPets()
+ * @see #unsetNumberOfPets()
+ * @see #getNumberOfPets()
+ * @generated
+ */
+ void setNumberOfPets(int value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Family#getNumberOfPets <em>Number Of Pets</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetNumberOfPets()
+ * @see #getNumberOfPets()
+ * @see #setNumberOfPets(int)
+ * @generated
+ */
+ void unsetNumberOfPets();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Family#getNumberOfPets <em>Number Of Pets</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Number Of Pets</em>' attribute is set.
+ * @see #unsetNumberOfPets()
+ * @see #getNumberOfPets()
+ * @see #setNumberOfPets(int)
+ * @generated
+ */
+ boolean isSetNumberOfPets();
+
+ /**
+ * Returns the value of the '<em><b>Has ASwimming Pool</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Has ASwimming Pool</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Has ASwimming Pool</em>' attribute.
+ * @see #isSetHasASwimmingPool()
+ * @see #unsetHasASwimmingPool()
+ * @see #setHasASwimmingPool(boolean)
+ * @see org.genivi.family.FamilyPackage#getFamily_HasASwimmingPool()
+ * @model unsettable="true"
+ * @generated
+ */
+ boolean isHasASwimmingPool();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Family#isHasASwimmingPool <em>Has ASwimming Pool</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Has ASwimming Pool</em>' attribute.
+ * @see #isSetHasASwimmingPool()
+ * @see #unsetHasASwimmingPool()
+ * @see #isHasASwimmingPool()
+ * @generated
+ */
+ void setHasASwimmingPool(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Family#isHasASwimmingPool <em>Has ASwimming Pool</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetHasASwimmingPool()
+ * @see #isHasASwimmingPool()
+ * @see #setHasASwimmingPool(boolean)
+ * @generated
+ */
+ void unsetHasASwimmingPool();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Family#isHasASwimmingPool <em>Has ASwimming Pool</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Has ASwimming Pool</em>' attribute is set.
+ * @see #unsetHasASwimmingPool()
+ * @see #isHasASwimmingPool()
+ * @see #setHasASwimmingPool(boolean)
+ * @generated
+ */
+ boolean isSetHasASwimmingPool();
+
+ /**
+ * Returns the value of the '<em><b>Address</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Address</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Address</em>' containment reference.
+ * @see #isSetAddress()
+ * @see #unsetAddress()
+ * @see #setAddress(Address)
+ * @see org.genivi.family.FamilyPackage#getFamily_Address()
+ * @model containment="true" unsettable="true"
+ * @generated
+ */
+ Address getAddress();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Family#getAddress <em>Address</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Address</em>' containment reference.
+ * @see #isSetAddress()
+ * @see #unsetAddress()
+ * @see #getAddress()
+ * @generated
+ */
+ void setAddress(Address value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Family#getAddress <em>Address</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetAddress()
+ * @see #getAddress()
+ * @see #setAddress(Address)
+ * @generated
+ */
+ void unsetAddress();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Family#getAddress <em>Address</em>}' containment reference is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Address</em>' containment reference is set.
+ * @see #unsetAddress()
+ * @see #getAddress()
+ * @see #setAddress(Address)
+ * @generated
+ */
+ boolean isSetAddress();
+
+ /**
+ * Returns the value of the '<em><b>Favorite Holiday Destinations</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Favorite Holiday Destinations</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Favorite Holiday Destinations</em>' attribute list.
+ * @see org.genivi.family.FamilyPackage#getFamily_FavoriteHolidayDestinations()
+ * @model
+ * @generated
+ */
+ EList<String> getFavoriteHolidayDestinations();
+
+} // Family
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyFactory.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyFactory.java
new file mode 100755
index 0000000..4208ede
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyFactory.java
@@ -0,0 +1,85 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.FamilyPackage
+ * @generated
+ */
+public interface FamilyFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ FamilyFactory eINSTANCE = org.genivi.family.impl.FamilyFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Family</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Family</em>'.
+ * @generated
+ */
+ Family createFamily();
+
+ /**
+ * Returns a new object of class '<em>Person</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Person</em>'.
+ * @generated
+ */
+ Person createPerson();
+
+ /**
+ * Returns a new object of class '<em>Car</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Car</em>'.
+ * @generated
+ */
+ Car createCar();
+
+ /**
+ * Returns a new object of class '<em>Address</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Address</em>'.
+ * @generated
+ */
+ Address createAddress();
+
+ /**
+ * Returns a new object of class '<em>Wealthy Family</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Wealthy Family</em>'.
+ * @generated
+ */
+ WealthyFamily createWealthyFamily();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ FamilyPackage getFamilyPackage();
+
+} //FamilyFactory
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyPackage.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyPackage.java
new file mode 100755
index 0000000..05b8d31
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/FamilyPackage.java
@@ -0,0 +1,707 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.FamilyFactory
+ * @model kind="package"
+ * annotation="GenModel documentation='Copyright (C) 2013 TomTom International B.V.\r\n\r\nThis Source Code Form is subject to the terms of the Mozilla Public\r\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\r\nfile, You can obtain one at http://mozilla.org/MPL/2.0/.'"
+ * @generated
+ */
+public interface FamilyPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "family";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org.genivi.family";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "family";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ FamilyPackage eINSTANCE = org.genivi.family.impl.FamilyPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.genivi.family.impl.FamilyImpl <em>Family</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.FamilyImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getFamily()
+ * @generated
+ */
+ int FAMILY = 0;
+
+ /**
+ * The feature id for the '<em><b>Members</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY__MEMBERS = 0;
+
+ /**
+ * The feature id for the '<em><b>Surname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY__SURNAME = 1;
+
+ /**
+ * The feature id for the '<em><b>Number Of Pets</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY__NUMBER_OF_PETS = 2;
+
+ /**
+ * The feature id for the '<em><b>Has ASwimming Pool</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY__HAS_ASWIMMING_POOL = 3;
+
+ /**
+ * The feature id for the '<em><b>Address</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY__ADDRESS = 4;
+
+ /**
+ * The feature id for the '<em><b>Favorite Holiday Destinations</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY__FAVORITE_HOLIDAY_DESTINATIONS = 5;
+
+ /**
+ * The number of structural features of the '<em>Family</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAMILY_FEATURE_COUNT = 6;
+
+ /**
+ * The meta object id for the '{@link org.genivi.family.impl.PersonImpl <em>Person</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.PersonImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getPerson()
+ * @generated
+ */
+ int PERSON = 1;
+
+ /**
+ * The feature id for the '<em><b>First Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PERSON__FIRST_NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Sexe</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PERSON__SEXE = 1;
+
+ /**
+ * The feature id for the '<em><b>Owned Cars</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PERSON__OWNED_CARS = 2;
+
+ /**
+ * The number of structural features of the '<em>Person</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PERSON_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.genivi.family.impl.CarImpl <em>Car</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.CarImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getCar()
+ * @generated
+ */
+ int CAR = 2;
+
+ /**
+ * The feature id for the '<em><b>Number Of Seats</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAR__NUMBER_OF_SEATS = 0;
+
+ /**
+ * The number of structural features of the '<em>Car</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAR_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.genivi.family.impl.AddressImpl <em>Address</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.AddressImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getAddress()
+ * @generated
+ */
+ int ADDRESS = 3;
+
+ /**
+ * The feature id for the '<em><b>Street</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADDRESS__STREET = 0;
+
+ /**
+ * The number of structural features of the '<em>Address</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADDRESS_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.genivi.family.impl.WealthyFamilyImpl <em>Wealthy Family</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.WealthyFamilyImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getWealthyFamily()
+ * @generated
+ */
+ int WEALTHY_FAMILY = 4;
+
+ /**
+ * The feature id for the '<em><b>Members</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__MEMBERS = FAMILY__MEMBERS;
+
+ /**
+ * The feature id for the '<em><b>Surname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__SURNAME = FAMILY__SURNAME;
+
+ /**
+ * The feature id for the '<em><b>Number Of Pets</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__NUMBER_OF_PETS = FAMILY__NUMBER_OF_PETS;
+
+ /**
+ * The feature id for the '<em><b>Has ASwimming Pool</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__HAS_ASWIMMING_POOL = FAMILY__HAS_ASWIMMING_POOL;
+
+ /**
+ * The feature id for the '<em><b>Address</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__ADDRESS = FAMILY__ADDRESS;
+
+ /**
+ * The feature id for the '<em><b>Favorite Holiday Destinations</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__FAVORITE_HOLIDAY_DESTINATIONS = FAMILY__FAVORITE_HOLIDAY_DESTINATIONS;
+
+ /**
+ * The feature id for the '<em><b>Forbes Ranking</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY__FORBES_RANKING = FAMILY_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Wealthy Family</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WEALTHY_FAMILY_FEATURE_COUNT = FAMILY_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.genivi.family.Sexe <em>Sexe</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.Sexe
+ * @see org.genivi.family.impl.FamilyPackageImpl#getSexe()
+ * @generated
+ */
+ int SEXE = 5;
+
+
+ /**
+ * Returns the meta object for class '{@link org.genivi.family.Family <em>Family</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Family</em>'.
+ * @see org.genivi.family.Family
+ * @generated
+ */
+ EClass getFamily();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.genivi.family.Family#getMembers <em>Members</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Members</em>'.
+ * @see org.genivi.family.Family#getMembers()
+ * @see #getFamily()
+ * @generated
+ */
+ EReference getFamily_Members();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Family#getSurname <em>Surname</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Surname</em>'.
+ * @see org.genivi.family.Family#getSurname()
+ * @see #getFamily()
+ * @generated
+ */
+ EAttribute getFamily_Surname();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Family#getNumberOfPets <em>Number Of Pets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Number Of Pets</em>'.
+ * @see org.genivi.family.Family#getNumberOfPets()
+ * @see #getFamily()
+ * @generated
+ */
+ EAttribute getFamily_NumberOfPets();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Family#isHasASwimmingPool <em>Has ASwimming Pool</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Has ASwimming Pool</em>'.
+ * @see org.genivi.family.Family#isHasASwimmingPool()
+ * @see #getFamily()
+ * @generated
+ */
+ EAttribute getFamily_HasASwimmingPool();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.genivi.family.Family#getAddress <em>Address</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Address</em>'.
+ * @see org.genivi.family.Family#getAddress()
+ * @see #getFamily()
+ * @generated
+ */
+ EReference getFamily_Address();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.genivi.family.Family#getFavoriteHolidayDestinations <em>Favorite Holiday Destinations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Favorite Holiday Destinations</em>'.
+ * @see org.genivi.family.Family#getFavoriteHolidayDestinations()
+ * @see #getFamily()
+ * @generated
+ */
+ EAttribute getFamily_FavoriteHolidayDestinations();
+
+ /**
+ * Returns the meta object for class '{@link org.genivi.family.Person <em>Person</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Person</em>'.
+ * @see org.genivi.family.Person
+ * @generated
+ */
+ EClass getPerson();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Person#getFirstName <em>First Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>First Name</em>'.
+ * @see org.genivi.family.Person#getFirstName()
+ * @see #getPerson()
+ * @generated
+ */
+ EAttribute getPerson_FirstName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Person#getSexe <em>Sexe</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Sexe</em>'.
+ * @see org.genivi.family.Person#getSexe()
+ * @see #getPerson()
+ * @generated
+ */
+ EAttribute getPerson_Sexe();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.genivi.family.Person#getOwnedCars <em>Owned Cars</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Owned Cars</em>'.
+ * @see org.genivi.family.Person#getOwnedCars()
+ * @see #getPerson()
+ * @generated
+ */
+ EReference getPerson_OwnedCars();
+
+ /**
+ * Returns the meta object for class '{@link org.genivi.family.Car <em>Car</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Car</em>'.
+ * @see org.genivi.family.Car
+ * @generated
+ */
+ EClass getCar();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Car#getNumberOfSeats <em>Number Of Seats</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Number Of Seats</em>'.
+ * @see org.genivi.family.Car#getNumberOfSeats()
+ * @see #getCar()
+ * @generated
+ */
+ EAttribute getCar_NumberOfSeats();
+
+ /**
+ * Returns the meta object for class '{@link org.genivi.family.Address <em>Address</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Address</em>'.
+ * @see org.genivi.family.Address
+ * @generated
+ */
+ EClass getAddress();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.Address#getStreet <em>Street</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Street</em>'.
+ * @see org.genivi.family.Address#getStreet()
+ * @see #getAddress()
+ * @generated
+ */
+ EAttribute getAddress_Street();
+
+ /**
+ * Returns the meta object for class '{@link org.genivi.family.WealthyFamily <em>Wealthy Family</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Wealthy Family</em>'.
+ * @see org.genivi.family.WealthyFamily
+ * @generated
+ */
+ EClass getWealthyFamily();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.genivi.family.WealthyFamily#getForbesRanking <em>Forbes Ranking</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Forbes Ranking</em>'.
+ * @see org.genivi.family.WealthyFamily#getForbesRanking()
+ * @see #getWealthyFamily()
+ * @generated
+ */
+ EAttribute getWealthyFamily_ForbesRanking();
+
+ /**
+ * Returns the meta object for enum '{@link org.genivi.family.Sexe <em>Sexe</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Sexe</em>'.
+ * @see org.genivi.family.Sexe
+ * @generated
+ */
+ EEnum getSexe();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ FamilyFactory getFamilyFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.genivi.family.impl.FamilyImpl <em>Family</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.FamilyImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getFamily()
+ * @generated
+ */
+ EClass FAMILY = eINSTANCE.getFamily();
+
+ /**
+ * The meta object literal for the '<em><b>Members</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FAMILY__MEMBERS = eINSTANCE.getFamily_Members();
+
+ /**
+ * The meta object literal for the '<em><b>Surname</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FAMILY__SURNAME = eINSTANCE.getFamily_Surname();
+
+ /**
+ * The meta object literal for the '<em><b>Number Of Pets</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FAMILY__NUMBER_OF_PETS = eINSTANCE.getFamily_NumberOfPets();
+
+ /**
+ * The meta object literal for the '<em><b>Has ASwimming Pool</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FAMILY__HAS_ASWIMMING_POOL = eINSTANCE.getFamily_HasASwimmingPool();
+
+ /**
+ * The meta object literal for the '<em><b>Address</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FAMILY__ADDRESS = eINSTANCE.getFamily_Address();
+
+ /**
+ * The meta object literal for the '<em><b>Favorite Holiday Destinations</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FAMILY__FAVORITE_HOLIDAY_DESTINATIONS = eINSTANCE.getFamily_FavoriteHolidayDestinations();
+
+ /**
+ * The meta object literal for the '{@link org.genivi.family.impl.PersonImpl <em>Person</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.PersonImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getPerson()
+ * @generated
+ */
+ EClass PERSON = eINSTANCE.getPerson();
+
+ /**
+ * The meta object literal for the '<em><b>First Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PERSON__FIRST_NAME = eINSTANCE.getPerson_FirstName();
+
+ /**
+ * The meta object literal for the '<em><b>Sexe</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PERSON__SEXE = eINSTANCE.getPerson_Sexe();
+
+ /**
+ * The meta object literal for the '<em><b>Owned Cars</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PERSON__OWNED_CARS = eINSTANCE.getPerson_OwnedCars();
+
+ /**
+ * The meta object literal for the '{@link org.genivi.family.impl.CarImpl <em>Car</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.CarImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getCar()
+ * @generated
+ */
+ EClass CAR = eINSTANCE.getCar();
+
+ /**
+ * The meta object literal for the '<em><b>Number Of Seats</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CAR__NUMBER_OF_SEATS = eINSTANCE.getCar_NumberOfSeats();
+
+ /**
+ * The meta object literal for the '{@link org.genivi.family.impl.AddressImpl <em>Address</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.AddressImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getAddress()
+ * @generated
+ */
+ EClass ADDRESS = eINSTANCE.getAddress();
+
+ /**
+ * The meta object literal for the '<em><b>Street</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ADDRESS__STREET = eINSTANCE.getAddress_Street();
+
+ /**
+ * The meta object literal for the '{@link org.genivi.family.impl.WealthyFamilyImpl <em>Wealthy Family</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.impl.WealthyFamilyImpl
+ * @see org.genivi.family.impl.FamilyPackageImpl#getWealthyFamily()
+ * @generated
+ */
+ EClass WEALTHY_FAMILY = eINSTANCE.getWealthyFamily();
+
+ /**
+ * The meta object literal for the '<em><b>Forbes Ranking</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute WEALTHY_FAMILY__FORBES_RANKING = eINSTANCE.getWealthyFamily_ForbesRanking();
+
+ /**
+ * The meta object literal for the '{@link org.genivi.family.Sexe <em>Sexe</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.Sexe
+ * @see org.genivi.family.impl.FamilyPackageImpl#getSexe()
+ * @generated
+ */
+ EEnum SEXE = eINSTANCE.getSexe();
+
+ }
+
+} //FamilyPackage
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Person.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Person.java
new file mode 100755
index 0000000..73cd952
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Person.java
@@ -0,0 +1,160 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Person</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.genivi.family.Person#getFirstName <em>First Name</em>}</li>
+ * <li>{@link org.genivi.family.Person#getSexe <em>Sexe</em>}</li>
+ * <li>{@link org.genivi.family.Person#getOwnedCars <em>Owned Cars</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.genivi.family.FamilyPackage#getPerson()
+ * @model
+ * @generated
+ */
+public interface Person extends EObject {
+ /**
+ * Returns the value of the '<em><b>First Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>First Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>First Name</em>' attribute.
+ * @see #isSetFirstName()
+ * @see #unsetFirstName()
+ * @see #setFirstName(String)
+ * @see org.genivi.family.FamilyPackage#getPerson_FirstName()
+ * @model unsettable="true" required="true"
+ * @generated
+ */
+ String getFirstName();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Person#getFirstName <em>First Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>First Name</em>' attribute.
+ * @see #isSetFirstName()
+ * @see #unsetFirstName()
+ * @see #getFirstName()
+ * @generated
+ */
+ void setFirstName(String value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Person#getFirstName <em>First Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetFirstName()
+ * @see #getFirstName()
+ * @see #setFirstName(String)
+ * @generated
+ */
+ void unsetFirstName();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Person#getFirstName <em>First Name</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>First Name</em>' attribute is set.
+ * @see #unsetFirstName()
+ * @see #getFirstName()
+ * @see #setFirstName(String)
+ * @generated
+ */
+ boolean isSetFirstName();
+
+ /**
+ * Returns the value of the '<em><b>Sexe</b></em>' attribute.
+ * The literals are from the enumeration {@link org.genivi.family.Sexe}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sexe</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sexe</em>' attribute.
+ * @see org.genivi.family.Sexe
+ * @see #isSetSexe()
+ * @see #unsetSexe()
+ * @see #setSexe(Sexe)
+ * @see org.genivi.family.FamilyPackage#getPerson_Sexe()
+ * @model unsettable="true" required="true"
+ * @generated
+ */
+ Sexe getSexe();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.Person#getSexe <em>Sexe</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sexe</em>' attribute.
+ * @see org.genivi.family.Sexe
+ * @see #isSetSexe()
+ * @see #unsetSexe()
+ * @see #getSexe()
+ * @generated
+ */
+ void setSexe(Sexe value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.Person#getSexe <em>Sexe</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetSexe()
+ * @see #getSexe()
+ * @see #setSexe(Sexe)
+ * @generated
+ */
+ void unsetSexe();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.Person#getSexe <em>Sexe</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Sexe</em>' attribute is set.
+ * @see #unsetSexe()
+ * @see #getSexe()
+ * @see #setSexe(Sexe)
+ * @generated
+ */
+ boolean isSetSexe();
+
+ /**
+ * Returns the value of the '<em><b>Owned Cars</b></em>' containment reference list.
+ * The list contents are of type {@link org.genivi.family.Car}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owned Cars</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Owned Cars</em>' containment reference list.
+ * @see org.genivi.family.FamilyPackage#getPerson_OwnedCars()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Car> getOwnedCars();
+
+} // Person
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Sexe.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Sexe.java
new file mode 100755
index 0000000..299eb4e
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/Sexe.java
@@ -0,0 +1,215 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Sexe</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.FamilyPackage#getSexe()
+ * @model
+ * @generated
+ */
+public enum Sexe implements Enumerator {
+ /**
+ * The '<em><b>MALE</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #MALE_VALUE
+ * @generated
+ * @ordered
+ */
+ MALE(0, "MALE", "MALE"),
+
+ /**
+ * The '<em><b>FEMALE</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FEMALE_VALUE
+ * @generated
+ * @ordered
+ */
+ FEMALE(1, "FEMALE", "FEMALE");
+
+ /**
+ * The '<em><b>MALE</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>MALE</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #MALE
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int MALE_VALUE = 0;
+
+ /**
+ * The '<em><b>FEMALE</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>FEMALE</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FEMALE
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int FEMALE_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Sexe</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final Sexe[] VALUES_ARRAY =
+ new Sexe[] {
+ MALE,
+ FEMALE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Sexe</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<Sexe> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Sexe</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static Sexe get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ Sexe result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Sexe</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static Sexe getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ Sexe result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Sexe</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static Sexe get(int value) {
+ switch (value) {
+ case MALE_VALUE: return MALE;
+ case FEMALE_VALUE: return FEMALE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private Sexe(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //Sexe
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/WealthyFamily.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/WealthyFamily.java
new file mode 100755
index 0000000..7b5ed67
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/WealthyFamily.java
@@ -0,0 +1,83 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Wealthy Family</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.genivi.family.WealthyFamily#getForbesRanking <em>Forbes Ranking</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.genivi.family.FamilyPackage#getWealthyFamily()
+ * @model
+ * @generated
+ */
+public interface WealthyFamily extends Family {
+ /**
+ * Returns the value of the '<em><b>Forbes Ranking</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Forbes Ranking</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Forbes Ranking</em>' attribute.
+ * @see #isSetForbesRanking()
+ * @see #unsetForbesRanking()
+ * @see #setForbesRanking(int)
+ * @see org.genivi.family.FamilyPackage#getWealthyFamily_ForbesRanking()
+ * @model unsettable="true"
+ * @generated
+ */
+ int getForbesRanking();
+
+ /**
+ * Sets the value of the '{@link org.genivi.family.WealthyFamily#getForbesRanking <em>Forbes Ranking</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Forbes Ranking</em>' attribute.
+ * @see #isSetForbesRanking()
+ * @see #unsetForbesRanking()
+ * @see #getForbesRanking()
+ * @generated
+ */
+ void setForbesRanking(int value);
+
+ /**
+ * Unsets the value of the '{@link org.genivi.family.WealthyFamily#getForbesRanking <em>Forbes Ranking</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetForbesRanking()
+ * @see #getForbesRanking()
+ * @see #setForbesRanking(int)
+ * @generated
+ */
+ void unsetForbesRanking();
+
+ /**
+ * Returns whether the value of the '{@link org.genivi.family.WealthyFamily#getForbesRanking <em>Forbes Ranking</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Forbes Ranking</em>' attribute is set.
+ * @see #unsetForbesRanking()
+ * @see #getForbesRanking()
+ * @see #setForbesRanking(int)
+ * @generated
+ */
+ boolean isSetForbesRanking();
+
+} // WealthyFamily
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/AddressImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/AddressImpl.java
new file mode 100755
index 0000000..8b1e40e
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/AddressImpl.java
@@ -0,0 +1,204 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.genivi.family.Address;
+import org.genivi.family.FamilyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Address</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.genivi.family.impl.AddressImpl#getStreet <em>Street</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AddressImpl extends EObjectImpl implements Address {
+ /**
+ * The default value of the '{@link #getStreet() <em>Street</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStreet()
+ * @generated
+ * @ordered
+ */
+ protected static final String STREET_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getStreet() <em>Street</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStreet()
+ * @generated
+ * @ordered
+ */
+ protected String street = STREET_EDEFAULT;
+
+ /**
+ * This is true if the Street attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean streetESet;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AddressImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FamilyPackage.Literals.ADDRESS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getStreet() {
+ return street;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStreet(String newStreet) {
+ String oldStreet = street;
+ street = newStreet;
+ boolean oldStreetESet = streetESet;
+ streetESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.ADDRESS__STREET, oldStreet, street, !oldStreetESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetStreet() {
+ String oldStreet = street;
+ boolean oldStreetESet = streetESet;
+ street = STREET_EDEFAULT;
+ streetESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.ADDRESS__STREET, oldStreet, STREET_EDEFAULT, oldStreetESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetStreet() {
+ return streetESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FamilyPackage.ADDRESS__STREET:
+ return getStreet();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FamilyPackage.ADDRESS__STREET:
+ setStreet((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.ADDRESS__STREET:
+ unsetStreet();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.ADDRESS__STREET:
+ return isSetStreet();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (street: ");
+ if (streetESet) result.append(street); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //AddressImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/CarImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/CarImpl.java
new file mode 100755
index 0000000..c465489
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/CarImpl.java
@@ -0,0 +1,204 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.genivi.family.Car;
+import org.genivi.family.FamilyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Car</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.genivi.family.impl.CarImpl#getNumberOfSeats <em>Number Of Seats</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CarImpl extends EObjectImpl implements Car {
+ /**
+ * The default value of the '{@link #getNumberOfSeats() <em>Number Of Seats</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberOfSeats()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer NUMBER_OF_SEATS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNumberOfSeats() <em>Number Of Seats</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberOfSeats()
+ * @generated
+ * @ordered
+ */
+ protected Integer numberOfSeats = NUMBER_OF_SEATS_EDEFAULT;
+
+ /**
+ * This is true if the Number Of Seats attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean numberOfSeatsESet;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CarImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FamilyPackage.Literals.CAR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Integer getNumberOfSeats() {
+ return numberOfSeats;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNumberOfSeats(Integer newNumberOfSeats) {
+ Integer oldNumberOfSeats = numberOfSeats;
+ numberOfSeats = newNumberOfSeats;
+ boolean oldNumberOfSeatsESet = numberOfSeatsESet;
+ numberOfSeatsESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.CAR__NUMBER_OF_SEATS, oldNumberOfSeats, numberOfSeats, !oldNumberOfSeatsESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetNumberOfSeats() {
+ Integer oldNumberOfSeats = numberOfSeats;
+ boolean oldNumberOfSeatsESet = numberOfSeatsESet;
+ numberOfSeats = NUMBER_OF_SEATS_EDEFAULT;
+ numberOfSeatsESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.CAR__NUMBER_OF_SEATS, oldNumberOfSeats, NUMBER_OF_SEATS_EDEFAULT, oldNumberOfSeatsESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetNumberOfSeats() {
+ return numberOfSeatsESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FamilyPackage.CAR__NUMBER_OF_SEATS:
+ return getNumberOfSeats();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FamilyPackage.CAR__NUMBER_OF_SEATS:
+ setNumberOfSeats((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.CAR__NUMBER_OF_SEATS:
+ unsetNumberOfSeats();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.CAR__NUMBER_OF_SEATS:
+ return isSetNumberOfSeats();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (numberOfSeats: ");
+ if (numberOfSeatsESet) result.append(numberOfSeats); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //CarImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyFactoryImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyFactoryImpl.java
new file mode 100755
index 0000000..a6ec37d
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyFactoryImpl.java
@@ -0,0 +1,197 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.genivi.family.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FamilyFactoryImpl extends EFactoryImpl implements FamilyFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FamilyFactory init() {
+ try {
+ FamilyFactory theFamilyFactory = (FamilyFactory)EPackage.Registry.INSTANCE.getEFactory(FamilyPackage.eNS_URI);
+ if (theFamilyFactory != null) {
+ return theFamilyFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new FamilyFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FamilyFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case FamilyPackage.FAMILY: return createFamily();
+ case FamilyPackage.PERSON: return createPerson();
+ case FamilyPackage.CAR: return createCar();
+ case FamilyPackage.ADDRESS: return createAddress();
+ case FamilyPackage.WEALTHY_FAMILY: return createWealthyFamily();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case FamilyPackage.SEXE:
+ return createSexeFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case FamilyPackage.SEXE:
+ return convertSexeToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Family createFamily() {
+ FamilyImpl family = new FamilyImpl();
+ return family;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Person createPerson() {
+ PersonImpl person = new PersonImpl();
+ return person;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Car createCar() {
+ CarImpl car = new CarImpl();
+ return car;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Address createAddress() {
+ AddressImpl address = new AddressImpl();
+ return address;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WealthyFamily createWealthyFamily() {
+ WealthyFamilyImpl wealthyFamily = new WealthyFamilyImpl();
+ return wealthyFamily;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sexe createSexeFromString(EDataType eDataType, String initialValue) {
+ Sexe result = Sexe.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertSexeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FamilyPackage getFamilyPackage() {
+ return (FamilyPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static FamilyPackage getPackage() {
+ return FamilyPackage.eINSTANCE;
+ }
+
+} //FamilyFactoryImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyImpl.java
new file mode 100755
index 0000000..c1b027c
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyImpl.java
@@ -0,0 +1,604 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.genivi.family.Address;
+import org.genivi.family.Family;
+import org.genivi.family.FamilyPackage;
+import org.genivi.family.Person;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Family</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.genivi.family.impl.FamilyImpl#getMembers <em>Members</em>}</li>
+ * <li>{@link org.genivi.family.impl.FamilyImpl#getSurname <em>Surname</em>}</li>
+ * <li>{@link org.genivi.family.impl.FamilyImpl#getNumberOfPets <em>Number Of Pets</em>}</li>
+ * <li>{@link org.genivi.family.impl.FamilyImpl#isHasASwimmingPool <em>Has ASwimming Pool</em>}</li>
+ * <li>{@link org.genivi.family.impl.FamilyImpl#getAddress <em>Address</em>}</li>
+ * <li>{@link org.genivi.family.impl.FamilyImpl#getFavoriteHolidayDestinations <em>Favorite Holiday Destinations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FamilyImpl extends EObjectImpl implements Family {
+ /**
+ * The cached value of the '{@link #getMembers() <em>Members</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMembers()
+ * @generated
+ * @ordered
+ */
+ protected EList<Person> members;
+
+ /**
+ * The default value of the '{@link #getSurname() <em>Surname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSurname()
+ * @generated
+ * @ordered
+ */
+ protected static final String SURNAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSurname() <em>Surname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSurname()
+ * @generated
+ * @ordered
+ */
+ protected String surname = SURNAME_EDEFAULT;
+
+ /**
+ * This is true if the Surname attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean surnameESet;
+
+ /**
+ * The default value of the '{@link #getNumberOfPets() <em>Number Of Pets</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberOfPets()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUMBER_OF_PETS_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getNumberOfPets() <em>Number Of Pets</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberOfPets()
+ * @generated
+ * @ordered
+ */
+ protected int numberOfPets = NUMBER_OF_PETS_EDEFAULT;
+
+ /**
+ * This is true if the Number Of Pets attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean numberOfPetsESet;
+
+ /**
+ * The default value of the '{@link #isHasASwimmingPool() <em>Has ASwimming Pool</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isHasASwimmingPool()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean HAS_ASWIMMING_POOL_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isHasASwimmingPool() <em>Has ASwimming Pool</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isHasASwimmingPool()
+ * @generated
+ * @ordered
+ */
+ protected boolean hasASwimmingPool = HAS_ASWIMMING_POOL_EDEFAULT;
+
+ /**
+ * This is true if the Has ASwimming Pool attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean hasASwimmingPoolESet;
+
+ /**
+ * The cached value of the '{@link #getAddress() <em>Address</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAddress()
+ * @generated
+ * @ordered
+ */
+ protected Address address;
+
+ /**
+ * This is true if the Address containment reference has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean addressESet;
+
+ /**
+ * The cached value of the '{@link #getFavoriteHolidayDestinations() <em>Favorite Holiday Destinations</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFavoriteHolidayDestinations()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> favoriteHolidayDestinations;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FamilyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FamilyPackage.Literals.FAMILY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Person> getMembers() {
+ if (members == null) {
+ members = new EObjectContainmentEList<Person>(Person.class, this, FamilyPackage.FAMILY__MEMBERS);
+ }
+ return members;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSurname() {
+ return surname;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSurname(String newSurname) {
+ String oldSurname = surname;
+ surname = newSurname;
+ boolean oldSurnameESet = surnameESet;
+ surnameESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.FAMILY__SURNAME, oldSurname, surname, !oldSurnameESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetSurname() {
+ String oldSurname = surname;
+ boolean oldSurnameESet = surnameESet;
+ surname = SURNAME_EDEFAULT;
+ surnameESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.FAMILY__SURNAME, oldSurname, SURNAME_EDEFAULT, oldSurnameESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetSurname() {
+ return surnameESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getNumberOfPets() {
+ return numberOfPets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNumberOfPets(int newNumberOfPets) {
+ int oldNumberOfPets = numberOfPets;
+ numberOfPets = newNumberOfPets;
+ boolean oldNumberOfPetsESet = numberOfPetsESet;
+ numberOfPetsESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.FAMILY__NUMBER_OF_PETS, oldNumberOfPets, numberOfPets, !oldNumberOfPetsESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetNumberOfPets() {
+ int oldNumberOfPets = numberOfPets;
+ boolean oldNumberOfPetsESet = numberOfPetsESet;
+ numberOfPets = NUMBER_OF_PETS_EDEFAULT;
+ numberOfPetsESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.FAMILY__NUMBER_OF_PETS, oldNumberOfPets, NUMBER_OF_PETS_EDEFAULT, oldNumberOfPetsESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetNumberOfPets() {
+ return numberOfPetsESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isHasASwimmingPool() {
+ return hasASwimmingPool;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHasASwimmingPool(boolean newHasASwimmingPool) {
+ boolean oldHasASwimmingPool = hasASwimmingPool;
+ hasASwimmingPool = newHasASwimmingPool;
+ boolean oldHasASwimmingPoolESet = hasASwimmingPoolESet;
+ hasASwimmingPoolESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.FAMILY__HAS_ASWIMMING_POOL, oldHasASwimmingPool, hasASwimmingPool, !oldHasASwimmingPoolESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetHasASwimmingPool() {
+ boolean oldHasASwimmingPool = hasASwimmingPool;
+ boolean oldHasASwimmingPoolESet = hasASwimmingPoolESet;
+ hasASwimmingPool = HAS_ASWIMMING_POOL_EDEFAULT;
+ hasASwimmingPoolESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.FAMILY__HAS_ASWIMMING_POOL, oldHasASwimmingPool, HAS_ASWIMMING_POOL_EDEFAULT, oldHasASwimmingPoolESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetHasASwimmingPool() {
+ return hasASwimmingPoolESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Address getAddress() {
+ return address;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAddress(Address newAddress, NotificationChain msgs) {
+ Address oldAddress = address;
+ address = newAddress;
+ boolean oldAddressESet = addressESet;
+ addressESet = true;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FamilyPackage.FAMILY__ADDRESS, oldAddress, newAddress, !oldAddressESet);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAddress(Address newAddress) {
+ if (newAddress != address) {
+ NotificationChain msgs = null;
+ if (address != null)
+ msgs = ((InternalEObject)address).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FamilyPackage.FAMILY__ADDRESS, null, msgs);
+ if (newAddress != null)
+ msgs = ((InternalEObject)newAddress).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FamilyPackage.FAMILY__ADDRESS, null, msgs);
+ msgs = basicSetAddress(newAddress, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else {
+ boolean oldAddressESet = addressESet;
+ addressESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.FAMILY__ADDRESS, newAddress, newAddress, !oldAddressESet));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicUnsetAddress(NotificationChain msgs) {
+ Address oldAddress = address;
+ address = null;
+ boolean oldAddressESet = addressESet;
+ addressESet = false;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, FamilyPackage.FAMILY__ADDRESS, oldAddress, null, oldAddressESet);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetAddress() {
+ if (address != null) {
+ NotificationChain msgs = null;
+ msgs = ((InternalEObject)address).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FamilyPackage.FAMILY__ADDRESS, null, msgs);
+ msgs = basicUnsetAddress(msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else {
+ boolean oldAddressESet = addressESet;
+ addressESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.FAMILY__ADDRESS, null, null, oldAddressESet));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetAddress() {
+ return addressESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getFavoriteHolidayDestinations() {
+ if (favoriteHolidayDestinations == null) {
+ favoriteHolidayDestinations = new EDataTypeUniqueEList<String>(String.class, this, FamilyPackage.FAMILY__FAVORITE_HOLIDAY_DESTINATIONS);
+ }
+ return favoriteHolidayDestinations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FamilyPackage.FAMILY__MEMBERS:
+ return ((InternalEList<?>)getMembers()).basicRemove(otherEnd, msgs);
+ case FamilyPackage.FAMILY__ADDRESS:
+ return basicUnsetAddress(msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FamilyPackage.FAMILY__MEMBERS:
+ return getMembers();
+ case FamilyPackage.FAMILY__SURNAME:
+ return getSurname();
+ case FamilyPackage.FAMILY__NUMBER_OF_PETS:
+ return getNumberOfPets();
+ case FamilyPackage.FAMILY__HAS_ASWIMMING_POOL:
+ return isHasASwimmingPool();
+ case FamilyPackage.FAMILY__ADDRESS:
+ return getAddress();
+ case FamilyPackage.FAMILY__FAVORITE_HOLIDAY_DESTINATIONS:
+ return getFavoriteHolidayDestinations();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FamilyPackage.FAMILY__MEMBERS:
+ getMembers().clear();
+ getMembers().addAll((Collection<? extends Person>)newValue);
+ return;
+ case FamilyPackage.FAMILY__SURNAME:
+ setSurname((String)newValue);
+ return;
+ case FamilyPackage.FAMILY__NUMBER_OF_PETS:
+ setNumberOfPets((Integer)newValue);
+ return;
+ case FamilyPackage.FAMILY__HAS_ASWIMMING_POOL:
+ setHasASwimmingPool((Boolean)newValue);
+ return;
+ case FamilyPackage.FAMILY__ADDRESS:
+ setAddress((Address)newValue);
+ return;
+ case FamilyPackage.FAMILY__FAVORITE_HOLIDAY_DESTINATIONS:
+ getFavoriteHolidayDestinations().clear();
+ getFavoriteHolidayDestinations().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.FAMILY__MEMBERS:
+ getMembers().clear();
+ return;
+ case FamilyPackage.FAMILY__SURNAME:
+ unsetSurname();
+ return;
+ case FamilyPackage.FAMILY__NUMBER_OF_PETS:
+ unsetNumberOfPets();
+ return;
+ case FamilyPackage.FAMILY__HAS_ASWIMMING_POOL:
+ unsetHasASwimmingPool();
+ return;
+ case FamilyPackage.FAMILY__ADDRESS:
+ unsetAddress();
+ return;
+ case FamilyPackage.FAMILY__FAVORITE_HOLIDAY_DESTINATIONS:
+ getFavoriteHolidayDestinations().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.FAMILY__MEMBERS:
+ return members != null && !members.isEmpty();
+ case FamilyPackage.FAMILY__SURNAME:
+ return isSetSurname();
+ case FamilyPackage.FAMILY__NUMBER_OF_PETS:
+ return isSetNumberOfPets();
+ case FamilyPackage.FAMILY__HAS_ASWIMMING_POOL:
+ return isSetHasASwimmingPool();
+ case FamilyPackage.FAMILY__ADDRESS:
+ return isSetAddress();
+ case FamilyPackage.FAMILY__FAVORITE_HOLIDAY_DESTINATIONS:
+ return favoriteHolidayDestinations != null && !favoriteHolidayDestinations.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (surname: ");
+ if (surnameESet) result.append(surname); else result.append("<unset>");
+ result.append(", numberOfPets: ");
+ if (numberOfPetsESet) result.append(numberOfPets); else result.append("<unset>");
+ result.append(", hasASwimmingPool: ");
+ if (hasASwimmingPoolESet) result.append(hasASwimmingPool); else result.append("<unset>");
+ result.append(", favoriteHolidayDestinations: ");
+ result.append(favoriteHolidayDestinations);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FamilyImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyPackageImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyPackageImpl.java
new file mode 100755
index 0000000..41cd05e
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/FamilyPackageImpl.java
@@ -0,0 +1,437 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.genivi.family.Address;
+import org.genivi.family.Car;
+import org.genivi.family.Family;
+import org.genivi.family.FamilyFactory;
+import org.genivi.family.FamilyPackage;
+import org.genivi.family.Person;
+import org.genivi.family.Sexe;
+import org.genivi.family.WealthyFamily;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FamilyPackageImpl extends EPackageImpl implements FamilyPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass familyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass personEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass carEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass addressEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass wealthyFamilyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum sexeEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.genivi.family.FamilyPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private FamilyPackageImpl() {
+ super(eNS_URI, FamilyFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link FamilyPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static FamilyPackage init() {
+ if (isInited) return (FamilyPackage)EPackage.Registry.INSTANCE.getEPackage(FamilyPackage.eNS_URI);
+
+ // Obtain or create and register package
+ FamilyPackageImpl theFamilyPackage = (FamilyPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FamilyPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FamilyPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theFamilyPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theFamilyPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theFamilyPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(FamilyPackage.eNS_URI, theFamilyPackage);
+ return theFamilyPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFamily() {
+ return familyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFamily_Members() {
+ return (EReference)familyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFamily_Surname() {
+ return (EAttribute)familyEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFamily_NumberOfPets() {
+ return (EAttribute)familyEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFamily_HasASwimmingPool() {
+ return (EAttribute)familyEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFamily_Address() {
+ return (EReference)familyEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFamily_FavoriteHolidayDestinations() {
+ return (EAttribute)familyEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPerson() {
+ return personEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPerson_FirstName() {
+ return (EAttribute)personEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPerson_Sexe() {
+ return (EAttribute)personEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPerson_OwnedCars() {
+ return (EReference)personEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCar() {
+ return carEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCar_NumberOfSeats() {
+ return (EAttribute)carEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAddress() {
+ return addressEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAddress_Street() {
+ return (EAttribute)addressEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getWealthyFamily() {
+ return wealthyFamilyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getWealthyFamily_ForbesRanking() {
+ return (EAttribute)wealthyFamilyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getSexe() {
+ return sexeEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FamilyFactory getFamilyFactory() {
+ return (FamilyFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ familyEClass = createEClass(FAMILY);
+ createEReference(familyEClass, FAMILY__MEMBERS);
+ createEAttribute(familyEClass, FAMILY__SURNAME);
+ createEAttribute(familyEClass, FAMILY__NUMBER_OF_PETS);
+ createEAttribute(familyEClass, FAMILY__HAS_ASWIMMING_POOL);
+ createEReference(familyEClass, FAMILY__ADDRESS);
+ createEAttribute(familyEClass, FAMILY__FAVORITE_HOLIDAY_DESTINATIONS);
+
+ personEClass = createEClass(PERSON);
+ createEAttribute(personEClass, PERSON__FIRST_NAME);
+ createEAttribute(personEClass, PERSON__SEXE);
+ createEReference(personEClass, PERSON__OWNED_CARS);
+
+ carEClass = createEClass(CAR);
+ createEAttribute(carEClass, CAR__NUMBER_OF_SEATS);
+
+ addressEClass = createEClass(ADDRESS);
+ createEAttribute(addressEClass, ADDRESS__STREET);
+
+ wealthyFamilyEClass = createEClass(WEALTHY_FAMILY);
+ createEAttribute(wealthyFamilyEClass, WEALTHY_FAMILY__FORBES_RANKING);
+
+ // Create enums
+ sexeEEnum = createEEnum(SEXE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ wealthyFamilyEClass.getESuperTypes().add(this.getFamily());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(familyEClass, Family.class, "Family", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFamily_Members(), this.getPerson(), null, "members", null, 1, -1, Family.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFamily_Surname(), ecorePackage.getEString(), "surname", null, 1, 1, Family.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFamily_NumberOfPets(), ecorePackage.getEInt(), "numberOfPets", null, 0, 1, Family.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFamily_HasASwimmingPool(), ecorePackage.getEBoolean(), "hasASwimmingPool", null, 0, 1, Family.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFamily_Address(), this.getAddress(), null, "address", null, 0, 1, Family.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFamily_FavoriteHolidayDestinations(), ecorePackage.getEString(), "favoriteHolidayDestinations", null, 0, -1, Family.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(personEClass, Person.class, "Person", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPerson_FirstName(), ecorePackage.getEString(), "firstName", null, 1, 1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPerson_Sexe(), this.getSexe(), "sexe", null, 1, 1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPerson_OwnedCars(), this.getCar(), null, "ownedCars", null, 0, -1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(carEClass, Car.class, "Car", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCar_NumberOfSeats(), ecorePackage.getEIntegerObject(), "numberOfSeats", null, 0, 1, Car.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(addressEClass, Address.class, "Address", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAddress_Street(), ecorePackage.getEString(), "street", null, 0, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(wealthyFamilyEClass, WealthyFamily.class, "WealthyFamily", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getWealthyFamily_ForbesRanking(), ecorePackage.getEInt(), "forbesRanking", null, 0, 1, WealthyFamily.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(sexeEEnum, Sexe.class, "Sexe");
+ addEEnumLiteral(sexeEEnum, Sexe.MALE);
+ addEEnumLiteral(sexeEEnum, Sexe.FEMALE);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // GenModel
+ createGenModelAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>GenModel</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createGenModelAnnotations() {
+ String source = "GenModel";
+ addAnnotation
+ (this,
+ source,
+ new String[] {
+ "documentation", "Copyright (C) 2013 TomTom International B.V.\r\n\r\nThis Source Code Form is subject to the terms of the Mozilla Public\r\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\r\nfile, You can obtain one at http://mozilla.org/MPL/2.0/."
+ });
+ }
+
+} //FamilyPackageImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/PersonImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/PersonImpl.java
new file mode 100755
index 0000000..66002c6
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/PersonImpl.java
@@ -0,0 +1,352 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.genivi.family.Car;
+import org.genivi.family.FamilyPackage;
+import org.genivi.family.Person;
+import org.genivi.family.Sexe;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Person</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.genivi.family.impl.PersonImpl#getFirstName <em>First Name</em>}</li>
+ * <li>{@link org.genivi.family.impl.PersonImpl#getSexe <em>Sexe</em>}</li>
+ * <li>{@link org.genivi.family.impl.PersonImpl#getOwnedCars <em>Owned Cars</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PersonImpl extends EObjectImpl implements Person {
+ /**
+ * The default value of the '{@link #getFirstName() <em>First Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFirstName()
+ * @generated
+ * @ordered
+ */
+ protected static final String FIRST_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFirstName() <em>First Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFirstName()
+ * @generated
+ * @ordered
+ */
+ protected String firstName = FIRST_NAME_EDEFAULT;
+
+ /**
+ * This is true if the First Name attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean firstNameESet;
+
+ /**
+ * The default value of the '{@link #getSexe() <em>Sexe</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSexe()
+ * @generated
+ * @ordered
+ */
+ protected static final Sexe SEXE_EDEFAULT = Sexe.MALE;
+
+ /**
+ * The cached value of the '{@link #getSexe() <em>Sexe</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSexe()
+ * @generated
+ * @ordered
+ */
+ protected Sexe sexe = SEXE_EDEFAULT;
+
+ /**
+ * This is true if the Sexe attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean sexeESet;
+
+ /**
+ * The cached value of the '{@link #getOwnedCars() <em>Owned Cars</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOwnedCars()
+ * @generated
+ * @ordered
+ */
+ protected EList<Car> ownedCars;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PersonImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FamilyPackage.Literals.PERSON;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFirstName() {
+ return firstName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFirstName(String newFirstName) {
+ String oldFirstName = firstName;
+ firstName = newFirstName;
+ boolean oldFirstNameESet = firstNameESet;
+ firstNameESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.PERSON__FIRST_NAME, oldFirstName, firstName, !oldFirstNameESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetFirstName() {
+ String oldFirstName = firstName;
+ boolean oldFirstNameESet = firstNameESet;
+ firstName = FIRST_NAME_EDEFAULT;
+ firstNameESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.PERSON__FIRST_NAME, oldFirstName, FIRST_NAME_EDEFAULT, oldFirstNameESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetFirstName() {
+ return firstNameESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sexe getSexe() {
+ return sexe;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSexe(Sexe newSexe) {
+ Sexe oldSexe = sexe;
+ sexe = newSexe == null ? SEXE_EDEFAULT : newSexe;
+ boolean oldSexeESet = sexeESet;
+ sexeESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.PERSON__SEXE, oldSexe, sexe, !oldSexeESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetSexe() {
+ Sexe oldSexe = sexe;
+ boolean oldSexeESet = sexeESet;
+ sexe = SEXE_EDEFAULT;
+ sexeESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.PERSON__SEXE, oldSexe, SEXE_EDEFAULT, oldSexeESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetSexe() {
+ return sexeESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Car> getOwnedCars() {
+ if (ownedCars == null) {
+ ownedCars = new EObjectContainmentEList<Car>(Car.class, this, FamilyPackage.PERSON__OWNED_CARS);
+ }
+ return ownedCars;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FamilyPackage.PERSON__OWNED_CARS:
+ return ((InternalEList<?>)getOwnedCars()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FamilyPackage.PERSON__FIRST_NAME:
+ return getFirstName();
+ case FamilyPackage.PERSON__SEXE:
+ return getSexe();
+ case FamilyPackage.PERSON__OWNED_CARS:
+ return getOwnedCars();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FamilyPackage.PERSON__FIRST_NAME:
+ setFirstName((String)newValue);
+ return;
+ case FamilyPackage.PERSON__SEXE:
+ setSexe((Sexe)newValue);
+ return;
+ case FamilyPackage.PERSON__OWNED_CARS:
+ getOwnedCars().clear();
+ getOwnedCars().addAll((Collection<? extends Car>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.PERSON__FIRST_NAME:
+ unsetFirstName();
+ return;
+ case FamilyPackage.PERSON__SEXE:
+ unsetSexe();
+ return;
+ case FamilyPackage.PERSON__OWNED_CARS:
+ getOwnedCars().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.PERSON__FIRST_NAME:
+ return isSetFirstName();
+ case FamilyPackage.PERSON__SEXE:
+ return isSetSexe();
+ case FamilyPackage.PERSON__OWNED_CARS:
+ return ownedCars != null && !ownedCars.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (firstName: ");
+ if (firstNameESet) result.append(firstName); else result.append("<unset>");
+ result.append(", sexe: ");
+ if (sexeESet) result.append(sexe); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //PersonImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/WealthyFamilyImpl.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/WealthyFamilyImpl.java
new file mode 100755
index 0000000..5bbb0ef
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/impl/WealthyFamilyImpl.java
@@ -0,0 +1,200 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.genivi.family.FamilyPackage;
+import org.genivi.family.WealthyFamily;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Wealthy Family</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.genivi.family.impl.WealthyFamilyImpl#getForbesRanking <em>Forbes Ranking</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class WealthyFamilyImpl extends FamilyImpl implements WealthyFamily {
+ /**
+ * The default value of the '{@link #getForbesRanking() <em>Forbes Ranking</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getForbesRanking()
+ * @generated
+ * @ordered
+ */
+ protected static final int FORBES_RANKING_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getForbesRanking() <em>Forbes Ranking</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getForbesRanking()
+ * @generated
+ * @ordered
+ */
+ protected int forbesRanking = FORBES_RANKING_EDEFAULT;
+
+ /**
+ * This is true if the Forbes Ranking attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean forbesRankingESet;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WealthyFamilyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FamilyPackage.Literals.WEALTHY_FAMILY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getForbesRanking() {
+ return forbesRanking;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setForbesRanking(int newForbesRanking) {
+ int oldForbesRanking = forbesRanking;
+ forbesRanking = newForbesRanking;
+ boolean oldForbesRankingESet = forbesRankingESet;
+ forbesRankingESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FamilyPackage.WEALTHY_FAMILY__FORBES_RANKING, oldForbesRanking, forbesRanking, !oldForbesRankingESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetForbesRanking() {
+ int oldForbesRanking = forbesRanking;
+ boolean oldForbesRankingESet = forbesRankingESet;
+ forbesRanking = FORBES_RANKING_EDEFAULT;
+ forbesRankingESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FamilyPackage.WEALTHY_FAMILY__FORBES_RANKING, oldForbesRanking, FORBES_RANKING_EDEFAULT, oldForbesRankingESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetForbesRanking() {
+ return forbesRankingESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FamilyPackage.WEALTHY_FAMILY__FORBES_RANKING:
+ return getForbesRanking();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FamilyPackage.WEALTHY_FAMILY__FORBES_RANKING:
+ setForbesRanking((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.WEALTHY_FAMILY__FORBES_RANKING:
+ unsetForbesRanking();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FamilyPackage.WEALTHY_FAMILY__FORBES_RANKING:
+ return isSetForbesRanking();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (forbesRanking: ");
+ if (forbesRankingESet) result.append(forbesRanking); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //WealthyFamilyImpl
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilyAdapterFactory.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilyAdapterFactory.java
new file mode 100755
index 0000000..be65e1f
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilyAdapterFactory.java
@@ -0,0 +1,199 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.genivi.family.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.FamilyPackage
+ * @generated
+ */
+public class FamilyAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FamilyPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FamilyAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = FamilyPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FamilySwitch<Adapter> modelSwitch =
+ new FamilySwitch<Adapter>() {
+ @Override
+ public Adapter caseFamily(Family object) {
+ return createFamilyAdapter();
+ }
+ @Override
+ public Adapter casePerson(Person object) {
+ return createPersonAdapter();
+ }
+ @Override
+ public Adapter caseCar(Car object) {
+ return createCarAdapter();
+ }
+ @Override
+ public Adapter caseAddress(Address object) {
+ return createAddressAdapter();
+ }
+ @Override
+ public Adapter caseWealthyFamily(WealthyFamily object) {
+ return createWealthyFamilyAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.genivi.family.Family <em>Family</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.genivi.family.Family
+ * @generated
+ */
+ public Adapter createFamilyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.genivi.family.Person <em>Person</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.genivi.family.Person
+ * @generated
+ */
+ public Adapter createPersonAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.genivi.family.Car <em>Car</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.genivi.family.Car
+ * @generated
+ */
+ public Adapter createCarAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.genivi.family.Address <em>Address</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.genivi.family.Address
+ * @generated
+ */
+ public Adapter createAddressAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.genivi.family.WealthyFamily <em>Wealthy Family</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.genivi.family.WealthyFamily
+ * @generated
+ */
+ public Adapter createWealthyFamilyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //FamilyAdapterFactory
diff --git a/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilySwitch.java b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilySwitch.java
new file mode 100755
index 0000000..46a6949
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.booleanexpr-model/src/test/java/org/genivi/family/util/FamilySwitch.java
@@ -0,0 +1,202 @@
+/**
+ *
+ * Copyright (C) 2013 TomTom International B.V.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+package org.genivi.family.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.genivi.family.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.genivi.family.FamilyPackage
+ * @generated
+ */
+public class FamilySwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FamilyPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FamilySwitch() {
+ if (modelPackage == null) {
+ modelPackage = FamilyPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case FamilyPackage.FAMILY: {
+ Family family = (Family)theEObject;
+ T result = caseFamily(family);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FamilyPackage.PERSON: {
+ Person person = (Person)theEObject;
+ T result = casePerson(person);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FamilyPackage.CAR: {
+ Car car = (Car)theEObject;
+ T result = caseCar(car);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FamilyPackage.ADDRESS: {
+ Address address = (Address)theEObject;
+ T result = caseAddress(address);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FamilyPackage.WEALTHY_FAMILY: {
+ WealthyFamily wealthyFamily = (WealthyFamily)theEObject;
+ T result = caseWealthyFamily(wealthyFamily);
+ if (result == null) result = caseFamily(wealthyFamily);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Family</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Family</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFamily(Family object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Person</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Person</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePerson(Person object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Car</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Car</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCar(Car object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Address</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Address</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAddress(Address object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Wealthy Family</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Wealthy Family</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWealthyFamily(WealthyFamily object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //FamilySwitch