FieldData fieldData = new FieldData(); fieldData.setName(name); fieldData.setValue(reader.getValue()); reader.moveUp(); reader.moveDown(); String value = reader.getValue(); fieldData.setNature(Integer.parseInt(value)); reader.moveUp(); if (fieldData.getValue() != null && fieldData.getValue().startsWith("=[")) { CollectionFieldData collectionFieldData = new CollectionFieldData(); collectionFieldData.setName(name); String list = fieldData.getValue().substring(2, fieldData.getValue().length() - 1); FieldData subFieldData = new FieldData(); subFieldData.setName(name); subFieldData.setValue(value); collectionFieldData.getCollectionFieldList().add(subFieldData); FieldData subFieldData = new FieldData(); subFieldData.setName(name); subFieldData.setValue(list); collectionFieldData.getCollectionFieldList().add(subFieldData);
if (fieldData.getValue().startsWith("=")) { return new ExpressionFieldPopulator(factObject, fieldData.getName(), fieldData.getValue().substring(1)); } else if (fieldData.getNature() == FieldData.TYPE_ENUM) { return new EnumFieldPopulator(factObject, fieldData.getName(), fieldData.getValue(), typeResolver, classLoader); } else if (isDate(fieldData.getName())) { return new DateFieldPopulator( factObject, getFieldType(fieldData.getName()), fieldData.getName(), fieldData.getValue()); } else { return new SimpleFieldPopulator(factObject, fieldData.getName(), fieldData.getValue());
@Test public void testAdd() { FactData fd = new FactData("x", "y", new ArrayList(), false ); assertEquals(0, fd.getFieldData().size()); fd.getFieldData().add(new FieldData("x", "y")); assertEquals(1, fd.getFieldData().size()); fd.getFieldData().add(new FieldData("q", "x")); assertEquals(2, fd.getFieldData().size()); } }
@Test public void testPopulateEnum() throws Exception { FieldData fieldData = new FieldData( "cheeseType", "CheeseType.CHEDDAR"); fieldData.setNature(FieldData.TYPE_ENUM); FactData factData = new FactData("Cheese", "c1", asList((Field) fieldData), false); factPopulator.add(new NewFactPopulator(populatedData, getTypeResolver(), getClassLoader(), factData)); factPopulator.populate(); assertTrue(populatedData.containsKey("c1")); Cheese cheese = (Cheese) populatedData.get("c1"); assertEquals(CheeseType.CHEDDAR, cheese.getCheeseType()); }
@Test public void testLoadLegacyTestScenario() throws Exception { StringBuffer contents = new StringBuffer(); BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("testLoadLegacyTestScenario.xml"))); String text = null; while ((text = reader.readLine()) != null) { contents.append(text); } } catch (Exception e) { if (reader != null) { reader.close(); } throw new IllegalStateException("Error while reading file.", e); } Scenario scenario = ScenarioXMLPersistence.getInstance().unmarshal(contents.toString()); verifyFieldDataNamesAreNotNull(scenario); FactData factData = (FactData) scenario.getFixtures().get(0); assertTrue(factData.getFieldData().get(0) instanceof FieldData); FieldData fieldData = (FieldData) factData.getFieldData().get(0); assertEquals("42", fieldData.getValue()); assertEquals("age", fieldData.getName()); }
private String createExpression(CollectionFieldData field) { String result = "["; int index = 1; for (FieldData fieldData : field.getCollectionFieldList()) { result += fieldData.getValue().replace("=", ""); if (index < field.getCollectionFieldList().size()) { result += ","; } index++; } return result + "]"; }
private void verifyFieldDataNamesAreNotNull(Scenario sc) { for (Fixture fixture : sc.getFixtures()) { if (fixture instanceof FactData) { FactData factData = (FactData) fixture; for (Field field : factData.getFieldData()) { if (field instanceof FieldData) { FieldData fieldData = (FieldData) field; assertNotNull(fieldData.getName()); } } } } }
@Test public void testDummyRunNoRules() throws Exception { typeResolver.addImport("org.drools.Cheese"); List<Field> fieldData = new ArrayList<Field>(); fieldData.add(new FieldData("type", "cheddar")); fieldData.add(new FieldData("price", "42")); FactData fact = new FactData("Cheese", "c1", fieldData, false); NewFactPopulator newFactPopulator = new NewFactPopulator( populatedData, typeResolver, Thread.currentThread().getContextClassLoader(), fact); newFactPopulator.populate(workingMemory, new HashMap<String, FactHandle>()); assertTrue(populatedData.containsKey("c1")); assertNotNull(populatedData.get("c1")); assertEquals(populatedData.get("c1"), workingMemory.facts.get(0)); }
@Test public void testVerifyFactsWithEnum() throws Exception { FieldData fieldData = new FieldData( "cheeseType", "CheeseType.CHEDDAR"); fieldData.setNature(FieldData.TYPE_ENUM); FactData cheeseFactData = new FactData( "Cheese", false); FieldData cheeseType = new FieldData( "cheeseType", "CheeseType.CHEDDAR" ); cheeseType.setNature(FieldData.TYPE_ENUM); FactData f1 = new FactData( "Cheese",
@Test public void testLoadLegacyFieldDataTestScenario() throws Exception { StringBuffer contents = new StringBuffer(); BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("LegacyFieldDataTestScenario.xml"))); String text = null; while ((text = reader.readLine()) != null) { contents.append(text); } } catch (Exception e) { if (reader != null) { reader.close(); } throw new IllegalStateException("Error while reading file.", e); } Scenario scenario = ScenarioXMLPersistence.getInstance().unmarshal(contents.toString()); verifyFieldDataNamesAreNotNull(scenario); FactData factData = (FactData) scenario.getFixtures().get(0); assertTrue(factData.getFieldData().get(0) instanceof CollectionFieldData); CollectionFieldData collectionFieldData=(CollectionFieldData)factData.getFieldData().get(0); FieldData fieldData = collectionFieldData.getCollectionFieldList().get(0); assertEquals("ratingSummaries", fieldData.getName()); assertEquals("=c1",fieldData.getValue()); }
private String createExpression(CollectionFieldData field) { String result = "["; int index = 1; for (FieldData fieldData : field.getCollectionFieldList()) { result += fieldData.getValue().replace("=", ""); if (index < field.getCollectionFieldList().size()) { result += ","; } index++; } return result + "]"; }
FieldData fieldData = new FieldData(); fieldData.setName(name); fieldData.setValue(reader.getValue()); reader.moveUp(); reader.moveDown(); String value = reader.getValue(); fieldData.setNature(Integer.parseInt(value)); reader.moveUp(); if (fieldData.getValue() != null && fieldData.getValue().startsWith("=[")) { CollectionFieldData collectionFieldData = new CollectionFieldData(); collectionFieldData.setName(name); String list = fieldData.getValue().substring(2, fieldData.getValue().length() - 1); FieldData subFieldData = new FieldData(); subFieldData.setName(name); subFieldData.setValue(value); collectionFieldData.getCollectionFieldList().add(subFieldData); FieldData subFieldData = new FieldData(); subFieldData.setName(name); subFieldData.setValue(list); collectionFieldData.getCollectionFieldList().add(subFieldData);
if (fieldData.getValue().startsWith("=")) { return new ExpressionFieldPopulator(factObject, fieldData.getName(), fieldData.getValue().substring(1)); } else if (fieldData.getNature() == FieldData.TYPE_ENUM) { return new EnumFieldPopulator(factObject, fieldData.getName(), fieldData.getValue(), typeResolver, classLoader); } else if (isDate(fieldData.getName())) { return new DateFieldPopulator( factObject, getFieldType(fieldData.getName()), fieldData.getName(), fieldData.getValue()); } else { return new SimpleFieldPopulator(factObject, fieldData.getName(), fieldData.getValue());
public FieldPopulator getFieldPopulator(Field field) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (field instanceof FieldData) { FieldData fieldData = (FieldData) field; if (fieldData.getValue() == null) { throw new IllegalArgumentException("Field value can not be null"); } else { return getFieldDataPopulator(factObject, fieldData); } } else if (field instanceof FactAssignmentField) { return new FactAssignmentFieldPopulator(factObject, (FactAssignmentField) field, typeResolver, classLoader); } else if (field instanceof CollectionFieldData) { return new CollectionFieldPopulator( factObject, (CollectionFieldData) field); } throw new IllegalArgumentException("Unknown field type " + field.getClass()); }
"f1", Arrays.<Field>asList( new FieldData("type", ""), new FieldData("price", "42")), false); "f2", Arrays.<Field>asList( new FieldData("type", ""), new FieldData("price", "43")), false); "f3", Arrays.<Field>asList( new FieldData("type", ""), new FieldData("price", "45")), false); FieldData field = new FieldData(); field.setName("cheeses"); field.setNature(FieldData.TYPE_COLLECTION); field.setValue("=[f1,f2,f3]"); List<Field> lstField = new ArrayList<Field>();
public FieldPopulator getFieldPopulator(Field field) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (field instanceof FieldData) { FieldData fieldData = (FieldData) field; if (fieldData.getValue() == null) { throw new IllegalArgumentException("Field value can not be null"); } else { return getFieldDataPopulator(factObject, fieldData); } } else if (field instanceof FactAssignmentField) { return new FactAssignmentFieldPopulator(factObject, (FactAssignmentField) field, typeResolver, classLoader); } else if (field instanceof CollectionFieldData) { return new CollectionFieldPopulator( factObject, (CollectionFieldData) field); } throw new IllegalArgumentException("Unknown field type " + field.getClass()); }