/** * Creates a test survey in which there is a bill with a list of items. For each item there is a * price, a quantity and a total (calculated using the an expression or a constant). * * @return */ private Survey createTestSurvey() { SurveyContext surveyContext = new TestSurveyContext(); Survey survey = surveyContext.createSurvey(); Schema schema = survey.getSchema(); EntityDefinition root = schema.createEntityDefinition(); root.setName("bill"); schema.addRootEntityDefinition(root); EntityDefinition item = schema.createEntityDefinition(); item.setName("item"); root.addChildDefinition(item); NumberAttributeDefinition qty = schema.createNumberAttributeDefinition(); qty.setType(Type.INTEGER); qty.setName("qty"); item.addChildDefinition(qty); NumberAttributeDefinition price = schema.createNumberAttributeDefinition(); price.setName("price"); item.addChildDefinition(price); NumberAttributeDefinition total = schema.createNumberAttributeDefinition(); total.setName("total"); total.setCalculated(true); total.addAttributeDefault( new AttributeDefault("qty * (price - (price * discount_percent div 100))")); item.addChildDefinition(total); NumberAttributeDefinition discountPercent = schema.createNumberAttributeDefinition(); discountPercent.setType(Type.INTEGER); discountPercent.setName("discount_percent"); discountPercent.setCalculated(true); discountPercent.addAttributeDefault(new AttributeDefault("30", "qty > 50")); discountPercent.addAttributeDefault(new AttributeDefault("20", "qty > 20")); discountPercent.addAttributeDefault(new AttributeDefault("10", "qty > 10")); discountPercent.addAttributeDefault(new AttributeDefault("0", "true()")); item.addChildDefinition(discountPercent); return survey; }
@Override protected NodeDefinition createDefinition(int id) { Schema schema = getSchema(); return schema.createTimeAttributeDefinition(id); }