2
0
Fork 0

Made unittest data backend for frontends and improved swing frontend.

Worked on metamodel backend and some other fixes.
This commit is contained in:
Willem Cazander 2012-05-03 17:13:36 +02:00
parent 1c308a684a
commit a25e98f5d5
65 changed files with 2820 additions and 499 deletions

View file

@ -27,6 +27,7 @@ import java.lang.reflect.Method;
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryControllerLocal;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.impl.DefaultVascEntry;
import net.forwardfire.vasc.impl.DefaultVascEntryField;
@ -37,24 +38,32 @@ import net.forwardfire.vasc.impl.DefaultVascFactory;
* @author Willem Cazander
* @version 1.0 Aug 2, 2007
*/
public class TestModelEntry {
public class TestModelData {
public VascController getTestVascController() throws Exception {
VascController c = DefaultVascFactory.getDefaultVascController(1234L,"Nice UserName","user","role_admin");
// for test
TestModelVascDataSource backend = new TestModelVascDataSource();
backend.generatorData(10876);
backend.setId("testBackend");
((VascBackendControllerLocal)c.getVascBackendController()).addVascBackend(backend);
TestModelVascDataSource backends = new TestModelVascDataSource();
backends.generatorData(10876);
backends.orderModel.setId("orderModelBackend");
((VascBackendControllerLocal)c.getVascBackendController()).addVascBackend(backends.orderModel);
backends.orderLineModel.setId("orderLineModelBackend");
((VascBackendControllerLocal)c.getVascBackendController()).addVascBackend(backends.orderLineModel);
return c;
}
public VascEntry createVascEntry(VascController vc) throws Exception {
public VascEntry getTestEntry(VascController vc) {
return vc.getVascEntryController().getVascEntryById("orderModel");
}
public void createVascEntries(VascController vc,VascEntryControllerLocal vecl) throws Exception {
VascEntry ve = new DefaultVascEntry();
ve.setId("testEntry");
ve.setBackendId("testBackend");
ve.setId("orderModel");
ve.setBackendId("orderModelBackend");
VascEntryField field = new DefaultVascEntryField();
field.setId("name");
@ -89,9 +98,34 @@ public class TestModelEntry {
field.setVascEntryFieldType(vc.getVascEntryFieldTypeController().getVascEntryFieldTypeById("BooleanField"));
field.setBackendName("active");
field.setDefaultValue("true"); // obj does also work ! we are first need to fix string defaults.
ve.addListOption(field);
return ve;
vecl.addVascEntry(ve,vc);
ve = new DefaultVascEntry();
ve.setId("orderLineModel");
ve.setBackendId("orderLineModelBackend");
field = new DefaultVascEntryField();
field.setId("name");
ve.addVascEntryField(field);
field = new DefaultVascEntryField();
field.setId("price");
field.setVascEntryFieldType(vc.getVascEntryFieldTypeController().getVascEntryFieldTypeById("FloatField"));
ve.addVascEntryField(field);
field = new DefaultVascEntryField();
field.setId("date");
field.setVascEntryFieldType(vc.getVascEntryFieldTypeController().getVascEntryFieldTypeById("DateField"));
ve.addVascEntryField(field);
vecl.addVascEntry(ve,vc);
DefaultVascFactory.fillVascControllerLocalEntries(vecl, vc);
}
static void printEntry(VascEntry e) throws Exception {

View file

@ -42,16 +42,31 @@ import net.forwardfire.vasc.validators.VascStringLength;
* @version 1.0 Mar 28, 2007
*/
@VascEntry(headerName="En een tooltip op het model")
public class TestModel {
public class TestModelOrder {
private Integer id = null;
private String name = null;
private String description = null;
private Float price = null;
private Boolean active = null;
private Date date = null;
private TestModel testModel = null;
private TestModelOrder testModel = null;
private String hexColor = null;
//private Node nonEditorField = null;
/**
* @return the id
*/
public Integer getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @return the date
@ -60,7 +75,7 @@ public class TestModel {
public Date getDate() {
return date;
}
/**
* @param date the date to set
*/
@ -125,11 +140,11 @@ public class TestModel {
@VascObjectNotNull
@VascModelReference
@VascI18n(image="/resources/images/gabelfresser.gif")
public TestModel getTestModel() {
public TestModelOrder getTestModel() {
return testModel;
}
public void setTestModel(TestModel testModel) {
public void setTestModel(TestModelOrder testModel) {
this.testModel = testModel;
}

View file

@ -0,0 +1,108 @@
/*
* Copyright 2007-2012 forwardfire.net All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.forwardfire.vasc.test.frontend.data;
import java.util.Date;
import net.forwardfire.vasc.annotations.VascDefaultValue;
import net.forwardfire.vasc.annotations.VascEntry;
import net.forwardfire.vasc.annotations.VascI18n;
import net.forwardfire.vasc.annotations.VascModelReference;
import net.forwardfire.vasc.annotations.VascStyle;
import net.forwardfire.vasc.validators.VascDateFuture;
import net.forwardfire.vasc.validators.VascObjectNotNull;
import net.forwardfire.vasc.validators.VascStringLength;
/**
* TestModelOrderLine
*
*
* @author Willem Cazander
* @version 1.0 Feb 7, 2012
*/
@VascEntry(headerName="OrderLine")
public class TestModelOrderLine {
private TestModelOrder order = null;
private String name = null;
private Float price = null;
private Date date = null;
/**
* @return the order
*/
public TestModelOrder getOrder() {
return order;
}
/**
* @param order the order to set
*/
public void setOrder(TestModelOrder order) {
this.order = order;
}
/**
* @return the date
*/
@VascDateFuture
public Date getDate() {
return date;
}
/**
* @param date the date to set
*/
public void setDate(Date date) {
this.date = date;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the price
*/
public Float getPrice() {
return price;
}
/**
* @param price the price to set
*/
public void setPrice(Float price) {
this.price = price;
}
}

View file

@ -26,6 +26,9 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.x4o.xml.element.ElementObjectPropertyValueException;
import org.x4o.xml.impl.DefaultElementObjectPropertyValue;
import net.forwardfire.vasc.backend.AbstractVascBackend;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascEntry;
@ -45,20 +48,24 @@ import net.forwardfire.vasc.impl.entry.BeanVascEntryRecordCreator;
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public class TestModelVascDataSource extends AbstractVascBackend implements VascSelectItemModel {
public class TestModelVascDataSource {
private List<TestModel> testModels = null;
private String nullLabel = null;
private String nullKeyValue = null;
//private List<TestModelOrder> testModels = null;
public ListObjectVascDataSource orderModel = null;
public ListObjectVascDataSource orderLineModel = null;
public TestModelVascDataSource() {
testModels = new ArrayList<TestModel>(200);
this(new ArrayList<TestModelOrder>(200),new ArrayList<TestModelOrderLine>(200));
}
public TestModelVascDataSource(List<TestModelOrder> testModels,List<TestModelOrderLine> testModelLine) {
orderModel = new ListObjectVascDataSource(TestModelOrder.class,(List)testModels);
orderLineModel = new ListObjectVascDataSource(TestModelOrderLine.class,(List)testModelLine);
}
public void generatorData(int size) {
for (int i=0;i<size;i++) {
TestModel t = new TestModel();
for (int i=0;i<size/3;i++) {
TestModelOrder t = new TestModelOrder();
t.setDate(new Date());
t.setDescription("Some long text in this....");
t.setName("BeanName_"+i);
@ -68,96 +75,138 @@ public class TestModelVascDataSource extends AbstractVascBackend implements Vasc
} else {
t.setActive(true);
}
if (testModels.isEmpty()==false) {
t.setTestModel((TestModel)testModels.get(0));
if (orderModel.getObjectList().isEmpty()==false) {
t.setTestModel((TestModelOrder)orderModel.getObjectList().get(0));
}
orderModel.getObjectList().add(t);
for (int ii=0;ii<size/1000;ii++) {
TestModelOrderLine line = new TestModelOrderLine();
line.setDate(new Date());
line.setName("OrderLine"+ii);
line.setPrice(new Float(123+ii));
line.setOrder(t);
orderLineModel.getObjectList().add(line);
}
testModels.add(t);
}
}
public TestModelVascDataSource(List<TestModel> testModels) {
this.testModels=testModels;
}
public List<Object> execute(VascBackendState state) throws VascException {
if (state.getDataParameterKeys().contains("active")) {
List<Object> result = new ArrayList<Object>(testModels.size()/2);
for (TestModel tm:testModels) {
if (tm.getActive()!=null && tm.getActive().equals(state.getDataParameter("active"))) {
result.add(tm);
}
}
return result;
} else {
List<Object> result = new ArrayList<Object>(testModels.size());
for (TestModel tm:testModels) {
result.add(tm);
}
return result;
class ListObjectVascDataSource extends AbstractVascBackend {
private Class<?> modelClass = null;
private List<Object> modelList = null;
private String nullLabel = null;
private String nullKeyValue = null;
public ListObjectVascDataSource(Class<?> modelClass,List<Object> modelList) {
this.modelClass=modelClass;
this.modelList=modelList;
}
}
public void persist(Object object) throws VascException {
testModels.add((TestModel)object);
}
public Object merge(Object object) throws VascException {
if(testModels.contains(object)==false) {
testModels.add((TestModel)object);
}
return object;
}
public void delete(Object object) throws VascException {
testModels.remove(object);
}
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
return new BeanPropertyVascEntryFieldValue(field.getBackendName());
}
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
return new BeanVascEntryRecordCreator(TestModel.class);
}
// --- VascSelectItemModel interface
public List<VascSelectItem> getVascSelectItems(VascEntry entry) {
List<VascSelectItem> res = new ArrayList<VascSelectItem>(4);
for (Object o:testModels) {
TestModel t = (TestModel)o;
VascSelectItem i = new VascSelectItem(t.getName(),t);
res.add(i);
public List<Object> getObjectList() {
return modelList;
}
public List<Object> execute(VascBackendState state) throws VascException {
if (state.getDataParameterKeys().isEmpty()==false) {
List<Object> result = new ArrayList<Object>(modelList.size()/2);
DefaultElementObjectPropertyValue helper = new DefaultElementObjectPropertyValue();
for (Object row:modelList) {
boolean addRow = true;
for (String key:state.getDataParameterKeys()) {
Object keyValue = state.getDataParameter(key);
Object propValue = null;
try {
propValue = helper.getProperty(row, key);
} catch (ElementObjectPropertyValueException e) {
e.printStackTrace();
}
if (keyValue==null && propValue==null) {
continue;
}
if (keyValue.equals(propValue)) {
continue;
}
addRow = false;
}
if (addRow) {
result.add(row);
}
}
return result;
} else {
List<Object> result = new ArrayList<Object>(modelList.size());
for (Object row:modelList) {
result.add(row);
}
return result;
}
}
public void persist(Object object) throws VascException {
modelList.add(object);
}
public Object merge(Object object) throws VascException {
if(modelList.contains(object)==false) {
modelList.add(object);
}
return object;
}
public void delete(Object object) throws VascException {
modelList.remove(object);
}
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
return new BeanPropertyVascEntryFieldValue(field.getBackendName());
}
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
return new BeanVascEntryRecordCreator(modelClass);
}
// --- VascSelectItemModel interface
/*
public List<VascSelectItem> getVascSelectItems(VascEntry entry) {
List<VascSelectItem> res = new ArrayList<VascSelectItem>(4);
for (Object o:testModels) {
TestModelOrder t = (TestModelOrder)o;
VascSelectItem i = new VascSelectItem(t.getName(),t);
res.add(i);
}
return res;
}*/
/**
* @return the nullLabel
*/
public String getNullLabel() {
return nullLabel;
}
/**
* @param nullLabel the nullLabel to set
*/
public void setNullLabel(String nullLabel) {
this.nullLabel = nullLabel;
}
/**
* @return the nullKeyValue
*/
public String getNullKeyValue() {
return nullKeyValue;
}
/**
* @param nullKeyValue the nullKeyValue to set
*/
public void setNullKeyValue(String nullKeyValue) {
this.nullKeyValue = nullKeyValue;
}
return res;
}
/**
* @return the nullLabel
*/
public String getNullLabel() {
return nullLabel;
}
/**
* @param nullLabel the nullLabel to set
*/
public void setNullLabel(String nullLabel) {
this.nullLabel = nullLabel;
}
/**
* @return the nullKeyValue
*/
public String getNullKeyValue() {
return nullKeyValue;
}
/**
* @param nullKeyValue the nullKeyValue to set
*/
public void setNullKeyValue(String nullKeyValue) {
this.nullKeyValue = nullKeyValue;
}
}