2
0
Fork 0

Switch to new meta model,fixed small bugs and made demo work pretty oke.

This commit is contained in:
Willem Cazander 2013-01-11 23:48:36 +01:00
parent afd821c360
commit b3635cf64d
46 changed files with 1055 additions and 688 deletions

View file

@ -45,9 +45,23 @@ public interface VascFrontendDataSelector extends VascFrontendEntry {
public boolean isFieldEditReadOnly(VascEntryField field);
public boolean isFieldList(VascEntryField field);
public List<VascEntryField> getFieldsList();
public enum EntrySelectType {
VIEW,
LINK
}
public List<VascEntryField> getFieldsCreate();
public enum EntryFieldSelectType {
CREATE,
LIST,
EDIT,
ALL,
EXPORT,
GRAPH,
SUM,
SORT
}
public List<VascEntryField> getFieldsEdit();
public List<VascEntryField> getFields(EntryFieldSelectType type);
}

View file

@ -155,6 +155,8 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
// save object on backend
if (persist) {
entry.getVascFrontendController().getVascEntryState().getVascBackend().persist(object);
result = object; // TODO: fix persist
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(1+entry.getVascFrontendController().getVascEntryState().getTotalBackendRecords());
} else {
result = entry.getVascFrontendController().getVascEntryState().getVascBackend().merge(object);
}
@ -185,6 +187,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
removeObjectFromDataList(object);
entry.getVascFrontendController().getVascEntryState().setEntryDataObject(null);
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(entry.getVascFrontendController().getVascEntryState().getTotalBackendRecords()-1);
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.POST_DELETE, object);
} catch (VascException ve) {
throw new VascFrontendException(ve);
@ -195,6 +198,8 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
* @see net.forwardfire.vasc.frontend.VascFrontendHelper#refreshData(net.forwardfire.vasc.core.VascEntry)
*/
public void refreshData() throws VascFrontendException {
// Fire pre read event
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.PRE_READ, null);
entry.getVascFrontendController().getVascEntryState().setEntryDataObject(null);
VascBackendState backendState = entry.getVascFrontendController().getVascEntryState().getVascBackendState();
@ -213,21 +218,21 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
}
}
// Update total every time first
// Always update total records
Long total = entry.getVascFrontendController().getVascEntryState().getVascBackend().fetchTotalExecuteSize(backendState);
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(total);
// check if we need to change the current page if table size if changed in between
int pages = new Long(total/backendState.getPageSize()).intValue();
if (backendState.getPageIndex() > pages) {
backendState.setPageIndex(pages);
}
try {
// Execute to get data.
entry.getVascFrontendController().getVascEntryState().setEntryDataList(entry.getVascFrontendController().getVascEntryState().getVascBackend().execute(backendState));
// check if we need to change the current page
int pages = new Long(total/backendState.getPageSize()).intValue();
if (backendState.getPageIndex() > pages) {
backendState.setPageIndex(pages);
entry.getVascFrontendController().getVascEntryState().setEntryDataList(entry.getVascFrontendController().getVascEntryState().getVascBackend().execute(backendState));
}
// Fire event post read
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.POST_READ, null);
} catch (VascException ve) {
throw new VascFrontendException(ve);
@ -251,12 +256,10 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
public void searchAction(String searchString) throws VascFrontendException {
entry.getVascFrontendController().getVascEntryState().getVascBackendState().setSearchString(searchString);
entry.getVascFrontendController().getVascEntryState().getVascBackendState().setSortField(null);
entry.getVascFrontendController().getVascEntryState().getVascBackendState().setPageIndex(0);
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.SEARCH, searchString);
refreshData();
refreshData();
entry.getVascFrontendController().getVascFrontend().renderView();
}

View file

@ -23,13 +23,15 @@
package net.forwardfire.vasc.impl.frontend;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.actions.VascAction;
import net.forwardfire.vasc.frontend.VascFrontendDataSelector;
import net.forwardfire.vasc.frontend.VascFrontendDataSelector.EntryFieldSelectType;
/**
@ -38,7 +40,7 @@ import net.forwardfire.vasc.frontend.VascFrontendDataSelector;
* @author Willem Cazander
* @version 1.0 Jun 1, 2012
*/
public class DefaultVascFrontendDataSelector implements VascFrontendDataSelector {
public class DefaultVascFrontendDataSelector implements VascFrontendDataSelector {
private VascEntry entry = null;
@ -126,30 +128,48 @@ public class DefaultVascFrontendDataSelector implements VascFrontendDataSelector
*/
private List<VascEntryField> filter() {
public List<VascEntryField> getFields(final EntryFieldSelectType type) {
List<VascEntryField> result = new ArrayList<VascEntryField>(50);
for (VascEntryField vef:entry.getVascEntryFields()) {
for (VascEntryField field:entry.getVascEntryFields()) {
if (EntryFieldSelectType.CREATE.equals(type)) {
if (field.getCreate()!=null && field.getCreate()==false) {
continue;
}
} else if (EntryFieldSelectType.EDIT.equals(type)) {
if (field.getEdit()!=null && field.getEdit()==false) {
continue;
}
} else if (EntryFieldSelectType.LIST.equals(type)) {
if (field.getList()!=null && field.getList()==false) {
continue;
}
}
result.add(field);
}
Collections.sort(result,new Comparator<VascEntryField>() {
@Override
public int compare(VascEntryField o1, VascEntryField o2) {
if (EntryFieldSelectType.CREATE.equals(type)) {
return o1.getOrderCreate().compareTo(o2.getOrderCreate());
} else if (EntryFieldSelectType.EDIT.equals(type)) {
return o1.getOrderEdit().compareTo(o2.getOrderEdit());
} else {
// List is default
return o1.getOrderList().compareTo(o2.getOrderList());
}
}
});
return result;
}
public List<VascEntryField> getFieldsList() {
List<VascEntryField> result = new ArrayList<VascEntryField>(50);
result.addAll(entry.getVascEntryFields());
return result;
}
public List<VascEntryField> getFieldsCreate() {
List<VascEntryField> result = new ArrayList<VascEntryField>(50);
result.addAll(entry.getVascEntryFields());
return result;
}
public List<VascEntryField> getFieldsEdit() {
List<VascEntryField> result = new ArrayList<VascEntryField>(50);
result.addAll(entry.getVascEntryFields());
return result;
}
}

View file

@ -7,7 +7,7 @@
xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd"
providerName="vasc.forwardfire.net"
name="Vasc Config Language"
id="mod-vasc-lang"
id="vasc-lang"
>
<eld:classBindingHandler id="VascEntryLocal-VascEntryFieldSet" parentClass="net.forwardfire.vasc.core.VascEntryLocal" childClass="net.forwardfire.vasc.core.VascEntryFieldSet" method="addVascEntryFieldSet"/>
@ -22,6 +22,7 @@
<eld:elementInterface id="VascBackend" interfaceClass="net.forwardfire.vasc.backend.VascBackend">
<eld:configurator id="VascBackendElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascBackendElementConfigurator" configAction="true"/>
<eld:elementParent tag="root" uri="http://vasc.forwardfire.net/xml/ns/vasc-root"/>
</eld:elementInterface>
<eld:namespace
@ -49,12 +50,14 @@
<!-- Object for building an entry -->
<eld:element tag="entryGroup" objectClass="net.forwardfire.vasc.impl.DefaultVascEntryGroup" >
<eld:configurator id="entryGroup-VascEntryElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascEntryElementConfigurator" configAction="true"/>
<eld:elementParent tag="root" uri="http://vasc.forwardfire.net/xml/ns/vasc-root"/>
</eld:element>
<eld:element tag="entry" objectClass="net.forwardfire.vasc.impl.DefaultVascEntry" >
<eld:configurator id="entry-VascEntryElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascEntryElementConfigurator" configAction="true"/>
<eld:attribute name="accessType">
<conv:enumConverter enumClass="net.forwardfire.vasc.core.VascEntryAccessType"/>
</eld:attribute>
<eld:elementParent tag="root" uri="http://vasc.forwardfire.net/xml/ns/vasc-root"/>
</eld:element>
<eld:element tag="field" objectClass="net.forwardfire.vasc.impl.DefaultVascEntryField" elementClass="net.forwardfire.vasc.impl.x4o.VascEntryFieldElement">
<eld:attribute name="vascEntryFieldType" runBeanFill="false"/>
@ -115,6 +118,7 @@
<eld:element tag="virtualVascBackend" objectClass="net.forwardfire.vasc.backend.VirtualVascBackend">
<eld:configurator id="virtualVascBackend-VascBackendElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascBackendElementConfigurator" configAction="true"/>
<eld:elementParent tag="root" uri="http://vasc.forwardfire.net/xml/ns/vasc-root"/>
</eld:element>
</eld:namespace>