2
0
Fork 0

WIP: left over open files for long...

This commit is contained in:
Willem 2017-06-10 02:22:01 +02:00
parent 0a2398c5c1
commit 76aa74990e
165 changed files with 4299 additions and 3373 deletions

View file

@ -1,46 +1,47 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>vasc</artifactId>
<groupId>net.forwardfire.vasc</groupId>
<version>0.4.2-SNAPSHOT</version>
</parent>
<artifactId>vasc-core</artifactId>
<name>vasc-core</name>
<description>vasc-core</description>
<dependencies>
<dependency>
<groupId>org.x4o</groupId>
<artifactId>x4o-driver</artifactId>
<version>${x4o.version}</version>
</dependency>
<dependency>
<groupId>org.x4o</groupId>
<artifactId>x4o-meta</artifactId>
<version>${x4o.version}</version>
</dependency>
<dependency>
<groupId>net.forwardfire.vasc.backend</groupId>
<artifactId>vasc-backend-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>${persistence-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel</artifactId>
<version>2.1.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>vasc</artifactId>
<groupId>net.forwardfire.vasc</groupId>
<version>0.4.2-SNAPSHOT</version>
</parent>
<artifactId>vasc-core</artifactId>
<name>vasc-core</name>
<description>vasc-core</description>
<dependencies>
<dependency>
<groupId>org.x4o</groupId>
<artifactId>x4o-driver</artifactId>
<version>${x4o.version}</version>
</dependency>
<dependency>
<groupId>org.x4o</groupId>
<artifactId>x4o-meta</artifactId>
<version>${x4o.version}</version>
</dependency>
<dependency>
<groupId>net.forwardfire.vasc.backend</groupId>
<artifactId>vasc-backend-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${javaee-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel</artifactId>
<version>2.1.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View file

@ -26,7 +26,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.core.ui.VascSelectItem;
import net.forwardfire.vasc.backend.select.VascBackendSelectItem;
import net.forwardfire.vasc.core.ui.VascSelectItemModel;
import net.forwardfire.vasc.core.VascException;
@ -54,8 +54,8 @@ public class VascChoicesSelectItemModel implements VascSelectItemModel,Serializa
* @see net.forwardfire.vasc.core.ui.VascSelectItemModel#getVascSelectItems(net.forwardfire.vasc.core.VascEntry)
*/
@Override
public List<VascSelectItem> getVascSelectItems(net.forwardfire.vasc.core.VascEntry entry) throws VascException {
List<VascSelectItem> result = new ArrayList<VascSelectItem>(10);
public List<VascBackendSelectItem> getVascSelectItems(net.forwardfire.vasc.core.VascEntry entry) throws VascException {
List<VascBackendSelectItem> result = new ArrayList<VascBackendSelectItem>(10);
if ("null".equals(vascChoices.nullLabel())==false) {
nullLabel = vascChoices.nullLabel();
nullKeyValue = vascChoices.nullKeyValue();
@ -65,7 +65,7 @@ public class VascChoicesSelectItemModel implements VascSelectItemModel,Serializa
nullKeyValue = "null";
}
String nullLabelText = entry.getVascFrontendController().getVascEntryResourceResolver().getTextValue(nullLabel);
VascSelectItem item = new VascSelectItem(nullLabelText,null,nullKeyValue);
VascBackendSelectItem item = new VascBackendSelectItem(nullLabelText,null,nullKeyValue);
result.add(item);
}
int index = 0;
@ -78,7 +78,7 @@ public class VascChoicesSelectItemModel implements VascSelectItemModel,Serializa
throw new IllegalStateException("Can't have unequal sizes of array of keys and values of vascChoices annotation.");
}
for (String key:a) {
VascSelectItem item = new VascSelectItem();
VascBackendSelectItem item = new VascBackendSelectItem();
String name = null;
if (val) {
name = key;

View file

@ -23,13 +23,14 @@
package net.forwardfire.vasc.backend.proxy;
import java.io.Serializable;
import java.util.EnumSet;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
import net.forwardfire.vasc.backend.list.VascBackendList;
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntry;
/**
@ -38,19 +39,25 @@ import net.forwardfire.vasc.core.VascEntry;
* @author Willem Cazander
* @version 1.0 Apr 1, 2009
*/
abstract public class AbstractVascBackendProxy implements VascBackendProxy {
abstract public class AbstractVascBackendProxy<DATA_PK extends Serializable,DATA_RECORD extends Serializable> implements VascBackendProxy<DATA_PK,DATA_RECORD> {
protected VascBackend<Serializable> backend = null;
protected VascBackendList<DATA_PK,DATA_RECORD> backend = null;
protected VascEntry entry = null;
private volatile boolean running = false;
@Override
abstract public VascBackendProxy clone() throws CloneNotSupportedException;
abstract public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException;
protected void startBackendProxy() {
}
protected void stopBackendProxy() {
}
/**
* @see net.forwardfire.vasc.backend.proxy.VascBackendProxy#initProxy(net.forwardfire.vasc.backend.VascBackend, net.forwardfire.vasc.core.VascEntry)
* @see net.forwardfire.vasc.backend.proxy.VascBackendProxy#initProxy(net.forwardfire.vasc.backend.crud.VascBackendList, net.forwardfire.vasc.core.VascEntry)
*/
@Override
public void initProxy(VascBackend<Serializable> backend, VascEntry entry) {
final public void initProxy(VascBackendList<DATA_PK,DATA_RECORD> backend, VascEntry entry) {
if (backend==null) {
throw new NullPointerException("backend object may not be null.");
}
@ -59,8 +66,35 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy {
}
this.backend=backend;
this.entry=entry;
startBackend();
}
/**
* @see net.forwardfire.vasc.backend.VascBackendLifeCycle#startBackend()
*/
@Override
final public void startBackend() {
startBackendProxy();
running = true;
}
/**
* @see net.forwardfire.vasc.backend.VascBackendLifeCycle#stopBackend()
*/
@Override
final public void stopBackend() {
running = false;
stopBackendProxy();
}
/**
* @see net.forwardfire.vasc.backend.VascBackendLifeCycle#isRunning()
*/
@Override
public boolean isRunning() {
return running;
}
/**
* @see net.forwardfire.vasc.backend.proxy.VascBackendProxy#isProxyNeeded()
*/
@ -70,104 +104,7 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#startBackend()
*/
@Override
public void startBackend() {
backend.startBackend();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#stopBackend()
*/
@Override
public void stopBackend() {
backend.stopBackend();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isReadOnly()
*/
@Override
public boolean isReadOnly() {
return backend.isReadOnly();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isSortable()
*/
@Override
public boolean isSortable() {
return backend.isSortable();
}
/**
* @throws Exception
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
return backend.execute(state);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#delete(java.lang.Object)
*/
@Override
public void delete(Serializable object) throws VascBackendException {
backend.delete(object);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isPageable()
*/
@Override
public boolean isPageable() {
return backend.isPageable();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isSearchable()
*/
@Override
public boolean isSearchable() {
return backend.isSearchable();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#merge(java.lang.Object)
*/
@Override
public Serializable merge(Serializable object) throws VascBackendException {
return backend.merge(object);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#persist(java.lang.Object)
*/
@Override
public void persist(Serializable object) throws VascBackendException {
backend.persist(object);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryFieldValue()
*/
@Override
public VascEntryFieldValue<Serializable> provideVascEntryFieldValue() {
return backend.provideVascEntryFieldValue();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryRecordCreator()
*/
@Override
public VascEntryRecordCreator<Serializable> provideVascEntryRecordCreator() {
return backend.provideVascEntryRecordCreator();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#getId()
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#getId()
*/
@Override
public String getId() {
@ -175,50 +112,25 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setId(java.lang.String)
* @see net.forwardfire.vasc.backend.list.VascBackendList#getSupportedFeatures()
*/
@Override
public void setId(String id) {
backend.setId(id);
public EnumSet<VascBackendListFeature> getSupportedFeatures() {
return backend.getSupportedFeatures(); // backend will always provide cloned copy
}
/**
* @see net.forwardfire.vasc.core.VascBackend#doRecordMoveDownById(VascBackendState state,java.lang.Object)
*/
@Override
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascBackendException {
return backend.doRecordMoveDownById(state,primaryId);
public VascBackendListResult<DATA_RECORD> execute(VascBackendListRequest request) throws VascBackendException {
return backend.execute(request);
}
/**
* @see net.forwardfire.vasc.core.VascBackend#doRecordMoveUpById(VascBackendState state,java.lang.Object)
*/
@Override
public long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascBackendException {
return backend.doRecordMoveUpById(state,primaryId);
public List<String> getSupportedRowActions() {
return backend.getSupportedRowActions();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isRecordMoveable()
*/
@Override
public boolean isRecordMoveable() {
return backend.isRecordMoveable();
public void executeRowAction(VascBackendListRequest request,List<DATA_PK> recordPKs,String actionName) throws VascBackendException {
executeRowAction(request, recordPKs, actionName);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#hasPageSummary()
*/
@Override
public boolean hasPageSummary() {
return backend.hasPageSummary();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#hasTotalSummary()
*/
@Override
public boolean hasTotalSummary() {
return backend.hasTotalSummary();
}
}
}

View file

@ -20,88 +20,45 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.forwardfire.vasc.core.ui;
package net.forwardfire.vasc.backend.proxy;
import java.io.Serializable;
import java.util.EnumSet;
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
/**
* AbstractVascBackendProxyFeature to implement single features of the backend.
*
* @author Willem Cazander
* @version 1.0 Aug 12, 2007
* @version 1.0 Aug 27, 2014
*/
public class VascSelectItem {
private String label = null;
private Serializable value = null;
private String keyValue = null;
private boolean disabled = false;
abstract public class AbstractVascBackendProxyFeature<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxy<DATA_PK,DATA_RECORD> {
public VascSelectItem() {
}
public VascSelectItem(String label,Serializable value) {
setLabel(label);
setValue(value);
}
public VascSelectItem(String label,Serializable value,String keyValue) {
setLabel(label);
setValue(value);
setKeyValue(keyValue);
private final VascBackendListFeature proxyFeature;
private final VascBackendListFeature proxyFeatureExtraFlag;
protected AbstractVascBackendProxyFeature(VascBackendListFeature proxyFeature,VascBackendListFeature proxyFeatureExtraFlag) {
this.proxyFeature=proxyFeature;
this.proxyFeatureExtraFlag=proxyFeatureExtraFlag;
}
/**
* @return the label
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#isProxyNeeded()
*/
public String getLabel() {
return label;
@Override
final public boolean isProxyNeeded() {
return !backend.getSupportedFeatures().contains(proxyFeature);
}
/**
* @param label the label to set
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#getSupportedFeatures()
*/
public void setLabel(String label) {
this.label = label;
}
/**
* @return the value
*/
public Serializable getValue() {
return value;
}
/**
* @param value the value to set
*/
public void setValue(Serializable value) {
this.value = value;
}
/**
* @return the keyValue
*/
public String getKeyValue() {
return keyValue;
}
/**
* @param keyValue the keyValue to set
*/
public void setKeyValue(String keyValue) {
this.keyValue = keyValue;
}
/**
* @return the disabled
*/
public boolean isDisabled() {
return disabled;
}
/**
* @param disabled the disabled to set
*/
public void setDisabled(boolean disabled) {
this.disabled = disabled;
@Override
final public EnumSet<VascBackendListFeature> getSupportedFeatures() {
EnumSet<VascBackendListFeature> result = super.getSupportedFeatures();
result.add(proxyFeature);
result.add(proxyFeatureExtraFlag);
return result;
}
}

View file

@ -24,7 +24,8 @@ package net.forwardfire.vasc.backend.proxy;
import java.io.Serializable;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendLifeCycle;
import net.forwardfire.vasc.backend.list.VascBackendList;
import net.forwardfire.vasc.core.VascEntry;
/**
@ -33,11 +34,11 @@ import net.forwardfire.vasc.core.VascEntry;
* @author Willem Cazander
* @version 1.0 May 9, 2012
*/
public interface VascBackendProxy extends VascBackend<Serializable>,Cloneable {
public interface VascBackendProxy<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends VascBackendList<DATA_PK,DATA_RECORD>,VascBackendLifeCycle<DATA_PK>,Cloneable {
void initProxy(VascBackend<Serializable> backend,VascEntry entry);
void initProxy(VascBackendList<DATA_PK,DATA_RECORD> backend,VascEntry entry);
boolean isProxyNeeded();
VascBackendProxy clone() throws CloneNotSupportedException;
VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException;
}

View file

@ -1,167 +0,0 @@
/*
* 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.backend.proxy;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
/**
* Does simple caching for the data.
*
* @author Willem Cazander
* @version 1.0 Nov 19, 2009
*/
public class VascBackendProxyCache extends AbstractVascBackendProxy {
private VascBackendResult<Serializable> data = null;
private String searchString = null;
private Map<String,Object> dataState = null;
private int pageIndex = 0;
private int pageSize = 0;
private int pageSizeMax = 0;
private String sortField = null;
private boolean sortDir = true;
private boolean requestFlush = false;
public VascBackendProxyCache() {
dataState = new HashMap<String,Object>(10);
}
/**
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxyCache result = new VascBackendProxyCache();
return result;
}
private boolean isStateChanged(VascBackendState state) {
boolean changed = false;
for (String key:state.getDataParameterKeys()) {
Object value = state.getDataParameter(key);
Object valueLast = dataState.get(key);
dataState.put(key, value);
if (value==null & valueLast==null) {
continue;
}
if (value==null & valueLast!=null) {
changed = true;
break;
}
if (value.equals(valueLast)==false) {
changed = true;
break;
}
}
if (state.getSortField()!=null && state.getSortField().equals(sortField)==false) {
changed = true;
}
sortField = state.getSortField();
if (state.isSortAscending()==sortDir) {
changed = true;
}
sortDir = state.isSortAscending();
if (state.getPageSizeMax()==pageSizeMax) {
changed = true;
}
pageSizeMax = state.getPageSizeMax();
if (state.getPageSize()==pageSize) {
changed = true;
}
pageSize = state.getPageSize();
if (state.getPageIndex()==pageIndex) {
changed = true;
}
pageIndex = state.getPageIndex();
if (state.getSearchString()!=null && state.getSearchString().equals(searchString)==false) {
changed = true;
}
searchString = state.getSearchString();
if (requestFlush) {
requestFlush = false;
changed = true;
}
return changed;
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#stopBackend()
*/
@Override
public void stopBackend() {
super.stopBackend();
data = null;
dataState.clear();
requestFlush = true;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
boolean changed = isStateChanged(state);
if (data==null | changed) {
data = backend.execute(state);
}
return data;
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#delete(java.lang.Object)
*/
@Override
public void delete(Serializable object) throws VascBackendException {
requestFlush = true;
super.delete(object);
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#merge(java.lang.Object)
*/
@Override
public Serializable merge(Serializable object) throws VascBackendException {
requestFlush = true;
return super.merge(object);
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#persist(java.lang.Object)
*/
@Override
public void persist(Serializable object) throws VascBackendException {
requestFlush = true;
super.persist(object);
}
}

View file

@ -26,10 +26,10 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryBackendEventListener;
import net.forwardfire.vasc.core.entry.VascEntryBackendEventListener.VascBackendEventType;
@ -40,7 +40,7 @@ import net.forwardfire.vasc.core.entry.VascEntryBackendEventListener.VascBackend
* @author Willem Cazander
* @version 1.0 Sep 21, 2010
*/
public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
public class VascBackendProxyEventExecutor<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxy<DATA_PK,DATA_RECORD> {
private List<VascEntryBackendEventListener> listeners = null;
@ -48,13 +48,13 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxyEventExecutor result = new VascBackendProxyEventExecutor();
public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException {
VascBackendProxyEventExecutor<DATA_PK,DATA_RECORD> result = new VascBackendProxyEventExecutor<>();
return result;
}
@Override
public void initProxy(VascBackend<Serializable> backend,VascEntry entry) {
public void initProxy(VascBackendCrud<Serializable> backend,VascEntry entry) {
super.initProxy(backend, entry);
this.entry=entry;
this.listeners=new ArrayList<VascEntryBackendEventListener>(10);
@ -115,10 +115,10 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveDownById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveDownById(net.forwardfire.vasc.backend.list.VascBackendListRequest, java.lang.Object)
*/
@Override
public long doRecordMoveDownById(VascBackendState state, Object primaryId) throws VascBackendException {
public long doRecordMoveDownById(VascBackendListRequest state, Object primaryId) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_MOVE_DOWN,primaryId);
Long result = super.doRecordMoveDownById(state, primaryId);
fireVascEvent(VascBackendEventType.POST_MOVE_DOWN,result);
@ -126,10 +126,10 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveUpById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveUpById(net.forwardfire.vasc.backend.list.VascBackendListRequest, java.lang.Object)
*/
@Override
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascBackendException {
public long doRecordMoveUpById(VascBackendListRequest state, Object primaryId) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_MOVE_UP,primaryId);
Long result = super.doRecordMoveUpById(state, primaryId);
fireVascEvent(VascBackendEventType.POST_MOVE_UP,result);
@ -137,12 +137,12 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#execute(net.forwardfire.vasc.backend.VascBackendState)
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#execute(net.forwardfire.vasc.backend.list.VascBackendListRequest)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
public VascBackendListResult<Serializable> execute(VascBackendListRequest state) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_EXECUTE,state);
VascBackendResult<Serializable> result = super.execute(state);
VascBackendListResult<Serializable> result = super.execute(state);
fireVascEvent(VascBackendEventType.POST_EXECUTE,result);
return result;
}

View file

@ -26,12 +26,10 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.backend.list.DefaultVascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
/**
* Simple filter support
@ -39,7 +37,7 @@ import net.forwardfire.vasc.core.VascEntry;
* @author Willem Cazander
* @version 1.0 Oct 27, 2007
*/
public class VascBackendProxyFilter extends AbstractVascBackendProxy {
public class VascBackendProxyFilter<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxy<DATA_PK,DATA_RECORD> {
private List<VascProxyFilter> filters = null;
@ -47,17 +45,16 @@ public class VascBackendProxyFilter extends AbstractVascBackendProxy {
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxyFilter result = new VascBackendProxyFilter();
public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException {
VascBackendProxyFilter<DATA_PK,DATA_RECORD> result = new VascBackendProxyFilter<>();
return result;
}
/**
* @see net.forwardfire.vasc.backend.proxy.VascBackendProxy#initProxy(net.forwardfire.vasc.backend.VascBackend, net.forwardfire.vasc.core.VascEntry)
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#startBackendProxy()
*/
@Override
public void initProxy(VascBackend<Serializable> backend, VascEntry entry) {
super.initProxy(backend,entry);
protected void startBackendProxy() {
filters = entry.getVascBackendFilters();
for (VascProxyFilter filter:filters) {
filter.initFilter(entry);
@ -76,19 +73,19 @@ public class VascBackendProxyFilter extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#execute(VascBackendListRequest state)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
VascBackendResult<Serializable> result = backend.execute(state);
public VascBackendListResult<Serializable> execute(VascBackendListRequest state) throws VascBackendException {
VascBackendListResult<Serializable> result = backend.execute(state);
if (filters==null) {
return result;
}
if (filters.isEmpty()) {
return result;
}
List<Serializable> search = new ArrayList<Serializable>(result.getPageData().size()/2);
for (Serializable o:result.getPageData()) {
List<Serializable> search = new ArrayList<Serializable>(result.getData().size()/2);
for (Serializable o:result.getData()) {
for (VascProxyFilter filter:filters) {
Serializable r = filter.filterObject(o);
if (r!=null) {
@ -96,6 +93,6 @@ public class VascBackendProxyFilter extends AbstractVascBackendProxy {
}
}
}
return new DefaultVascBackendResult<Serializable>(search,search.size());
return new DefaultVascBackendListResult<Serializable>(search,search.size());
}
}

View file

@ -26,10 +26,11 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.DefaultVascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
/**
* Simulates a real pages backend.
@ -37,42 +38,26 @@ import net.forwardfire.vasc.backend.VascBackendState;
* @author Willem Cazander
* @version 1.0 Oct 27, 2007
*/
public class VascBackendProxyPaged extends AbstractVascBackendProxy {
public class VascBackendProxyPaged<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxyFeature<DATA_PK,DATA_RECORD> {
public VascBackendProxyPaged() {
super(VascBackendListFeature.PAGE_DATA,VascBackendListFeature.PAGE_DATA_PROXY);
}
/**
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxyPaged result = new VascBackendProxyPaged();
return result;
public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException {
return new VascBackendProxyPaged<DATA_PK,DATA_RECORD>();
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#isProxyNeeded()
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#execute(VascBackendListRequest state)
*/
@Override
public boolean isProxyNeeded() {
if (backend.isPageable()) {
return false;
}
return true;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isPageable()
*/
@Override
public boolean isPageable() {
return true;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
VascBackendResult<Serializable> allData = backend.execute(state);
public VascBackendListResult<DATA_RECORD> execute(VascBackendListRequest state) throws VascBackendException {
VascBackendListResult<Serializable> allData = backend.execute(state);
int pageSize = state.getPageSize();
if (pageSize==0) {
return allData;
@ -81,12 +66,12 @@ public class VascBackendProxyPaged extends AbstractVascBackendProxy {
int off = state.getPageIndex()*pageSize;
int offMax = off+state.getPageSize();
for (int i=off;i<offMax;i++) {
if (i>=allData.getPageData().size()) {
if (i>=allData.getData().size()) {
break;
}
Serializable o = allData.getPageData().get(i);
Serializable o = allData.getData().get(i);
paged.add(o);
}
return new DefaultVascBackendResult<Serializable>(paged,allData.getPageData().size());
return new DefaultVascBackendListResult<DATA_RECORD>(paged,allData.getData().size());
}
}
}

View file

@ -26,11 +26,12 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.backend.list.DefaultVascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntryField;
/**
@ -39,42 +40,27 @@ import net.forwardfire.vasc.core.VascEntryField;
* @author Willem Cazander
* @version 1.0 Oct 27, 2007
*/
public class VascBackendProxySearch extends AbstractVascBackendProxy {
public class VascBackendProxySearch<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxyFeature<DATA_PK,DATA_RECORD> {
public VascBackendProxySearch() {
super(VascBackendListFeature.TEXT_SEARCH,VascBackendListFeature.TEXT_SEARCH_PROXY);
}
/**
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxySearch result = new VascBackendProxySearch();
public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException {
VascBackendProxySearch<DATA_PK,DATA_RECORD> result = new VascBackendProxySearch<>();
return result;
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#isProxyNeeded()
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#execute(VascBackendListRequest state)
*/
@Override
public boolean isProxyNeeded() {
if (backend.isSearchable()) {
return false;
}
return true;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isSearchable()
*/
@Override
public boolean isSearchable() {
return true;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
VascBackendResult<Serializable> result = backend.execute(state);
public VascBackendListResult<Serializable> execute(VascBackendListRequest state) throws VascBackendException {
VascBackendListResult<Serializable> result = backend.execute(state);
if (state.getSearchString()==null) {
return result;
}
@ -82,59 +68,21 @@ public class VascBackendProxySearch extends AbstractVascBackendProxy {
return result;
}
String searchString = state.getSearchString().toLowerCase();
List<Serializable> search = new ArrayList<Serializable>(result.getPageData().size()/4);
for (Serializable record:result.getPageData()) {
List<Serializable> search = new ArrayList<Serializable>(result.getData().size()/4);
for (Serializable record:result.getData()) {
for (VascEntryField field:entry.getVascEntryFields()) {
VascEntryFieldValue<Serializable> fieldValue = backend.provideVascEntryFieldValue();
VascBackendAccessDataRecord<Serializable,Serializable> fieldValue = backend.provideVascEntryFieldValue();
Serializable value = fieldValue.getValue(field.getBackendName(), record);
if (value==null) {
continue; // can't search null values.
}
String r = value.toString().toLowerCase();
if (r.contains(searchString)) {
search.add(record);
break;
}
}
/*
for (Method method:o.getClass().getMethods()) {
if (method.getName().startsWith("get")==false) { //a bit durty
continue;
}
if (method.getName().equals("getClass")) {
continue;
}
if (method.getReturnType().isAssignableFrom(Collection.class)) {
continue;
}
if (method.getReturnType().isAssignableFrom(List.class)) {
continue;
}
if (method.getReturnType().isAssignableFrom(Set.class)) {
continue;
}
if (method.getReturnType().isAssignableFrom(Map.class)) {
continue;
}
Object res;
try {
res = method.invoke(o,new Object[]{});
} catch (Exception e) {
throw new VascException(e);
if (r.contains(searchString)) {
search.add(record);
break;
}
if (res==null) {
continue;
}
String r = res.toString().toLowerCase();
if (r.contains(searchString)) {
search.add(o);
break;
}
}
*/
}
}
//records = search.size();
return new DefaultVascBackendResult<Serializable>(search);
return new DefaultVascBackendListResult<Serializable>(search);
}
}

View file

@ -27,9 +27,10 @@ import java.util.Collections;
import java.util.Comparator;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntryField;
/**
@ -38,28 +39,21 @@ import net.forwardfire.vasc.core.VascEntryField;
* @author Willem Cazander
* @version 1.0 Oct 27, 2007
*/
public class VascBackendProxySort extends AbstractVascBackendProxy {
public class VascBackendProxySort<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxyFeature<DATA_PK,DATA_RECORD> {
public VascBackendProxySort() {
super(VascBackendListFeature.SORT_DATA,VascBackendListFeature.SORT_DATA_PROXY);
}
/**
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxySort result = new VascBackendProxySort();
public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException {
VascBackendProxySort<DATA_PK,DATA_RECORD> result = new VascBackendProxySort<>();
return result;
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#isProxyNeeded()
*/
@Override
public boolean isProxyNeeded() {
if (backend.isSortable()) {
return false;
}
return true;
}
public VascEntryField getVascEntryFieldByBackendName(String linkId) {
for (VascEntryField a:entry.getVascEntryFields()) {
if (a.getBackendName().equals(linkId)) {
@ -70,31 +64,32 @@ public class VascBackendProxySort extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#execute(VascBackendListRequest state)
*/
@SuppressWarnings("unchecked")
@Override
public VascBackendResult<Serializable> execute(final VascBackendState state) throws VascBackendException {
VascBackendResult<Serializable> result = backend.execute(state);
public VascBackendListResult<DATA_RECORD> execute(final VascBackendListRequest state) throws VascBackendException {
VascBackendListResult<DATA_RECORD> result = backend.execute(state);
if (state.getSortField()==null) {
return result;
}
final VascEntryField field = getVascEntryFieldByBackendName(state.getSortField());
final VascEntryFieldValue<Serializable> fieldValue = backend.provideVascEntryFieldValue();
Collections.sort(result.getPageData(), new Comparator<Serializable>() {
final VascBackendAccessDataRecord<Serializable,Serializable> fieldValue = backend.provideVascEntryFieldValue();
Collections.sort(result.getData(), new Comparator<Serializable>() {
@SuppressWarnings("rawtypes")
@Override
public int compare(Serializable o1, Serializable o2) {
try {
Comparable c1 = null;
Comparable c2 = null;
if (field.getDisplayName()!=null) {
c1 = fieldValue.getDisplayValue(field.getBackendName(), o1);
c2 = fieldValue.getDisplayValue(field.getBackendName(), o2);
} else {
// if (field.getDisplayName()!=null) {
// c1 = fieldValue.getValue(field.getBackendName(), o1);
// c2 = fieldValue.getValue(field.getBackendName(), o2);
// } else {
// TODO: fix none Comparable goes toString
c1 = (Comparable)fieldValue.getValue(field.getBackendName(), o1);
c2 = (Comparable)fieldValue.getValue(field.getBackendName(), o2);
}
// }
if (c1==null & c2==null) {
return 0;
}

View file

@ -27,8 +27,8 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
/**
* Does simple timer logging for the backend actions.
@ -36,7 +36,7 @@ import net.forwardfire.vasc.backend.VascBackendState;
* @author Willem Cazander
* @version 1.0 Nov 19, 2009
*/
public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
public class VascBackendProxyTimerLogger<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendProxy<DATA_PK,DATA_RECORD> {
protected Logger logger = null;
protected Level logLevel = Level.INFO;
@ -49,17 +49,17 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see java.lang.Object#clone()
*/
@Override
public VascBackendProxy clone() throws CloneNotSupportedException {
VascBackendProxyTimerLogger result = new VascBackendProxyTimerLogger();
public VascBackendProxy<DATA_PK,DATA_RECORD> clone() throws CloneNotSupportedException {
VascBackendProxyTimerLogger<DATA_PK,DATA_RECORD> result = new VascBackendProxyTimerLogger<>();
result.logLevel=logLevel;
return result;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#execute(VascBackendListRequest state)
*/
@Override
public VascBackendResult<Serializable> execute(VascBackendState state) throws VascBackendException {
public VascBackendListResult<Serializable> execute(VascBackendListRequest state) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.execute(state);
@ -70,13 +70,13 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveDownById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveDownById(net.forwardfire.vasc.backend.list.VascBackendListRequest, java.lang.Object)
*/
@Override
public long doRecordMoveDownById(VascBackendState state, Object primaryId) throws VascBackendException {
public long doRecordMoveDownById(VascBackendListRequest request,Serializable recordPK) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.doRecordMoveDownById(state, primaryId);
return backend.doRecordMoveDownById(request, recordPK);
} finally {
long t2 = System.currentTimeMillis();
logger.log(logLevel,"vasc-doRecordMoveDownById backend: "+getId()+" in "+(t2-t1)+" ms");
@ -84,61 +84,19 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveUpById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveUpById(net.forwardfire.vasc.backend.list.VascBackendListRequest, java.lang.Object)
*/
@Override
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascBackendException {
public long doRecordMoveUpById(VascBackendListRequest request,Serializable recordPK) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.doRecordMoveUpById(state, primaryId);
return backend.doRecordMoveUpById(request, recordPK);
} finally {
long t2 = System.currentTimeMillis();
logger.log(logLevel,"vasc-doRecordMoveUpById backend: "+getId()+" in "+(t2-t1)+" ms");
}
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#delete(java.lang.Object)
*/
@Override
public void delete(Serializable object) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
backend.delete(object);
} finally {
long t2 = System.currentTimeMillis();
logger.log(logLevel,"vasc-delete backend: "+getId()+" in "+(t2-t1)+" ms");
}
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#merge(java.lang.Object)
*/
@Override
public Serializable merge(Serializable object) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.merge(object);
} finally {
long t2 = System.currentTimeMillis();
logger.log(logLevel,"vasc-merge backend: "+getId()+" in "+(t2-t1)+" ms");
}
}
/**
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#persist(java.lang.Object)
*/
@Override
public void persist(Serializable object) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
backend.persist(object);
} finally {
long t2 = System.currentTimeMillis();
logger.log(logLevel,"vasc-persist backend: "+getId()+" in "+(t2-t1)+" ms");
}
}
/**
* @return the logLevel
*/

View file

@ -26,7 +26,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.core.base.AbstractVascBaseIdRoleCrudOrderMetaLocal;
import net.forwardfire.vasc.validators.VascValidator;
@ -43,7 +43,7 @@ abstract public class AbstractVascEntryFieldLocal extends AbstractVascBaseIdRole
private String backendName = null;
private String displayName = null;
private VascEntryFieldType vascEntryFieldType = null;
private VascEntryFieldValue<Serializable> vascEntryFieldValue = null;
private VascBackendAccessDataRecord<Serializable,Serializable> vascEntryFieldValue = null;
private List<VascValidator> vascValidators = null;
private Serializable defaultValue = null;
private Integer sizeList = null;
@ -147,7 +147,7 @@ abstract public class AbstractVascEntryFieldLocal extends AbstractVascBaseIdRole
* @return the vascEntryFieldValue
*/
@Override
public VascEntryFieldValue<Serializable> getVascEntryFieldValue() {
public VascBackendAccessDataRecord<Serializable,Serializable> getVascEntryFieldValue() {
return vascEntryFieldValue;
}
@ -155,7 +155,7 @@ abstract public class AbstractVascEntryFieldLocal extends AbstractVascBaseIdRole
* @param vascEntryFieldValue the vascEntryFieldValue to set
*/
@Override
public void setVascEntryFieldValue(VascEntryFieldValue<Serializable> vascEntryFieldValue) {
public void setVascEntryFieldValue(VascBackendAccessDataRecord<Serializable,Serializable> vascEntryFieldValue) {
this.vascEntryFieldValue = vascEntryFieldValue;
}

View file

@ -28,8 +28,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
/**
* Holds all default state values
@ -43,11 +43,11 @@ abstract public class AbstractVascEntryState implements VascEntryState {
private List<Serializable> entryDataList = null;
private Serializable entryDataObject = null;
private Long totalBackendRecords = null;
private VascBackendState vascBackendState = null;
private VascBackendListRequest vascBackendState = null;
private VascEntryState state = null;
private Map<Integer,Boolean> multiActionSelection = null;
private boolean isEditCreate = false;
private VascBackend<Serializable> vascBackend = null;
private VascBackendCrud<Serializable,Serializable> vascBackend = null;
private VascEntry vascEntry = null;
public AbstractVascEntryState() {
@ -91,7 +91,7 @@ abstract public class AbstractVascEntryState implements VascEntryState {
* @return the vascBackendState
*/
@Override
public VascBackendState getVascBackendState() {
public VascBackendListRequest getVascBackendState() {
return vascBackendState;
}
@ -99,7 +99,7 @@ abstract public class AbstractVascEntryState implements VascEntryState {
* @param vascBackendState the vascBackendState to set
*/
@Override
public void setVascBackendState(VascBackendState vascBackendState) {
public void setVascBackendState(VascBackendListRequest vascBackendState) {
this.vascBackendState = vascBackendState;
}
@ -143,7 +143,7 @@ abstract public class AbstractVascEntryState implements VascEntryState {
* @return the vascBackend
*/
@Override
public VascBackend<Serializable> getVascBackend() {
public VascBackendCrud<Serializable,Serializable> getVascBackend() {
return vascBackend;
}
@ -151,7 +151,7 @@ abstract public class AbstractVascEntryState implements VascEntryState {
* @param vascBackend the vascBackend to set
*/
@Override
public void setVascBackend(VascBackend<Serializable> vascBackend) {
public void setVascBackend(VascBackendCrud<Serializable,Serializable> vascBackend) {
this.vascBackend = vascBackend;
}

View file

@ -25,7 +25,7 @@ package net.forwardfire.vasc.core;
import java.io.Serializable;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.core.entry.VascEntryExport;
import net.forwardfire.vasc.core.VascException;
@ -46,9 +46,9 @@ public interface VascEntryConfigController {
void configVascEntry(VascController vascController,VascEntryLocal vascEntry) throws VascException;
VascBackend<Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry) throws VascException;
VascBackendCrud<Serializable,Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry) throws VascException;
VascBackend<Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry,VascBackend<Serializable> realBackend) throws VascException;
VascBackendCrud<Serializable,Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry,VascBackendCrud<Serializable,Serializable> realBackend) throws VascException;
List<String> getVascEntryExporterIds();

View file

@ -24,7 +24,7 @@ package net.forwardfire.vasc.core;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.backend.proxy.VascBackendProxy;
import net.forwardfire.vasc.core.entry.VascEntryExport;
import net.forwardfire.vasc.core.entry.VascEntryFieldValidatorService;
@ -60,7 +60,7 @@ public interface VascEntryConfigControllerLocal extends VascEntryConfigControlle
void removeVascEntryExporter(VascEntryExport exporter);
VascBackendState getMasterVascBackendState();
VascBackendListRequest getMasterVascBackendState();
void setResourceBundle(String resourceBundle);

View file

@ -25,7 +25,7 @@ package net.forwardfire.vasc.core;
import java.io.Serializable;
import java.util.List;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.core.base.VascBaseIdRoleCrudOrderMeta;
import net.forwardfire.vasc.validators.VascValidator;
@ -56,7 +56,7 @@ public interface VascEntryField extends VascBaseIdRoleCrudOrderMeta {
/**
* @return the vascEntryFieldValue
*/
VascEntryFieldValue<Serializable> getVascEntryFieldValue();
VascBackendAccessDataRecord<Serializable,Serializable> getVascEntryFieldValue();
/**
* @return the vascValidators

View file

@ -24,7 +24,7 @@ package net.forwardfire.vasc.core;
import java.io.Serializable;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.core.base.VascBaseIdRoleCrudOrderMetaLocal;
import net.forwardfire.vasc.validators.VascValidator;
@ -55,7 +55,7 @@ public interface VascEntryFieldLocal extends VascEntryField,VascBaseIdRoleCrudOr
/**
* @param vascEntryFieldValue the vascEntryFieldValue to set
*/
void setVascEntryFieldValue(VascEntryFieldValue<Serializable> vascEntryFieldValue);
void setVascEntryFieldValue(VascBackendAccessDataRecord<Serializable,Serializable> vascEntryFieldValue);
/**
* @param vascValidator the vascValidator to add

View file

@ -26,8 +26,8 @@ import java.io.Serializable;
import java.util.List;
import java.util.Map;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
/**
* Holds all the data for state.
@ -61,12 +61,12 @@ public interface VascEntryState extends Serializable {
/**
* @return the vascBackendState
*/
VascBackendState getVascBackendState();
VascBackendListRequest getVascBackendState();
/**
* @param vascBackendState the vascBackendState to set
*/
void setVascBackendState(VascBackendState vascBackendState);
void setVascBackendState(VascBackendListRequest vascBackendState);
/**
* @return the totalBackendRecords
@ -97,12 +97,12 @@ public interface VascEntryState extends Serializable {
/**
* @return the vascBackend
*/
public VascBackend<Serializable> getVascBackend();
public VascBackendCrud<Serializable,Serializable> getVascBackend();
/**
* @param vascBackend the vascBackend to set
*/
void setVascBackend(VascBackend<Serializable> vascBackend);
void setVascBackend(VascBackendCrud<Serializable,Serializable> vascBackend);
/**
* @return the isEditCreate

View file

@ -1,6 +1,6 @@
package net.forwardfire.vasc.core;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.frontend.VascFrontendActions;
import net.forwardfire.vasc.frontend.VascFrontendControllerLocal;
import net.forwardfire.vasc.frontend.VascFrontendDataSelector;
@ -19,7 +19,7 @@ public interface VascInterfaceLoader {
VascEntryState createVascEntryStateImpl();
VascBackendState createVascBackendStateImpl();
VascBackendListRequest createVascBackendStateImpl();
VascFrontendControllerLocal createVascFrontendControllerLocalImpl();

View file

@ -25,6 +25,7 @@ package net.forwardfire.vasc.core.ui;
import java.io.Serializable;
import java.util.List;
import net.forwardfire.vasc.backend.select.VascBackendSelectItem;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascException;
@ -42,7 +43,7 @@ public interface VascSelectItemModel extends Serializable {
* @return
* @throws VascException
*/
List<VascSelectItem> getVascSelectItems(VascEntry entry) throws VascException;
List<VascBackendSelectItem> getVascSelectItems(VascEntry entry) throws VascException;
/**
* @return the nullLabel

View file

@ -30,10 +30,10 @@ import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import net.forwardfire.vasc.backend.DefaultVascBackendState;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.backend.list.DefaultVascBackendListRequest;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.backend.proxy.VascBackendProxy;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascEntry;
@ -69,7 +69,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
private Map<VascInterfaceKey,Class<?>> vascInterfaceImpls = null;
private Map<VascInterfaceKeyFrontend,Class<?>> vascInterfaceImplFrontends = null;
private VascInterfaceLoader vascInterfaceLoader = null;
private VascBackendState masterVascBackendState = null;
private VascBackendListRequest masterVascBackendState = null;
private String resourceBundle = null;
public DefaultVascEntryConfigController() {
@ -80,7 +80,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
vascInterfaceImpls = new HashMap<VascInterfaceKey,Class<?>>(VascInterfaceKey.values().length);
vascInterfaceImplFrontends = new HashMap<VascInterfaceKeyFrontend,Class<?>>(VascInterfaceKeyFrontend.values().length);
vascInterfaceLoader = new DefaultVascInterfaceLoader(this);
masterVascBackendState = new DefaultVascBackendState();
masterVascBackendState = new DefaultVascBackendListRequest();
masterVascBackendState.setPageSize(100);
masterVascBackendState.setPageSizeMax(1500);
}
@ -177,8 +177,8 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
* @see net.forwardfire.vasc.core.VascEntryConfigController#configVascBackendProxied(net.forwardfire.vasc.core.VascController, net.forwardfire.vasc.core.VascEntry)
*/
@Override
public VascBackend<Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry) throws VascException {
VascBackend<Serializable> realBackend = vascController.getVascBackendController().getVascBackendById(vascEntry.getBackendId());
public VascBackendCrud<Serializable,Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry) throws VascException {
VascBackendCrud<Serializable,Serializable> realBackend = vascController.getVascBackendController().getVascBackendById(VascBackendCrud.class,vascEntry.getBackendId());
if (realBackend==null) {
throw new VascException("Could not find backend: "+vascEntry.getBackendId());
}
@ -186,11 +186,11 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
}
/**
* @see net.forwardfire.vasc.core.VascEntryConfigController#configVascBackendProxied(net.forwardfire.vasc.core.VascController, net.forwardfire.vasc.core.VascEntry, net.forwardfire.vasc.backend.VascBackend)
* @see net.forwardfire.vasc.core.VascEntryConfigController#configVascBackendProxied(net.forwardfire.vasc.core.VascController, net.forwardfire.vasc.core.VascEntry, net.forwardfire.vasc.backend.crud.VascBackendCrud)
*/
@Override
public VascBackend<Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry, VascBackend<Serializable> realBackend) throws VascException {
VascBackend<Serializable> backend = realBackend;
public VascBackendCrud<Serializable,Serializable> configVascBackendProxied(VascController vascController,VascEntry vascEntry, VascBackendCrud<Serializable,Serializable> realBackend) throws VascException {
VascBackendCrud<Serializable,Serializable> backend = realBackend;
for (VascBackendProxy proxy:backendProxies) {
VascBackendProxy proxyClone;
try {
@ -217,7 +217,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
// get the interface loader and create some impl objects
VascInterfaceLoader loader = getVascInterfaceLoader();
VascFrontendControllerLocal controller = loader.createVascFrontendControllerLocalImpl();
VascBackendState backendState = loader.createVascBackendStateImpl();
VascBackendListRequest backendState = loader.createVascBackendStateImpl();
VascEntryState state = loader.createVascEntryStateImpl();
// Add impl to tree
@ -234,7 +234,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
controller.setVascFrontendUserSettingController( loader.createVascFrontendUserSettingControllerImpl(entry));
// Config backend state from master template
VascBackendState master = getMasterVascBackendState();
VascBackendListRequest master = getMasterVascBackendState();
for (String key:master.getDataParameterKeys()) {
backendState.setDataParameter(key, master.getDataParameter(key));
}
@ -257,14 +257,14 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
}
// Add backend to entry
VascBackend<Serializable> backend = vascController.getVascEntryConfigController().configVascBackendProxied(vascController, entry);
VascBackendCrud<Serializable,Serializable> backend = vascController.getVascEntryConfigController().configVascBackendProxied(vascController, entry);
controller.getVascEntryState().setVascBackend(backend);
controller.getVascEntryState().setVascEntry(entry);
// Fetch all data field value impl for this backend.
for (VascEntryField field:entry.getVascEntryFields()) {
if (field.getVascEntryFieldValue()==null) {
VascEntryFieldValue<Serializable> v = backend.provideVascEntryFieldValue();
VascBackendAccessDataRecord<Serializable,Serializable> v = backend.provideVascEntryFieldValue();
((VascEntryFieldLocal)field).setVascEntryFieldValue(v);
}
}
@ -422,7 +422,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
* @see net.forwardfire.vasc.core.VascEntryConfigControllerLocal#getMasterVascBackendState()
*/
@Override
public VascBackendState getMasterVascBackendState() {
public VascBackendListRequest getMasterVascBackendState() {
return masterVascBackendState;
}
}

View file

@ -23,7 +23,7 @@
package net.forwardfire.vasc.impl;
import net.forwardfire.vasc.backend.DefaultVascBackendController;
import net.forwardfire.vasc.backend.DefaultVascBackendState;
import net.forwardfire.vasc.backend.list.DefaultVascBackendListRequest;
import net.forwardfire.vasc.backend.proxy.VascBackendProxyCache;
import net.forwardfire.vasc.backend.proxy.VascBackendProxyEventExecutor;
import net.forwardfire.vasc.backend.proxy.VascBackendProxyFilter;
@ -73,7 +73,7 @@ public class DefaultVascFactory {
vascConfig.putVascInterfaceImplemention(VascInterfaceKey.VASC_ENTRY_LINK, DefaultVascEntryLink.class);
vascConfig.putVascInterfaceImplemention(VascInterfaceKey.VASC_ENTRY_LIST_OPTION, DefaultVascEntryListOption.class);
vascConfig.putVascInterfaceImplemention(VascInterfaceKey.VASC_BACKEND_STATE, DefaultVascBackendState.class);
vascConfig.putVascInterfaceImplemention(VascInterfaceKey.VASC_BACKEND_STATE, DefaultVascBackendListRequest.class);
vascConfig.putVascInterfaceImplemention(VascInterfaceKey.VASC_FRONTEND_CONTROLLER_LOCAL, DefaultVascFrontendController.class);
vascConfig.putVascInterfaceImplementionFrontend(VascInterfaceKeyFrontend.VASC_FRONTEND_ACTIONS, DefaultVascFrontendActions.class);

View file

@ -22,7 +22,7 @@
package net.forwardfire.vasc.impl;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryConfigControllerLocal;
import net.forwardfire.vasc.core.VascEntryField;
@ -114,8 +114,8 @@ public class DefaultVascInterfaceLoader implements VascInterfaceLoader {
* @see net.forwardfire.vasc.core.VascInterfaceLoader#createVascBackendStateImpl()
*/
@Override
public VascBackendState createVascBackendStateImpl() {
return (VascBackendState)createImpl(VascInterfaceKey.VASC_BACKEND_STATE);
public VascBackendListRequest createVascBackendStateImpl() {
return (VascBackendListRequest)createImpl(VascInterfaceKey.VASC_BACKEND_STATE);
}
/**

View file

@ -22,7 +22,7 @@
package net.forwardfire.vasc.impl.entry;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryBackendEventListener;
@ -74,8 +74,8 @@ public class SetParameterBackendListener implements VascEntryBackendEventListene
*/
@Override
public void vascEvent(VascEntry entry, Object data) {
if (data instanceof VascBackendState) {
VascBackendState state = (VascBackendState)data;
if (data instanceof VascBackendListRequest) {
VascBackendListRequest state = (VascBackendListRequest)data;
if (isUserValue) {
if (value==null) {
value="id";

View file

@ -27,7 +27,7 @@ import java.util.Locale;
import org.x4o.xml.conv.ObjectConverterException;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryConfigFinalizer;
@ -59,7 +59,7 @@ public class VascDefaultsFinalizer implements VascEntryConfigFinalizer {
}
// Check if backendId is valid
VascBackend<Serializable> back = vascController.getVascBackendController().getVascBackendById( entry.getBackendId() );
VascBackendCrud<Serializable,Serializable> back = vascController.getVascBackendController().getVascBackendById( VascBackendCrud.class, entry.getBackendId() );
if (back==null) {
throw new IllegalArgumentException("The VascEntry backend is not found in backends: '"+entry.getBackendId()+"' in entryId: "+id);
}

View file

@ -24,7 +24,7 @@ package net.forwardfire.vasc.impl.entry.config;
import java.io.Serializable;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryFieldSet;
@ -68,7 +68,7 @@ public class VascIdCheckFinalizer implements VascEntryConfigFinalizer {
}
// Check if backendId is valid
VascBackend<Serializable> back = vascController.getVascBackendController().getVascBackendById( entry.getBackendId() );
VascBackendCrud<Serializable> back = vascController.getVascBackendController().getVascBackendById( entry.getBackendId() );
if (back==null) {
throw new IllegalArgumentException("The VascEntry backend is not found in backends: '"+entry.getBackendId()+"' in entryId: "+id);
}

View file

@ -27,8 +27,8 @@ import java.util.Date;
import java.util.logging.Logger;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendResult;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListResult;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.backend.proxy.VascProxyFilter;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
@ -210,7 +210,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
// Fire pre read event
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.PRE_READ, null);
entry.getVascFrontendController().getVascEntryState().setEntryDataObject(null);
VascBackendState backendState = entry.getVascFrontendController().getVascEntryState().getVascBackendState();
VascBackendListRequest backendState = entry.getVascFrontendController().getVascEntryState().getVascBackendState();
// check and correct max page size
if (backendState.getPageSize() > backendState.getPageSizeMax()) {
@ -226,7 +226,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
}
}
VascBackendResult<Serializable> result;
VascBackendListResult<Serializable> result;
try {
result = entry.getVascFrontendController().getVascEntryState().getVascBackend().execute(backendState);
} catch (VascBackendException ve) {
@ -234,11 +234,11 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
}
// Set data in frontend
entry.getVascFrontendController().getVascEntryState().setEntryDataList(result.getPageData());
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(result.getTotalSize());
entry.getVascFrontendController().getVascEntryState().setEntryDataList(result.getData());
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(result.getTotalRecordCount());
// check if we need to change the current page if table size if changed in between
int pages = new Long(result.getTotalSize()/backendState.getPageSize()).intValue();
int pages = new Long(result.getTotalRecordCount()/backendState.getPageSize()).intValue();
if (backendState.getPageIndex() > pages) {
backendState.setPageIndex(pages);
}

View file

@ -28,7 +28,7 @@ import java.util.List;
import java.util.logging.Logger;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryLink;
@ -202,10 +202,10 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
return "no-selection";
}
VascEntryField v = entry.getVascEntryFieldById(entry.getDisplayNameFieldId());
VascEntryFieldValue<Serializable> ve = v.getVascEntryFieldValue();
VascBackendAccessDataRecord<Serializable,Serializable> ve = v.getVascEntryFieldValue();
String result = "no-data";
try {
result = ve.getDisplayValue(v.getBackendName(), row);
result = ""+ve.getValue(v.getBackendName(), row);
} catch (VascBackendException e) {
throw new RuntimeException("Could not get selected name DisplayValue: "+e.getMessage(),e);
}
@ -224,10 +224,10 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
return "no-selection";
}
VascEntryField v = parent.getVascEntryFieldById(parent.getDisplayNameFieldId());
VascEntryFieldValue<Serializable> ve = v.getVascEntryFieldValue();
VascBackendAccessDataRecord<Serializable,Serializable> ve = v.getVascEntryFieldValue();
String result = "no-data";
try {
result = ve.getDisplayValue(v.getBackendName(), row);
result = ""+ve.getValue(v.getBackendName(), row);
} catch (VascBackendException e) {
throw new RuntimeException("Could not get parent name DisplayValue: "+e.getMessage(),e);
}

View file

@ -26,7 +26,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryFrontendEventListener;
import net.forwardfire.vasc.frontend.VascFrontendPageInfoNumber;
@ -156,7 +156,7 @@ public class DefaultVascFrontendPager implements VascFrontendPageInfo {
@Override
public List<VascFrontendPageInfoNumber> getTablePagesFromBackend() {
List<VascFrontendPageInfoNumber> result = new ArrayList<VascFrontendPageInfoNumber>(30);
VascBackendState state = entry.getVascFrontendController().getVascEntryState().getVascBackendState();
VascBackendListRequest state = entry.getVascFrontendController().getVascEntryState().getVascBackendState();
if (state.getPageSize()==0) {
return result; // paging disabled
}

View file

@ -33,9 +33,9 @@ import javax.naming.RefAddr;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendController;
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascControllerLocal;
import net.forwardfire.vasc.core.VascControllerProvider;
@ -130,7 +130,7 @@ public class JndiVascControllerFactory implements ObjectFactory {
return backendController.getVascBackendIds();
}
@Override
public VascBackend<Serializable> getVascBackendById(String id) {
public VascBackendCrud<Serializable> getVascBackendById(String id) {
return backendController.getVascBackendById(id);
}
});

View file

@ -1,318 +0,0 @@
/*
* 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.impl.ui;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.forwardfire.vasc.backend.DefaultVascBackendState;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryFieldLocal;
import net.forwardfire.vasc.core.VascEntryLocal;
import net.forwardfire.vasc.core.ui.VascSelectItem;
import net.forwardfire.vasc.core.ui.VascSelectItemModel;
import net.forwardfire.vasc.core.VascException;
/**
* The DefaultVascSelectItemModel
*
* @author Willem Cazander
* @version 1.0 Oct 27, 2007
*/
public class VascSelectItemModelEntry implements VascSelectItemModel {
private static final long serialVersionUID = 1L;
private String entryId = null;
private String keyFieldId = null;
private String displayFieldId = null;
private String nullLabel = null;
private String nullKeyValue = null;
private String nullObjectValue = null;
private Boolean returnKeyValue = null;
private Map<String,String> entryParameterFieldIds = new HashMap<String,String>(3);
private Boolean useParentFields = null;
/**
* @see net.forwardfire.vasc.core.ui.VascSelectItemModel#getVascSelectItems(net.forwardfire.vasc.core.VascEntry)
*/
@Override
public List<VascSelectItem> getVascSelectItems(VascEntry currentEntry) throws VascException {
List<VascSelectItem> result = new ArrayList<VascSelectItem>(100);
VascEntryLocal entry = (VascEntryLocal)currentEntry.getVascFrontendController().getVascController().getVascEntryController().getVascEntryById(entryId);
if (keyFieldId==null) {
keyFieldId = entry.getPrimaryKeyFieldId();
}
VascEntryFieldLocal key = (VascEntryFieldLocal)entry.getVascEntryFieldById(keyFieldId);
if (displayFieldId==null) {
displayFieldId = entry.getDisplayNameFieldId();
}
VascEntryFieldLocal dis = (VascEntryFieldLocal)entry.getVascEntryFieldById(displayFieldId);
if (key==null) {
throw new VascException("Could not find: "+keyFieldId+" from: "+entry.getId());
}
if (dis==null) {
throw new VascException("Could not find: "+displayFieldId+" from: "+entry.getId());
}
// set frontend data for new clone, we need te get better lifecycle management for stats/entry/etc
entry.setVascFrontendController(currentEntry.getVascFrontendController());
VascBackend<Serializable> back = currentEntry.getVascFrontendController().getVascController().getVascEntryConfigController().configVascBackendProxied(currentEntry.getVascFrontendController().getVascController(), entry);
try {
if (nullLabel!=null) {
if (nullKeyValue==null) {
nullKeyValue = "null";
}
nullLabel = currentEntry.getVascFrontendController().getVascEntryResourceResolver().getTextValue(nullLabel);
if (nullObjectValue==null) {
result.add(new VascSelectItem(nullLabel,null,nullKeyValue));
} else {
result.add(new VascSelectItem(nullLabel,nullObjectValue,nullKeyValue));
}
}
// set def para
VascBackendState state = new DefaultVascBackendState();
for (String key2:entry.getEntryParameterKeys()) {
Object value = entry.getEntryParameter(key2);
//System.out.println("Copy paras name: "+key2+" value: "+value+" class: "+value.getClass().getName());
state.setDataParameter(key2, value);
}
// set list para
for (VascEntryField vef:entry.getVascEntryListOptions()) {
Object def = vef.getDefaultValue();
if (def==null) {
continue;
}
String backendName = vef.getBackendName();
state.setDataParameter(backendName, def);
}
// set para from parent state entry
for (String paraName:entryParameterFieldIds.keySet()) {
VascEntry fieldEntry = currentEntry;
if (useParentFields!=null && useParentFields==true) {
if (currentEntry.getVascFrontendController().getVascEntryState().getParent()==null) {
throw new IllegalStateException("Requested to use parent state field values but no parent state found.");
}
fieldEntry = currentEntry.getVascFrontendController().getVascEntryState().getParent().getVascEntry();
}
String paraValueId = entryParameterFieldIds.get(paraName);
VascEntryFieldLocal fieldOrg = (VascEntryFieldLocal)fieldEntry.getVascEntryFieldById(paraValueId);
if (fieldOrg==null) {
//System.out.println("could not find field: "+paraValueId);
continue;
}
VascEntryField field = fieldOrg.clone();
field.getVascValidators().clear();
VascEntryFieldValue<Serializable> v = fieldEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue();
Serializable record = fieldEntry.getVascFrontendController().getVascEntryState().getEntryDataObject();
if (record==null) {
//System.out.println("could not get selected records from state.");
continue;
}
Object value = v.getValue(fieldOrg.getBackendName(), record);
//System.out.println("Set entry paras name: "+paraName+" value: "+value+" class: "+value.getClass().getName());
state.setDataParameter(paraName, value);
}
// TODO: FIX >>>>>>>>>>>>>>>>>>
if (key.getVascEntryFieldValue()==null) {
// TODO: fix this for better remote support
VascEntryField fieldClone = key.clone();
fieldClone.getVascValidators().clear();
VascEntryFieldValue<Serializable> v = currentEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue();
key.setVascEntryFieldValue(v);
}
if (dis.getVascEntryFieldValue()==null) {
// TODO: fix this for better remote support
VascEntryField fieldClone = dis.clone();
fieldClone.getVascValidators().clear();
VascEntryFieldValue<Serializable> v = currentEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue();
dis.setVascEntryFieldValue(v);
}
// execute
for (Serializable o:back.execute(state).getPageData()) {
Serializable keyId = key.getVascEntryFieldValue().getValue(key.getBackendName(), o);
String nameId = dis.getVascEntryFieldValue().getDisplayValue(dis.getBackendName(), o);
if (returnKeyValue!=null && false==returnKeyValue) {
VascSelectItem item = new VascSelectItem(nameId,o,""+keyId);
result.add(item);
} else {
VascSelectItem item = new VascSelectItem(nameId,keyId,""+keyId); // per default return keyID object.
result.add(item);
}
}
} catch (Exception e) {
throw new VascException(e);
}
return result;
}
/**
* @return the entryId
*/
public String getEntryId() {
return entryId;
}
/**
* @param entryId the entryId to set
*/
public void setEntryId(String entryId) {
this.entryId = entryId;
}
/**
* @return the keyFieldId
*/
public String getKeyFieldId() {
return keyFieldId;
}
/**
* @param keyFieldId the keyFieldId to set
*/
public void setKeyFieldId(String keyFieldId) {
this.keyFieldId = keyFieldId;
}
/**
* @return the displayFieldId
*/
public String getDisplayFieldId() {
return displayFieldId;
}
/**
* @param displayFieldId the displayFieldId to set
*/
public void setDisplayFieldId(String displayFieldId) {
this.displayFieldId = displayFieldId;
}
/**
* @return the nullLabel
*/
@Override
public String getNullLabel() {
return nullLabel;
}
/**
* @param nullLabel the nullLabel to set
*/
@Override
public void setNullLabel(String nullLabel) {
this.nullLabel = nullLabel;
}
/**
* @return the nullKeyValue
*/
@Override
public String getNullKeyValue() {
return nullKeyValue;
}
/**
* @param nullKeyValue the nullKeyValue to set
*/
@Override
public void setNullKeyValue(String nullKeyValue) {
this.nullKeyValue = nullKeyValue;
}
/**
* @return the returnKeyValue
*/
public Boolean getReturnKeyValue() {
return returnKeyValue;
}
/**
* @param returnKeyValue the returnKeyValue to set
*/
public void setReturnKeyValue(Boolean returnKeyValue) {
this.returnKeyValue = returnKeyValue;
}
public String getEntryParameterFieldId(String parameterName) {
return entryParameterFieldIds.get(parameterName);
}
public void addEntryParameterFieldId(String parameterName,String valueFieldId) {
entryParameterFieldIds.put(parameterName, valueFieldId);
}
public List<String> getEntryParameterFieldIdKeys() {
return new ArrayList<String>(entryParameterFieldIds.keySet());
}
/**
* @return the useParentFields
*/
public Boolean getUseParentFields() {
return useParentFields;
}
/**
* @param useParentFields the useParentFields to set
*/
public void setUseParentFields(Boolean useParentFields) {
this.useParentFields = useParentFields;
}
/**
* @return the nullObjectValue
*/
public String getNullObjectValue() {
return nullObjectValue;
}
/**
* @param nullObjectValue the nullObjectValue to set
*/
public void setNullObjectValue(String nullObjectValue) {
this.nullObjectValue = nullObjectValue;
}
}

View file

@ -1,181 +0,0 @@
/*
* 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.impl.ui;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.ui.VascSelectItem;
import net.forwardfire.vasc.core.ui.VascSelectItemModel;
import net.forwardfire.vasc.core.VascException;
/**
* The DefaultVascSelectItemModel
*
* @author Willem Cazander
* @version 1.0 Oct 27, 2007
*/
public class VascSelectItemModelStringEnum implements VascSelectItemModel {
private static final long serialVersionUID = 1L;
private Object data = null;
private Class<?> enumClass = null;
private String nullLabel = null;
private String nullKeyValue = null;
private Boolean returnKeyValue = null;
private Boolean useParentFields = null;
/**
* @see net.forwardfire.vasc.core.ui.VascSelectItemModel#getVascSelectItems(net.forwardfire.vasc.core.VascEntry)
*/
@Override
public List<VascSelectItem> getVascSelectItems(VascEntry currentEntry) throws VascException {
List<VascSelectItem> result = new ArrayList<VascSelectItem>(100);
if (nullLabel!=null) {
if (nullKeyValue==null) {
nullKeyValue = "null";
}
nullLabel = currentEntry.getVascFrontendController().getVascEntryResourceResolver().getTextValue(nullLabel);
VascSelectItem item = new VascSelectItem(nullLabel,null,nullKeyValue);
result.add(item);
}
if (enumClass!=null) {
for (Object o:enumClass.getEnumConstants()) {
String value = o.toString();
result.add(new VascSelectItem(value,value,value));
}
}
if (data==null) {
return result;
}
if (data instanceof String) {
String[] values = ((String)data).split(",");
for (String value:values) {
result.add(new VascSelectItem(value,value,value));
}
} else if (data instanceof List) {
List<?> values = (List<?>)data;
for (Object o:values) {
String value = ""+o;
result.add(new VascSelectItem(value,value,value));
}
}
return result;
}
/**
* @return the data
*/
public Object getData() {
return data;
}
/**
* @param data the data to set
*/
public void setData(Object data) {
this.data = data;
}
/**
* @return the nullLabel
*/
@Override
public String getNullLabel() {
return nullLabel;
}
/**
* @param nullLabel the nullLabel to set
*/
@Override
public void setNullLabel(String nullLabel) {
this.nullLabel = nullLabel;
}
/**
* @return the nullKeyValue
*/
@Override
public String getNullKeyValue() {
return nullKeyValue;
}
/**
* @param nullKeyValue the nullKeyValue to set
*/
@Override
public void setNullKeyValue(String nullKeyValue) {
this.nullKeyValue = nullKeyValue;
}
/**
* @return the returnKeyValue
*/
public Boolean getReturnKeyValue() {
return returnKeyValue;
}
/**
* @param returnKeyValue the returnKeyValue to set
*/
public void setReturnKeyValue(Boolean returnKeyValue) {
this.returnKeyValue = returnKeyValue;
}
/**
* @return the useParentFields
*/
public Boolean getUseParentFields() {
return useParentFields;
}
/**
* @param useParentFields the useParentFields to set
*/
public void setUseParentFields(Boolean useParentFields) {
this.useParentFields = useParentFields;
}
/**
* @return the enumClass
*/
public Class<?> getEnumClass() {
return enumClass;
}
/**
* @param enumClass the enumClass to set
*/
public void setEnumClass(Class<?> enumClass) {
this.enumClass = enumClass;
}
}

View file

@ -25,9 +25,9 @@ package net.forwardfire.vasc.impl.x4o;
import java.io.Serializable;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendController;
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
import net.forwardfire.vasc.backend.crud.VascBackendCrud;
import net.forwardfire.vasc.core.VascController;
import org.x4o.xml.element.AbstractElementConfigurator;
@ -50,7 +50,7 @@ public class VascBackendElementConfigurator extends AbstractElementConfigurator
public void doConfigElement(Element element) throws ElementConfiguratorException {
@SuppressWarnings("unchecked")
VascBackend<Serializable> backend = (VascBackend<Serializable>)element.getElementObject();
VascBackendCrud<Serializable> backend = (VascBackendCrud<Serializable>)element.getElementObject();
VascController vascController = VascDriver.getVascController(element.getLanguageSession());
VascBackendController backendController = vascController.getVascBackendController();

View file

@ -22,8 +22,8 @@
package net.forwardfire.vasc.impl.x4o;
import net.forwardfire.vasc.backend.object.VascSelectItemModelEntry;
import net.forwardfire.vasc.core.VascEntryLinkLocal;
import net.forwardfire.vasc.impl.ui.VascSelectItemModelEntry;
import org.x4o.xml.element.AbstractElement;
import org.x4o.xml.element.ElementException;