WIP: left over open files for long...
This commit is contained in:
parent
0a2398c5c1
commit
76aa74990e
165 changed files with 4299 additions and 3373 deletions
|
|
@ -1,142 +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;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* AbstractVascBackend.
|
||||
*
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 2, 2007
|
||||
*/
|
||||
abstract public class AbstractVascBackend<DATA_OBJECT extends Serializable> implements VascBackend<DATA_OBJECT> {
|
||||
|
||||
private String id = null;
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#getId()
|
||||
*/
|
||||
@Override
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#setId(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void setId(String id) {
|
||||
if (id==null) {
|
||||
throw new IllegalArgumentException("id may not be null");
|
||||
}
|
||||
this.id=id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#startBackend()
|
||||
*/
|
||||
@Override
|
||||
public void startBackend() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#stopBackend()
|
||||
*/
|
||||
@Override
|
||||
public void stopBackend() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#isReadOnly()
|
||||
*/
|
||||
@Override
|
||||
public boolean isReadOnly() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#isPageable()
|
||||
*/
|
||||
@Override
|
||||
public boolean isPageable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#isSearchable()
|
||||
*/
|
||||
@Override
|
||||
public boolean isSearchable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#isSortable()
|
||||
*/
|
||||
@Override
|
||||
public boolean isSortable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#isRecordMoveable()
|
||||
*/
|
||||
@Override
|
||||
public boolean isRecordMoveable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#doRecordMoveDownById(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascBackendException {
|
||||
return 0l;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#doRecordMoveUpById(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascBackendException {
|
||||
return 0l;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#hasPageSummary()
|
||||
*/
|
||||
@Override
|
||||
public boolean hasPageSummary() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#hasTotalSummary()
|
||||
*/
|
||||
@Override
|
||||
public boolean hasTotalSummary() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -22,14 +22,12 @@
|
|||
|
||||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* AbstractVascBackendControllerLocal
|
||||
*
|
||||
|
|
@ -38,18 +36,16 @@ import java.util.Map;
|
|||
*/
|
||||
abstract public class AbstractVascBackendControllerLocal implements VascBackendControllerLocal {
|
||||
|
||||
private Map<String,VascBackend<Serializable>> backends = null;
|
||||
private Map<String,VascBackend> backends = null;
|
||||
|
||||
public AbstractVascBackendControllerLocal() {
|
||||
backends = new HashMap<String,VascBackend<Serializable>>(1000);
|
||||
backends = new HashMap<String,VascBackend>(1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendController#getVascBackendById(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public VascBackend<Serializable> getVascBackendById(String id) {
|
||||
return backends.get(id);
|
||||
@SuppressWarnings("unchecked")
|
||||
public <BACKEND_TYPE extends VascBackend> BACKEND_TYPE getVascBackendById(Class<BACKEND_TYPE> clazz,String id) {
|
||||
return (BACKEND_TYPE) backends.get(id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -64,44 +60,49 @@ abstract public class AbstractVascBackendControllerLocal implements VascBackendC
|
|||
Collections.sort(result); // lets do abc for consistance behauvior.
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#addVascBackend(net.forwardfire.vasc.backend.VascBackend)
|
||||
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#addVascBackend(net.forwardfire.vasc.backend.crud.VascBackendCrud)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void addVascBackend(VascBackend<? extends Serializable> backend) {
|
||||
public void addVascBackend(VascBackend backend) {
|
||||
if (backend==null) {
|
||||
throw new NullPointerException("backend must not be null.");
|
||||
}
|
||||
if (backend.getId()==null) {
|
||||
throw new IllegalArgumentException("The backend must have an id.");
|
||||
}
|
||||
backend.startBackend();
|
||||
VascBackend<Serializable> castedBackend = (VascBackend<Serializable>) backend;
|
||||
backends.put(backend.getId(), castedBackend);
|
||||
backends.put(backend.getId(), backend);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#removeVascBackendById(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void removeVascBackendById(String backendId) {
|
||||
VascBackend<? extends Serializable> backend = getVascBackendById(backendId);
|
||||
if (backend==null) {
|
||||
throw new NullPointerException("Could not find backend to remove with id: "+backendId);
|
||||
public VascBackend removeVascBackend(VascBackend backend) {
|
||||
VascBackend result = getVascBackendById(VascBackend.class,backend.getId());
|
||||
if (result==null) {
|
||||
throw new NullPointerException("Could not find backend to remove with id: "+backend.getId());
|
||||
}
|
||||
backend.stopBackend();
|
||||
backends.remove(backendId);
|
||||
return backends.remove(backend.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#clearAndStopBackends()
|
||||
*/
|
||||
@Override
|
||||
public void clearAndStopBackends() {
|
||||
public void stopBackends() {
|
||||
for (String backendId:getVascBackendIds()) {
|
||||
removeVascBackendById(backendId);
|
||||
VascBackend vb = getVascBackendById(VascBackend.class,backendId);
|
||||
if (vb instanceof VascBackendLocal) {
|
||||
VascBackendLocal vbl = (VascBackendLocal)vb;
|
||||
vbl.stopBackend();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startBackends() {
|
||||
for (String backendId:getVascBackendIds()) {
|
||||
VascBackend vb = getVascBackendById(VascBackend.class,backendId);
|
||||
if (vb instanceof VascBackendLocal) {
|
||||
VascBackendLocal vbl = (VascBackendLocal)vb;
|
||||
vbl.startBackend();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,87 @@
|
|||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
abstract public class AbstractVascBackendLocal<DATA_PK extends Serializable> implements VascBackendLocal<DATA_PK> {
|
||||
|
||||
private static final String CHECK_MSG_ID = " in ";
|
||||
private String id = null;
|
||||
private volatile boolean running = false;
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackend#getId()
|
||||
*/
|
||||
@Override
|
||||
final public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendLocal#setId(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
final public void setId(String id) {
|
||||
if (id==null) {
|
||||
throw new IllegalArgumentException("id may not be null");
|
||||
}
|
||||
if (this.id!=null) {
|
||||
throw new IllegalStateException("Can't change id after setting.");
|
||||
}
|
||||
this.id=id;
|
||||
}
|
||||
|
||||
abstract protected void startBackendLocal();
|
||||
protected void stopBackendLocal() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendLocal#startBackend()
|
||||
*/
|
||||
@Override
|
||||
final public void startBackend() {
|
||||
requireNonEmpty(getId(),"id is empty.");
|
||||
startBackendLocal();
|
||||
running = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendLocal#stopBackend()
|
||||
*/
|
||||
@Override
|
||||
final public void stopBackend() {
|
||||
stopBackendLocal();
|
||||
running = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendLifeCycle#isRunning()
|
||||
*/
|
||||
@Override
|
||||
final public boolean isRunning() {
|
||||
return running;
|
||||
}
|
||||
|
||||
final private String createCheckMessage(String message) {
|
||||
return message + CHECK_MSG_ID + getId();
|
||||
}
|
||||
|
||||
final protected void requireNonNull(Object value, String message) {
|
||||
Objects.requireNonNull(value, createCheckMessage(message));
|
||||
}
|
||||
|
||||
final protected void requireNonEmpty(String value, String message) {
|
||||
requireNonNull(value, message);
|
||||
if (value.isEmpty()) {
|
||||
throw new IllegalArgumentException(createCheckMessage(message));
|
||||
}
|
||||
}
|
||||
|
||||
final protected void requireNonEmpty(Collection<?> value, String message) {
|
||||
requireNonNull(value, message);
|
||||
if (value.isEmpty()) {
|
||||
throw new IllegalArgumentException(createCheckMessage(message));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public abstract interface AbstractVascBackendRecord <K extends Serializable,T extends Serializable> extends VascBackend<K> {
|
||||
|
||||
VascBackendAccessDataRecord<K,T> createVascBackendAccessDataRecord();
|
||||
}
|
||||
|
|
@ -1,96 +1,10 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* VascBackend provides stateless data access to a data source.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Mar 21, 2007
|
||||
*/
|
||||
public interface VascBackend<DATA_OBJECT extends Serializable> {
|
||||
public interface VascBackend <DATA_PK extends Serializable> {
|
||||
|
||||
String getId();
|
||||
void setId(String id);
|
||||
|
||||
void startBackend();
|
||||
void stopBackend();
|
||||
|
||||
VascBackendResult<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException;
|
||||
|
||||
boolean isReadOnly();
|
||||
|
||||
//public DATA_OBJECT fetch(Map<String,Serializable> pks) throws VascBackendException;
|
||||
|
||||
void persist(DATA_OBJECT record) throws VascBackendException;
|
||||
|
||||
DATA_OBJECT merge(DATA_OBJECT record) throws VascBackendException;
|
||||
|
||||
void delete(DATA_OBJECT record) throws VascBackendException;
|
||||
|
||||
/**
|
||||
* Creates a new Field acces obj the the given field entry.
|
||||
* note: Do not use inline class here because it needs to be seriabable and the backend is not seriabbzle.
|
||||
* @return
|
||||
*/
|
||||
VascEntryFieldValue<DATA_OBJECT> provideVascEntryFieldValue();
|
||||
|
||||
/**
|
||||
* Creates a new RecordCreater obj the the given entry.
|
||||
* note: Do not use inline class here because it needs to be seriabable and the backend is not seriabbzle.
|
||||
* @return
|
||||
*/
|
||||
VascEntryRecordCreator<DATA_OBJECT> provideVascEntryRecordCreator();
|
||||
|
||||
/**
|
||||
* Defines if the backend supports sorting
|
||||
* @return
|
||||
*/
|
||||
boolean isSortable();
|
||||
|
||||
/**
|
||||
* Defines if the backend supports pageing
|
||||
* @return
|
||||
*/
|
||||
boolean isPageable();
|
||||
|
||||
/**
|
||||
* Defines if the backend supports pageing
|
||||
* @return
|
||||
*/
|
||||
boolean isSearchable();
|
||||
|
||||
/**
|
||||
* Defines if the backend supports moveing an record up or down.
|
||||
* @return
|
||||
*/
|
||||
boolean isRecordMoveable();
|
||||
long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascBackendException;
|
||||
long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascBackendException;
|
||||
|
||||
boolean hasPageSummary();
|
||||
|
||||
boolean hasTotalSummary();
|
||||
VascBackendAccessDataKey<DATA_PK> createVascBackendAccessDataKey();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,28 +23,21 @@
|
|||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* DefaultVascBackendResult.
|
||||
* VascEntryFieldValue
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 23, 2014
|
||||
* @version 1.0 Oct 24, 2014
|
||||
*/
|
||||
public final class DefaultVascBackendResult<DATA_OBJECT extends Serializable> extends AbstractVascBackendResult<DATA_OBJECT> {
|
||||
public interface VascBackendAccessDataKey<DATA_PK extends Serializable> extends Serializable {
|
||||
|
||||
public DefaultVascBackendResult(List<DATA_OBJECT> pageData) {
|
||||
this(pageData,-1);
|
||||
}
|
||||
Map<String,Class<?>> getKeyMapType();
|
||||
Map<String,Serializable> getKeyMapFromPrimaryKey(DATA_PK primaryKey) throws VascBackendException;
|
||||
DATA_PK getPrimaryKeyFromKeyMap(Map<String,Serializable> keyMap) throws VascBackendException;
|
||||
|
||||
public DefaultVascBackendResult(List<DATA_OBJECT> pageData,long totalSize) {
|
||||
this(pageData,totalSize,null,null);
|
||||
}
|
||||
|
||||
public DefaultVascBackendResult(List<DATA_OBJECT> pageData, long totalSize,
|
||||
Map<String, Serializable> pageSummary,
|
||||
Map<String, Serializable> totalSummary) {
|
||||
super(pageData, totalSize, pageSummary, totalSummary);
|
||||
}
|
||||
}
|
||||
Map<String,String> getStringMapFromPrimaryKey(DATA_PK primaryKey) throws VascBackendException;
|
||||
DATA_PK getPrimaryKeyFromStringMap(Map<String,String> keyMap) throws VascBackendException;
|
||||
}
|
||||
|
|
@ -31,11 +31,11 @@ import java.io.Serializable;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Mar 21, 2007
|
||||
*/
|
||||
public interface VascEntryFieldValue<DATA_OBJECT extends Serializable> extends Serializable {
|
||||
public interface VascBackendAccessDataRecord<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends Serializable {
|
||||
|
||||
Serializable getValue(String backendName,DATA_OBJECT record) throws VascBackendException;
|
||||
DATA_PK getPrimaryKey(DATA_RECORD record) throws VascBackendException;
|
||||
|
||||
String getDisplayValue(String backendName,DATA_OBJECT record) throws VascBackendException;
|
||||
Serializable getValue(String backendName,DATA_RECORD record) throws VascBackendException;
|
||||
|
||||
void setValue(String backendName,DATA_OBJECT record,Serializable value) throws VascBackendException;
|
||||
void setValue(String backendName,DATA_RECORD record,Serializable value) throws VascBackendException;
|
||||
}
|
||||
|
|
@ -22,18 +22,17 @@
|
|||
|
||||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* VascBackendController.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 4, 2008
|
||||
*/
|
||||
public interface VascBackendController {
|
||||
|
||||
VascBackend<Serializable> getVascBackendById(String id);
|
||||
<BACKEND_TYPE extends VascBackend> BACKEND_TYPE getVascBackendById(Class<BACKEND_TYPE> clazz,String id);
|
||||
|
||||
List<String> getVascBackendIds();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,9 +22,6 @@
|
|||
|
||||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Willem Cazander
|
||||
|
|
@ -32,9 +29,11 @@ import java.io.Serializable;
|
|||
*/
|
||||
public interface VascBackendControllerLocal extends VascBackendController {
|
||||
|
||||
void addVascBackend(VascBackend<? extends Serializable> backend);
|
||||
void addVascBackend(VascBackend backend);
|
||||
|
||||
void removeVascBackendById(String backendId);
|
||||
VascBackend removeVascBackend(VascBackend backend);
|
||||
|
||||
void clearAndStopBackends();
|
||||
void startBackends();
|
||||
|
||||
void stopBackends();
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface VascBackendLifeCycle<DATA_PK extends Serializable> extends VascBackend<DATA_PK> {
|
||||
|
||||
void startBackend();
|
||||
void stopBackend();
|
||||
boolean isRunning();
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface VascBackendLocal<DATA_PK extends Serializable> extends VascBackendLifeCycle<DATA_PK> {
|
||||
|
||||
void setId(String id);
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* 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.crud;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackendRecord;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
|
||||
/**
|
||||
* VascBackendCrud provides stateless data access to a data source.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Mar 21, 2007
|
||||
*/
|
||||
public interface VascBackendCrud<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendRecord<DATA_PK,DATA_RECORD> {
|
||||
|
||||
public DATA_RECORD fetch(DATA_PK recordPK) throws VascBackendException;
|
||||
|
||||
DATA_RECORD persist(DATA_RECORD record) throws VascBackendException;
|
||||
|
||||
DATA_RECORD merge(DATA_RECORD record) throws VascBackendException;
|
||||
|
||||
void delete(DATA_PK recordPK) throws VascBackendException;
|
||||
|
||||
DATA_RECORD newRecord() throws VascBackendException;
|
||||
}
|
||||
|
|
@ -20,26 +20,24 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend.data;
|
||||
package net.forwardfire.vasc.backend.crud;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
||||
/**
|
||||
* MapVascEntryRecordCreator creates a new HashMap for Map based record backends.
|
||||
* VascBackendCrudRevision idea test.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Dec 05, 2009
|
||||
* @version 1.0 Mar 25, 2014
|
||||
*/
|
||||
public class HashMapVascEntryRecordCreator implements VascEntryRecordCreator<HashMap<String,Serializable>> {
|
||||
public interface VascBackendCrudRevision<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends VascBackendCrud<DATA_PK,DATA_RECORD> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public HashMap<String,Serializable> newRecord() throws VascBackendException {
|
||||
return new HashMap<String,Serializable>(10);
|
||||
}
|
||||
List<?> revisionList(DATA_PK recordPK) throws VascBackendException;
|
||||
|
||||
void revisionDelete(String version) throws VascBackendException;
|
||||
|
||||
DATA_RECORD revisionFetch(DATA_PK recordPK,String version) throws VascBackendException;
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author willemc
|
||||
*
|
||||
*/
|
||||
package net.forwardfire.vasc.backend.crud;
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* 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.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataKey;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
|
||||
/**
|
||||
* AbstractVascBackendAccessDataKey.
|
||||
* note: all types need to have a String constructor ot
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Oct 27, 2014
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
abstract public class AbstractVascBackendAccessDataKey<DATA_PK extends Serializable> implements VascBackendAccessDataKey<DATA_PK> {
|
||||
|
||||
private final Map<String,Class<?>> keyMapType;
|
||||
|
||||
public AbstractVascBackendAccessDataKey(Map<String,Class<?>> keyMapType) {
|
||||
this.keyMapType = keyMapType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Map<String, Class<?>> getKeyMapType() {
|
||||
return keyMapType;
|
||||
}
|
||||
}
|
||||
|
|
@ -22,39 +22,54 @@
|
|||
|
||||
package net.forwardfire.vasc.backend.data;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataKey;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
|
||||
|
||||
import org.x4o.xml.element.DefaultElementObjectPropertyValue;
|
||||
|
||||
/**
|
||||
* BeanVascEntryRecordCreator creates a new backend record based on class object.
|
||||
* BeanVascBackendAccessDataKey provides primary key support on beans.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Dec 05, 2009
|
||||
* @version 1.0 Oct 27, 2014
|
||||
*/
|
||||
public class BeanVascEntryRecordCreator<DATA_OBJECT extends Serializable> implements VascEntryRecordCreator<DATA_OBJECT> {
|
||||
@SuppressWarnings("serial")
|
||||
public class BeanVascBackendAccessDataKey<DATA_PK extends Serializable> extends AbstractVascBackendAccessDataKey<DATA_PK> {
|
||||
|
||||
private final Class<?> primaryKeyType;
|
||||
private final DefaultElementObjectPropertyValue bean = new DefaultElementObjectPropertyValue();
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Class<?> resultClass = null;
|
||||
|
||||
public BeanVascEntryRecordCreator(Class<?> resultClass) {
|
||||
if (resultClass==null) {
|
||||
throw new NullPointerException("Can't provide creator service with null class object.");
|
||||
}
|
||||
this.resultClass=resultClass;
|
||||
public BeanVascBackendAccessDataKey(Class<?> primaryKeyType,Map<String,Class<?>> keyMapType) {
|
||||
super(keyMapType);
|
||||
this.primaryKeyType=primaryKeyType;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public DATA_OBJECT newRecord() throws VascBackendException {
|
||||
try {
|
||||
return (DATA_OBJECT)resultClass.newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
throw new VascBackendException(e);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new VascBackendException(e);
|
||||
}
|
||||
public Map<String, Serializable> getKeyMapFromPrimaryKey(DATA_PK primaryKey) throws VascBackendException {
|
||||
Map<String, Serializable> result = new HashMap<String, Serializable>();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DATA_PK getPrimaryKeyFromKeyMap(Map<String, Serializable> keyMap) throws VascBackendException {
|
||||
//DATA_PK result = primaryKeyType.newInstance();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getStringMapFromPrimaryKey(DATA_PK primaryKey) throws VascBackendException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DATA_PK getPrimaryKeyFromStringMap(Map<String, String> keyMap) throws VascBackendException {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -26,26 +26,40 @@ package net.forwardfire.vasc.backend.data;
|
|||
import java.io.Serializable;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
|
||||
|
||||
import org.x4o.xml.element.DefaultElementObjectPropertyValue;
|
||||
|
||||
/**
|
||||
* BeanVascEntryFieldValue provides get/set support for bean based backends.
|
||||
* BeanVascBackendAccessDataRecord provides get/set support for bean based backends.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Dec 05, 2009
|
||||
*/
|
||||
public class BeanVascEntryFieldValue<DATA_OBJECT extends Serializable> implements VascEntryFieldValue<DATA_OBJECT> {
|
||||
@SuppressWarnings("serial")
|
||||
public class BeanVascBackendAccessDataRecord<DATA_PK extends Serializable,DATA_RECORD extends Serializable> implements VascBackendAccessDataRecord<DATA_PK,DATA_RECORD> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final String primaryKeyProperty;
|
||||
private DefaultElementObjectPropertyValue bean = new DefaultElementObjectPropertyValue();
|
||||
|
||||
public BeanVascBackendAccessDataRecord(String primaryKeyProperty) {
|
||||
this.primaryKeyProperty = primaryKeyProperty;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getValue(java.lang.String, java.lang.Object)
|
||||
* @see net.forwardfire.vasc.backend.VascBackendAccessDataRecord#getPrimaryKey(java.io.Serializable)
|
||||
*/
|
||||
@Override
|
||||
public Serializable getValue(String backendName, DATA_OBJECT record) throws VascBackendException {
|
||||
@SuppressWarnings("unchecked")
|
||||
public DATA_PK getPrimaryKey(DATA_RECORD record) throws VascBackendException {
|
||||
return (DATA_PK) getValue(primaryKeyProperty, record);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascBackendAccessDataRecord#getValue(java.lang.String, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public Serializable getValue(String backendName, DATA_RECORD record) throws VascBackendException {
|
||||
if (backendName==null) {
|
||||
throw new NullPointerException("Can't get value of null backendName.");
|
||||
}
|
||||
|
|
@ -59,42 +73,12 @@ public class BeanVascEntryFieldValue<DATA_OBJECT extends Serializable> implement
|
|||
throw new VascBackendException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getDisplayValue(java.lang.String, java.lang.Object)
|
||||
* @see net.forwardfire.vasc.core.entry.VascBackendAccessDataRecord#setValue(java.lang.String, java.lang.Object, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public String getDisplayValue(String backendName, DATA_OBJECT record) throws VascBackendException {
|
||||
Serializable value = getValue(backendName,record);
|
||||
if (value==null) {
|
||||
return "";
|
||||
}
|
||||
return value.toString();
|
||||
|
||||
/* TODO: move
|
||||
if (field.getDisplayName()==null) {
|
||||
if (value instanceof String) {
|
||||
return (String)value;
|
||||
}
|
||||
return ""+value;
|
||||
}
|
||||
try {
|
||||
Object result = bean.getProperty(value, field.getDisplayName());
|
||||
if (result instanceof String) {
|
||||
return (String)result;
|
||||
}
|
||||
return ""+result;
|
||||
} catch (Exception e) {
|
||||
throw new VascBackendException(e);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#setValue(java.lang.String, java.lang.Object, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void setValue(String backendName, DATA_OBJECT record,Serializable value) throws VascBackendException {
|
||||
public void setValue(String backendName, DATA_RECORD record,Serializable value) throws VascBackendException {
|
||||
if (backendName==null) {
|
||||
throw new NullPointerException("Can't set value of null backendName.");
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* 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.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
|
||||
/**
|
||||
* HashMapVascBackendAccessDataKey provides get/set support on Map key object.
|
||||
* note: all types need to have a String constructor.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Oct 26, 2014
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class HashMapVascBackendAccessDataKey extends AbstractVascBackendAccessDataKey<HashMap<String,Serializable>> {
|
||||
|
||||
public HashMapVascBackendAccessDataKey(Map<String,Class<?>> keyMapType) {
|
||||
super(keyMapType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Serializable> getKeyMapFromPrimaryKey(HashMap<String, Serializable> primaryKey) throws VascBackendException {
|
||||
return new HashMap<String, Serializable>(primaryKey); // wrap only as key is already object map
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<String, Serializable> getPrimaryKeyFromKeyMap(Map<String, Serializable> keyMap) throws VascBackendException {
|
||||
return new HashMap<String, Serializable>(keyMap); // wrap only as key is already object map
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getStringMapFromPrimaryKey(HashMap<String, Serializable> primaryKey) throws VascBackendException {
|
||||
HashMap<String,String> result = new HashMap<String,String>(primaryKey.size());
|
||||
for (String key:primaryKey.keySet()) {
|
||||
Serializable value = primaryKey.get(key);
|
||||
if (value == null) {
|
||||
result.put(key, null);
|
||||
} else {
|
||||
result.put(key, value.toString());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<String, Serializable> getPrimaryKeyFromStringMap(Map<String, String> keyMap) throws VascBackendException {
|
||||
try {
|
||||
HashMap<String,Serializable> result = new HashMap<String,Serializable>(keyMap.size());
|
||||
for (String key:keyMap.keySet()) {
|
||||
String valueStr = keyMap.get(key);
|
||||
Class<?> valueType = getKeyMapType().get(key);
|
||||
if (valueType == null) {
|
||||
throw new IllegalArgumentException("unknown key: "+key);
|
||||
}
|
||||
if (valueStr == null) {
|
||||
result.put(key, null);
|
||||
continue;
|
||||
}
|
||||
Constructor<?> valueObj = valueType.getConstructor(new Class<?>[]{String.class});
|
||||
Object value = valueObj.newInstance(new Object[]{valueStr});
|
||||
result.put(key, (Serializable)value);
|
||||
}
|
||||
return result;
|
||||
} catch (NoSuchMethodException e) {
|
||||
throw new VascBackendException(e);
|
||||
} catch (SecurityException e) {
|
||||
throw new VascBackendException(e);
|
||||
} catch (InstantiationException e) {
|
||||
throw new VascBackendException(e);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new VascBackendException(e);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new VascBackendException(e);
|
||||
} catch (InvocationTargetException e) {
|
||||
throw new VascBackendException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -24,22 +24,40 @@ package net.forwardfire.vasc.backend.data;
|
|||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
|
||||
|
||||
/**
|
||||
* MapVascEntryFieldValue provides get/set support on Map record object.
|
||||
* HashMapVascBackendAccessDataRecord provides get/set support on Map record object.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Dec 05, 2009
|
||||
*/
|
||||
public class HashMapVascEntryFieldValue implements VascEntryFieldValue<HashMap<String,Serializable>> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@SuppressWarnings("serial")
|
||||
public class HashMapVascBackendAccessDataRecord implements VascBackendAccessDataRecord<HashMap<String,Serializable>,HashMap<String,Serializable>> {
|
||||
|
||||
private final Map<String,Class<?>> keyMapType;
|
||||
|
||||
public HashMapVascBackendAccessDataRecord(Map<String,Class<?>> keyMapType) {
|
||||
this.keyMapType = keyMapType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getValue(java.lang.String, java.lang.Object)
|
||||
* @see net.forwardfire.vasc.backend.VascBackendAccessDataRecord#getPrimaryKey(java.io.Serializable)
|
||||
*/
|
||||
@Override
|
||||
public HashMap<String, Serializable> getPrimaryKey(HashMap<String, Serializable> record) throws VascBackendException {
|
||||
HashMap<String, Serializable> result = new HashMap<String, Serializable>(keyMapType.size());
|
||||
for (String key:keyMapType.keySet()) {
|
||||
result.put(key, record.get(key));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascBackendAccessDataRecord#getValue(java.lang.String, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public Serializable getValue(String backendName,HashMap<String,Serializable> map) throws VascBackendException {
|
||||
|
|
@ -52,21 +70,9 @@ public class HashMapVascEntryFieldValue implements VascEntryFieldValue<HashMap<S
|
|||
Serializable fieldValue = map.get(backendName);
|
||||
return fieldValue;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getDisplayValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public String getDisplayValue(String field, HashMap<String,Serializable> record) throws VascBackendException {
|
||||
Serializable fieldValue = getValue(field,record);
|
||||
if (fieldValue==null) {
|
||||
fieldValue = "";
|
||||
}
|
||||
return fieldValue.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#setValue(java.lang.String, java.lang.Object, java.lang.Object)
|
||||
* @see net.forwardfire.vasc.core.entry.VascBackendAccessDataRecord#setValue(java.lang.String, java.lang.Object, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void setValue(String backendName, HashMap<String,Serializable> map,Serializable value) throws VascBackendException {
|
||||
|
|
@ -20,20 +20,23 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend;
|
||||
package net.forwardfire.vasc.backend.list;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Holds the state for the backend
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 May 26, 2009
|
||||
*/
|
||||
abstract public class AbstractVascBackendState implements VascBackendState {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@SuppressWarnings("serial")
|
||||
public class DefaultVascBackendListRequest implements VascBackendListRequest {
|
||||
|
||||
protected Map<String,Object> parameters = null;
|
||||
private int pageIndex = 0;
|
||||
private int pageSize = 0;
|
||||
|
|
@ -41,38 +44,25 @@ abstract public class AbstractVascBackendState implements VascBackendState {
|
|||
private String sortField = null;
|
||||
private String searchString = null;
|
||||
private boolean ascending = true;
|
||||
//private long pagesTotalRecords = 0;
|
||||
|
||||
public AbstractVascBackendState() {
|
||||
public DefaultVascBackendListRequest() {
|
||||
parameters = new HashMap<String,Object>(10);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendState#setDataParameter(java.lang.String, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void setDataParameter(String key, Object data) {
|
||||
parameters.put(key,data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendState#removeDataParameter(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
|
||||
public void removeDataParameter(String key) {
|
||||
parameters.remove(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendState#removeDataParameterAll()
|
||||
*/
|
||||
@Override
|
||||
|
||||
public void removeDataParameterAll() {
|
||||
parameters.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendState#getDataParameter(java.lang.String)
|
||||
* @see net.forwardfire.vasc.backend.list.VascBackendListRequest#getDataParameter(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Object getDataParameter(String key) {
|
||||
|
|
@ -80,7 +70,7 @@ abstract public class AbstractVascBackendState implements VascBackendState {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendState#getDataParameterKeys()
|
||||
* @see net.forwardfire.vasc.backend.list.VascBackendListRequest#getDataParameterKeys()
|
||||
*/
|
||||
@Override
|
||||
public Set<String> getDataParameterKeys() {
|
||||
|
|
@ -88,85 +78,65 @@ abstract public class AbstractVascBackendState implements VascBackendState {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#getPageIndex()
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#getPageIndex()
|
||||
*/
|
||||
@Override
|
||||
public int getPageIndex() {
|
||||
return pageIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#setPageIndex(int)
|
||||
*/
|
||||
@Override
|
||||
|
||||
public void setPageIndex(int pageIndex) {
|
||||
this.pageIndex=pageIndex;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#getPageSize()
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#getPageSize()
|
||||
*/
|
||||
@Override
|
||||
public int getPageSize() {
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#setPageSize(int)
|
||||
*/
|
||||
@Override
|
||||
public void setPageSize(int pageSize) {
|
||||
this.pageSize=pageSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#getSearchString()
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#getSearchString()
|
||||
*/
|
||||
@Override
|
||||
public String getSearchString() {
|
||||
return searchString;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#setSearchString(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
|
||||
public void setSearchString(String searchString) {
|
||||
this.searchString=searchString;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#isSortAscending()
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#isSortAscending()
|
||||
*/
|
||||
@Override
|
||||
public boolean isSortAscending() {
|
||||
return ascending;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#setSortAscending(boolean)
|
||||
*/
|
||||
@Override
|
||||
public void setSortAscending(boolean ascending) {
|
||||
this.ascending=ascending;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#getSortField()
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#getSortField()
|
||||
*/
|
||||
@Override
|
||||
public String getSortField() {
|
||||
return sortField;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#setSortField(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void setSortField(String sortField) {
|
||||
this.sortField=sortField;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the pageSizeMax
|
||||
*/
|
||||
|
|
@ -174,11 +144,7 @@ abstract public class AbstractVascBackendState implements VascBackendState {
|
|||
public int getPageSizeMax() {
|
||||
return pageSizeMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pageSizeMax the pageSizeMax to set
|
||||
*/
|
||||
@Override
|
||||
|
||||
public void setPageSizeMax(int pageSizeMax) {
|
||||
this.pageSizeMax = pageSizeMax;
|
||||
}
|
||||
|
|
@ -20,61 +20,60 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend;
|
||||
package net.forwardfire.vasc.backend.list;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* AbstractVascBackendResult.
|
||||
* DefaultVascBackendResult.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 23, 2014
|
||||
*/
|
||||
abstract public class AbstractVascBackendResult<DATA_OBJECT extends Serializable> implements VascBackendResult<DATA_OBJECT> {
|
||||
|
||||
private final List<DATA_OBJECT> pageData;
|
||||
private final long totalSize;
|
||||
private final Map<String, Serializable> pageSummary;
|
||||
private final Map<String, Serializable> totalSummary;
|
||||
@SuppressWarnings("serial")
|
||||
public final class DefaultVascBackendListResult<DATA_OBJECT extends Serializable> implements VascBackendListResult<DATA_OBJECT> {
|
||||
|
||||
public AbstractVascBackendResult(List<DATA_OBJECT> pageData,long totalSize,Map<String, Serializable> pageSummary,Map<String, Serializable> totalSummary) {
|
||||
this.pageData = pageData;
|
||||
this.totalSize = totalSize;
|
||||
this.pageSummary = pageSummary;
|
||||
this.totalSummary = totalSummary;
|
||||
private final List<DATA_OBJECT> data;
|
||||
private final long totalRecordCount;
|
||||
private final Map<String,Map<String,Serializable>> dataExtra;
|
||||
|
||||
public DefaultVascBackendListResult(List<DATA_OBJECT> data) {
|
||||
this(data,data.size());
|
||||
}
|
||||
|
||||
public DefaultVascBackendListResult(List<DATA_OBJECT> data,long totalRecordCount) {
|
||||
this(data,totalRecordCount,null);
|
||||
}
|
||||
|
||||
public DefaultVascBackendListResult(List<DATA_OBJECT> data,long totalRecordCount,Map<String,Map<String,Serializable>> dataExtra) {
|
||||
this.data = data;
|
||||
this.totalRecordCount = totalRecordCount;
|
||||
this.dataExtra = dataExtra;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendResult#getPageData()
|
||||
* @see net.forwardfire.vasc.backend.list.VascBackendListResult#getData()
|
||||
*/
|
||||
@Override
|
||||
public List<DATA_OBJECT> getPageData() {
|
||||
return pageData;
|
||||
public List<DATA_OBJECT> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendResult#getTotalSize()
|
||||
* @see net.forwardfire.vasc.backend.list.VascBackendListResult#getTotalRecordCount()
|
||||
*/
|
||||
@Override
|
||||
public long getTotalSize() {
|
||||
return totalSize;
|
||||
public long getTotalRecordCount() {
|
||||
return totalRecordCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendResult#getPageSummary()
|
||||
* @see net.forwardfire.vasc.backend.list.VascBackendListResult#getDataExtra()
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Serializable> getPageSummary() {
|
||||
return pageSummary;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendResult#getTotalSummary()
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Serializable> getTotalSummary() {
|
||||
return totalSummary;
|
||||
public Map<String,Map<String,Serializable>> getDataExtra() {
|
||||
return dataExtra;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* 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.list;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackendRecord;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
|
||||
/**
|
||||
* VascBackendList provides stateless data access to a data source which result one or multiple results.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 25, 2014
|
||||
*/
|
||||
public interface VascBackendList<DATA_PK extends Serializable,DATA_RECORD extends Serializable> extends AbstractVascBackendRecord<DATA_PK,DATA_RECORD> {
|
||||
|
||||
final static String ROW_ACTION_MOVE_UP = "rowActionMoveUp";
|
||||
final static String ROW_ACTION_MOVE_DOWN = "rowActionMoveDown";
|
||||
final static String ROW_ACTION_DELETE = "rowActionDelete";
|
||||
|
||||
/**
|
||||
* Defines the features this list backend supports.
|
||||
* @return An enum set of feature flags.
|
||||
*/
|
||||
EnumSet<VascBackendListFeature> getSupportedFeatures();
|
||||
|
||||
/**
|
||||
* Executes the list request with parameters to return a list result.
|
||||
* @param request
|
||||
* @return
|
||||
* @throws VascBackendException
|
||||
*/
|
||||
VascBackendListResult<DATA_RECORD> execute(VascBackendListRequest request) throws VascBackendException;
|
||||
|
||||
/**
|
||||
* @return Returns the action names of the row actions we support.
|
||||
*/
|
||||
List<String> getSupportedRowActions();
|
||||
|
||||
/**
|
||||
* Executes a single row action on one or more rows of fresh data.
|
||||
* @param request
|
||||
* @param recordPKs
|
||||
* @param actionName
|
||||
* @throws VascBackendException
|
||||
*/
|
||||
void executeRowAction(VascBackendListRequest request,List<DATA_PK> recordPKs,String actionName) throws VascBackendException;
|
||||
}
|
||||
|
|
@ -20,16 +20,28 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend;
|
||||
|
||||
package net.forwardfire.vasc.backend.list;
|
||||
|
||||
/**
|
||||
* Holds the state for the backend
|
||||
* VascBackendListFeatures.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 May 26, 2009
|
||||
* @version 1.0 Aug 26, 2014
|
||||
*/
|
||||
public class DefaultVascBackendState extends AbstractVascBackendState {
|
||||
|
||||
private static final long serialVersionUID = 8828343641448595993L;
|
||||
}
|
||||
public enum VascBackendListFeature {
|
||||
|
||||
/** Defines if the backend supports sorting. */
|
||||
SORT_DATA,
|
||||
SORT_DATA_PROXY,
|
||||
|
||||
/** Defines if the backend supports paging. */
|
||||
PAGE_DATA,
|
||||
PAGE_DATA_PROXY,
|
||||
|
||||
/** Defines if the backend support full text search. */
|
||||
TEXT_SEARCH,
|
||||
TEXT_SEARCH_PROXY,
|
||||
|
||||
DATA_EXTRA,
|
||||
DATA_EXTRA_PROXY;
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend;
|
||||
package net.forwardfire.vasc.backend.list;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Set;
|
||||
|
|
@ -31,28 +31,20 @@ import java.util.Set;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 May 26, 2009
|
||||
*/
|
||||
public interface VascBackendState extends Serializable {
|
||||
public interface VascBackendListRequest extends Serializable {
|
||||
|
||||
void setDataParameter(String key,Object data);
|
||||
void removeDataParameter(String key);
|
||||
void removeDataParameterAll();
|
||||
Object getDataParameter(String key);
|
||||
Set<String> getDataParameterKeys();
|
||||
|
||||
|
||||
String getSortField();
|
||||
void setSortField(String name);
|
||||
|
||||
boolean isSortAscending();
|
||||
void setSortAscending(boolean ascending);
|
||||
|
||||
void setPageSize(int size);
|
||||
|
||||
int getPageSize();
|
||||
|
||||
void setPageSizeMax(int size);
|
||||
int getPageSizeMax();
|
||||
|
||||
void setPageIndex(int index);
|
||||
int getPageIndex();
|
||||
|
||||
void setSearchString(String searchString);
|
||||
String getSearchString();
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend;
|
||||
package net.forwardfire.vasc.backend.list;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
|
@ -32,10 +32,9 @@ import java.util.Map;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 23, 2014
|
||||
*/
|
||||
public interface VascBackendResult<DATA_OBJECT extends Serializable> {
|
||||
public interface VascBackendListResult<DATA_OBJECT extends Serializable> extends Serializable {
|
||||
|
||||
List<DATA_OBJECT> getPageData();
|
||||
long getTotalSize();
|
||||
Map<String,Serializable> getPageSummary();
|
||||
Map<String,Serializable> getTotalSummary();
|
||||
List<DATA_OBJECT> getData();
|
||||
long getTotalRecordCount();
|
||||
Map<String,Map<String,Serializable>> getDataExtra();
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author willemc
|
||||
*
|
||||
*/
|
||||
package net.forwardfire.vasc.backend.list;
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
package net.forwardfire.vasc.backend.select;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class DefaultVascBackendSelectItem<DATA_PK extends Serializable> implements VascBackendSelectItem<DATA_PK> {
|
||||
|
||||
private final boolean header;
|
||||
private final boolean enabled;
|
||||
private final String name;
|
||||
private final boolean nameI18nKey;
|
||||
private final String description;
|
||||
private final boolean descriptionI18nKey;
|
||||
private final DATA_PK primaryKey;
|
||||
|
||||
public DefaultVascBackendSelectItem(boolean header, boolean enabled,
|
||||
String name, boolean nameI18nKey, String description,
|
||||
boolean descriptionI18nKey, DATA_PK primaryKey) {
|
||||
super();
|
||||
this.header = header;
|
||||
this.enabled = enabled;
|
||||
this.name = name;
|
||||
this.nameI18nKey = nameI18nKey;
|
||||
this.description = description;
|
||||
this.descriptionI18nKey = descriptionI18nKey;
|
||||
this.primaryKey = primaryKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHeader() {
|
||||
return header;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNameI18nKey() {
|
||||
return nameI18nKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDescriptionI18nKey() {
|
||||
return descriptionI18nKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DATA_PK getPrimaryKey() {
|
||||
return primaryKey;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package net.forwardfire.vasc.backend.select;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackend;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
|
||||
public interface VascBackendSelect<DATA_PK extends Serializable> extends VascBackend<DATA_PK> {
|
||||
|
||||
List<VascBackendSelectItem<DATA_PK>> execute() throws VascBackendException;
|
||||
}
|
||||
|
|
@ -20,17 +20,22 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend;
|
||||
package net.forwardfire.vasc.backend.select;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Mar 21, 2007
|
||||
* @version 1.0 Aug 12, 2007
|
||||
*/
|
||||
public interface VascEntryRecordCreator<DATA_OBJECT extends Serializable> extends Serializable {
|
||||
|
||||
DATA_OBJECT newRecord() throws VascBackendException;
|
||||
}
|
||||
public interface VascBackendSelectItem<DATA_PK extends Serializable> {
|
||||
|
||||
boolean isHeader();
|
||||
boolean isEnabled();
|
||||
String getName();
|
||||
boolean isNameI18nKey();
|
||||
String getDescription();
|
||||
boolean isDescriptionI18nKey();
|
||||
DATA_PK getPrimaryKey();
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author willemc
|
||||
*
|
||||
*/
|
||||
package net.forwardfire.vasc.backend.select;
|
||||
Loading…
Add table
Add a link
Reference in a new issue