2
0
Fork 0

Split backend to backend api.

This commit is contained in:
Willem Cazander 2014-03-02 19:45:22 +01:00
parent 4bd244f4e5
commit a13719f008
116 changed files with 1029 additions and 815 deletions

View file

@ -20,8 +20,8 @@
<version>${x4o.version}</version>
</dependency>
<dependency>
<groupId>net.forwardfire.vasc.lib</groupId>
<artifactId>vasc-lib-xpql</artifactId>
<groupId>net.forwardfire.vasc.backend</groupId>
<artifactId>vasc-backend-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

View file

@ -1,151 +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.util.Map;
import net.forwardfire.vasc.core.VascException;
/**
*
* @author Willem Cazander
* @version 1.0 Aug 2, 2007
*/
abstract public class AbstractVascBackend implements VascBackend {
private String id = null;
/**
* @see net.forwardfire.vasc.backend.VascBackend#getId()
*/
public String getId() {
return id;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setId(java.lang.String)
*/
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()
*/
public void startBackend() {
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#stopBackend()
*/
public void stopBackend() {
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isReadOnly()
*/
public boolean isReadOnly() {
return false;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isPageable()
*/
public boolean isPageable() {
return false;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#fetchTotalExecuteSize(VascBackendState state)
*/
public long fetchTotalExecuteSize(VascBackendState state) {
return 0;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isSearchable()
*/
public boolean isSearchable() {
return false;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isSortable()
*/
public boolean isSortable() {
return false;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isRecordMoveable()
*/
public boolean isRecordMoveable() {
return false;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#doRecordMoveDownById(java.lang.Object)
*/
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascException {
return 0l;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#doRecordMoveUpById(java.lang.Object)
*/
public long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascException {
return 0l;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#executePageSummary()
*/
public Map<String, Object> executePageSummary() {
return null;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#executeTotalSummary()
*/
public Map<String, Object> executeTotalSummary() {
return null;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isPageSummary()
*/
public boolean isPageSummary() {
return false;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isTotalSummary()
*/
public boolean isTotalSummary() {
return false;
}
}

View file

@ -1,99 +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.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* AbstractVascBackendControllerLocal
*
* @author Willem Cazander
* @version 1.0 Jun 5, 2012
*/
abstract public class AbstractVascBackendControllerLocal implements VascBackendControllerLocal {
private Map<String,VascBackend> backends = null;
public AbstractVascBackendControllerLocal() {
backends = new HashMap<String,VascBackend>(1000);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendController#getVascBackendById(java.lang.String)
*/
public VascBackend getVascBackendById(String id) {
return backends.get(id);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendController#getVascBackendIds()
*/
public List<String> getVascBackendIds() {
List<String> result = new ArrayList<String>(50);
for (String id:backends.keySet()) {
result.add(id);
}
Collections.sort(result); // lets do abc for consistance behauvior.
return result;
}
/**
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#addVascBackend(net.forwardfire.vasc.backend.VascBackend)
*/
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();
backends.put(backend.getId(), backend);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#removeVascBackendById(java.lang.String)
*/
public void removeVascBackendById(String backendId) {
VascBackend backend = getVascBackendById(backendId);
if (backend==null) {
throw new NullPointerException("Could not find backend to remove with id: "+backendId);
}
backend.stopBackend();
backends.remove(backendId);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#clearAndStopBackends()
*/
public void clearAndStopBackends() {
for (String backendId:getVascBackendIds()) {
removeVascBackendById(backendId);
}
}
}

View file

@ -1,168 +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.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
*
* @author Willem Cazander
* @version 1.0 May 26, 2009
*/
abstract public class AbstractVascBackendState implements VascBackendState {
private static final long serialVersionUID = 1L;
protected Map<String,Object> parameters = null;
private int pageIndex = 0;
private int pageSize = 0;
private int pageSizeMax = 0;
private String sortField = null;
private String searchString = null;
private boolean ascending = true;
//private long pagesTotalRecords = 0;
public AbstractVascBackendState() {
parameters = new HashMap<String,Object>(10);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendState#setDataParameter(java.lang.String, java.lang.Object)
*/
public void setDataParameter(String key, Object data) {
parameters.put(key,data);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendState#removeDataParameter(java.lang.String)
*/
public void removeDataParameter(String key) {
parameters.remove(key);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendState#removeDataParameterAll()
*/
public void removeDataParameterAll() {
parameters.clear();
}
/**
* @see net.forwardfire.vasc.backend.VascBackendState#getDataParameter(java.lang.String)
*/
public Object getDataParameter(String key) {
return parameters.get(key);
}
/**
* @see net.forwardfire.vasc.backend.VascBackendState#getDataParameterKeys()
*/
public Set<String> getDataParameterKeys() {
return parameters.keySet();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#getPageIndex()
*/
public int getPageIndex() {
return pageIndex;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setPageIndex(int)
*/
public void setPageIndex(int pageIndex) {
this.pageIndex=pageIndex;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#getPageSize()
*/
public int getPageSize() {
return pageSize;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setPageSize(int)
*/
public void setPageSize(int pageSize) {
this.pageSize=pageSize;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#getSearchString()
*/
public String getSearchString() {
return searchString;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setSearchString(java.lang.String)
*/
public void setSearchString(String searchString) {
this.searchString=searchString;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#isSortAscending()
*/
public boolean isSortAscending() {
return ascending;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setSortAscending(boolean)
*/
public void setSortAscending(boolean ascending) {
this.ascending=ascending;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#getSortField()
*/
public String getSortField() {
return sortField;
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#setSortField(java.lang.String)
*/
public void setSortField(String sortField) {
this.sortField=sortField;
}
/**
* @return the pageSizeMax
*/
public int getPageSizeMax() {
return pageSizeMax;
}
/**
* @param pageSizeMax the pageSizeMax to set
*/
public void setPageSizeMax(int pageSizeMax) {
this.pageSizeMax = pageSizeMax;
}
}

View file

@ -1,119 +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.util.List;
import java.util.Map;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascException;
/**
*
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public interface VascBackend {
public String getId();
public void setId(String id);
public void startBackend();
public void stopBackend();
public List<Object> execute(VascBackendState state) throws VascException;
public boolean isReadOnly();
public void persist(Object object) throws VascException;
public Object merge(Object object) throws VascException;
public void delete(Object object) throws VascException;
/**
* 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.
* @param field
* @return
*/
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field);
/**
* 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.
* @param vascEntry
* @return
*/
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry);
/**
* Defines if the backend supports sorting
* @return
*/
public boolean isSortable();
/**
* Defines if the backend supports pageing
* @return
*/
public boolean isPageable();
/**
* Returns the total amount of records.
* @return
*/
public long fetchTotalExecuteSize(VascBackendState state);
/**
* Defines if the backend supports pageing
* @return
*/
public boolean isSearchable();
/**
* Defines if the backend supports moveing an record up or down.
* @return
*/
public boolean isRecordMoveable();
public long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascException;
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascException;
public boolean isPageSummary();
public Map<String,Object> executePageSummary();
public boolean isTotalSummary();
public Map<String,Object> executeTotalSummary();
/*
public boolean hasSettings();
public Map<String,String> getSettings();
public void putSetting(String key,String value);
*/
}

View file

@ -1,38 +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.util.List;
/**
*
* @author Willem Cazander
* @version 1.0 Sep 4, 2008
*/
public interface VascBackendController {
public VascBackend getVascBackendById(String id);
public List<String> getVascBackendIds();
}

View file

@ -1,38 +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;
/**
*
* @author Willem Cazander
* @version 1.0 Nov 17, 2008
*/
public interface VascBackendControllerLocal extends VascBackendController {
public void addVascBackend(VascBackend backend);
public void removeVascBackendById(String backendId);
public void clearAndStopBackends();
}

View file

@ -1,58 +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;
import java.util.Set;
/**
* Holds all the data the backend needs to know to execute its work.
*
* @author Willem Cazander
* @version 1.0 May 26, 2009
*/
public interface VascBackendState extends Serializable {
public void setDataParameter(String key,Object data);
public void removeDataParameter(String key);
public void removeDataParameterAll();
public Object getDataParameter(String key);
public Set<String> getDataParameterKeys();
public String getSortField();
public void setSortField(String name);
public boolean isSortAscending();
public void setSortAscending(boolean ascending);
public void setPageSize(int size);
public int getPageSize();
public void setPageSizeMax(int size);
public int getPageSizeMax();
public void setPageIndex(int index);
public int getPageIndex();
public void setSearchString(String searchString);
public String getSearchString();
}

View file

@ -1,176 +0,0 @@
package net.forwardfire.vasc.backend;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.data.BeanVascEntryFieldValue;
import net.forwardfire.vasc.backend.data.BeanVascEntryRecordCreator;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryControllerLocal;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryFieldLocal;
import net.forwardfire.vasc.core.VascEntryFieldSet;
import net.forwardfire.vasc.core.VascEntryFieldSetLocal;
import net.forwardfire.vasc.core.VascEntryLinkLocal;
import net.forwardfire.vasc.core.VascEntryListOption;
import net.forwardfire.vasc.core.VascEntryListOptionLocal;
import net.forwardfire.vasc.core.VascEntryLocal;
import net.forwardfire.vasc.core.VascEntryLink;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascException;
import net.forwardfire.vasc.impl.DefaultVascEntry;
import net.forwardfire.vasc.impl.DefaultVascEntryField;
import net.forwardfire.vasc.impl.DefaultVascEntryFieldSet;
import net.forwardfire.vasc.impl.DefaultVascEntryLink;
public class VirtualVascBackend extends AbstractVascBackend {
private VascController vascController = null;
private String vascType = "entry";
private String entryId = null;
public List<Object> execute(VascBackendState state) throws VascException {
List<Object> result = new ArrayList<Object>(100);
entryId = (String)state.getDataParameter("entry_id");
if ("entry".equals(vascType)) {
for (String id:vascController.getVascEntryController().getVascEntryIds()) {
result.add(vascController.getVascEntryController().getVascEntryById(id));
}
} else if ("field".equals(vascType)) {
if (entryId!=null) {
VascEntry ve = vascController.getVascEntryController().getVascEntryById(entryId);
result.addAll(ve.getVascEntryFields());
}
} else if ("fieldset".equals(vascType)) {
if (entryId!=null) {
VascEntry ve = vascController.getVascEntryController().getVascEntryById(entryId);
result.addAll(ve.getVascEntryFieldSets());
}
} else if ("linkentries".equals(vascType)) {
if (entryId!=null) {
VascEntry ve = vascController.getVascEntryController().getVascEntryById(entryId);
result.addAll(ve.getVascEntryLinks());
}
} else if ("listoptions".equals(vascType)) {
if (entryId!=null) {
VascEntry ve = vascController.getVascEntryController().getVascEntryById(entryId);
result.addAll(ve.getVascEntryListOptions());
}
}
return result;
}
public void persist(Object object) throws VascException {
edit(object,false,true);
}
public Object merge(Object object) throws VascException {
return edit(object,true,true);
}
public void delete(Object object) throws VascException {
edit(object,true,false);
}
public Object edit(Object object,boolean removeReal,boolean addEdit) throws VascException {
if (object instanceof VascEntry) {
entryId = ((VascEntry)object).getId();
}
VascEntryLocal veReal = (VascEntryLocal)((VascEntryControllerLocal)vascController.getVascEntryController()).getMasterVascEntryById(entryId);
if ("entry".equals(vascType)) {
} else if ("field".equals(vascType)) {
VascEntryFieldLocal vef = (VascEntryFieldLocal)object;
if (removeReal) {
VascEntryField vefReal = veReal.getVascEntryFieldById(vef.getId());
veReal.removeVascEntryField((VascEntryFieldLocal)vefReal);
}
if (addEdit) {
veReal.addVascEntryField(vef);
}
} else if ("fieldset".equals(vascType)) {
VascEntryFieldSetLocal vefs = (VascEntryFieldSetLocal)object;
if (removeReal) {
VascEntryFieldSet vefsReal = veReal.getVascEntryFieldSetById(vefs.getId());
veReal.removeVascEntryFieldSet((VascEntryFieldSetLocal)vefsReal);
}
if (addEdit) {
veReal.addVascEntryFieldSet(vefs);
}
} else if ("linkentries".equals(vascType)) {
VascEntryLinkLocal vefs = (VascEntryLinkLocal)object;
if (removeReal) {
VascEntryLink vefsReal = veReal.getVascEntryLinkById(vefs.getId());
veReal.removeVascEntryLink((VascEntryLinkLocal)vefsReal);
}
if (addEdit) {
veReal.addVascEntryLink(vefs);
}
} else if ("listoptions".equals(vascType)) {
VascEntryListOptionLocal vef = (VascEntryListOptionLocal)object;
if (removeReal) {
VascEntryListOption vefReal = veReal.getVascEntryListOptionById(vef.getId());
veReal.removeVascEntryListOption((VascEntryListOptionLocal)vefReal);
}
if (addEdit) {
veReal.addVascEntryListOption(vef);
}
}
return object;
}
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
return new BeanVascEntryFieldValue();
}
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
if ("entry".equals(vascType)) {
return new BeanVascEntryRecordCreator(DefaultVascEntry.class);
} else if ("field".equals(vascType)) {
return new BeanVascEntryRecordCreator(DefaultVascEntryField.class);
} else if ("fieldset".equals(vascType)) {
return new BeanVascEntryRecordCreator(DefaultVascEntryFieldSet.class);
} else if ("linkentries".equals(vascType)) {
return new BeanVascEntryRecordCreator(DefaultVascEntryLink.class);
} else if ("listoptions".equals(vascType)) {
return new BeanVascEntryRecordCreator(DefaultVascEntryField.class);
}
return null;
}
/**
* @return the vascController
*/
public VascController getVascController() {
return vascController;
}
/**
* @param vascController the vascController to set
*/
public void setVascController(VascController vascController) {
this.vascController = vascController;
}
/**
* @return the vascType
*/
public String getVascType() {
return vascType;
}
/**
* @param vascType the vascType to set
*/
public void setVascType(String vascType) {
this.vascType = vascType;
}
}

View file

@ -1,107 +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.data;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascException;
import org.x4o.xml.element.DefaultElementObjectPropertyValue;
/**
* BeanVascEntryFieldValue provides get/set support for bean based backends.
*
* @author Willem Cazander
* @version 1.0 Dec 05, 2009
*/
public class BeanVascEntryFieldValue implements VascEntryFieldValue {
private static final long serialVersionUID = 1L;
private DefaultElementObjectPropertyValue bean = new DefaultElementObjectPropertyValue();
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object)
*/
public Object getValue(VascEntryField field, Object record) throws VascException {
if (field==null) {
throw new NullPointerException("Can't get value of null field.");
}
if (field.getBackendName()==null) {
throw new NullPointerException("Can't get value of null backendName field.");
}
if (record==null) {
throw new NullPointerException("Can't get value of null object.");
}
try {
Object o = bean.getProperty(record,field.getBackendName());
return o;
} catch (Exception e) {
throw new VascException(e);
}
}
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getDisplayValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object)
*/
public String getDisplayValue(VascEntryField field, Object record) throws VascException {
Object value = getValue(field,record);
if (value==null) {
return "";
}
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 VascException(e);
}
}
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#setValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object, java.lang.Object)
*/
public void setValue(VascEntryField field, Object record,Object value) throws VascException {
if (field==null) {
throw new NullPointerException("Can't set value of null field.");
}
if (field.getBackendName()==null) {
throw new NullPointerException("Can't set value of null backendName field.");
}
if (record==null) {
throw new NullPointerException("Can't set value of null object.");
}
try {
bean.setProperty(record, field.getBackendName(), value);
} catch (Exception e) {
throw new VascException(e);
}
}
}

View file

@ -1,60 +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.data;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascException;
/**
* BeanVascEntryRecordCreator creates a new backend record based on class object.
*
* @author Willem Cazander
* @version 1.0 Dec 05, 2009
*/
public class BeanVascEntryRecordCreator implements VascEntryRecordCreator {
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 Class<?> getObjectClass() {
return resultClass;
}
public Object newRecord(VascEntry entry) throws VascException {
try {
return resultClass.newInstance();
} catch (InstantiationException e) {
throw new VascException(e);
} catch (IllegalAccessException e) {
throw new VascException(e);
}
}
}

View file

@ -1,80 +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.data;
import java.util.Map;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascException;
/**
* MapVascEntryFieldValue provides get/set support on Map record object.
*
* @author Willem Cazander
* @version 1.0 Dec 05, 2009
*/
public class MapVascEntryFieldValue implements VascEntryFieldValue {
private static final long serialVersionUID = 1L;
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object)
*/
@SuppressWarnings("unchecked")
public Object getValue(VascEntryField field, Object record) throws VascException {
if (field==null) {
throw new NullPointerException("Can't get value of null field.");
}
if (field.getBackendName()==null) {
throw new NullPointerException("Can't get value of null backendName field.");
}
if (record==null) {
throw new NullPointerException("Can't get value of null object.");
}
Map<String,Object> map = (Map<String,Object>)record;
Object fieldValue = map.get(field.getBackendName());
return fieldValue;
}
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getDisplayValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object)
*/
public String getDisplayValue(VascEntryField field, Object record) throws VascException {
Object fieldValue = getValue(field,record);
if (fieldValue==null) {
fieldValue = "";
}
return fieldValue.toString();
}
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#setValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object, java.lang.Object)
*/
@SuppressWarnings("unchecked")
public void setValue(VascEntryField field, Object record,Object value) throws VascException {
Map<String,Object> map = (Map<String,Object>)record;
map.put(field.getBackendName(), value);
}
}

View file

@ -1,49 +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.data;
import java.util.HashMap;
import java.util.Map;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascException;
/**
* MapVascEntryRecordCreator creates a new HashMap for Map based record backends.
*
* @author Willem Cazander
* @version 1.0 Dec 05, 2009
*/
public class MapVascEntryRecordCreator implements VascEntryRecordCreator {
private static final long serialVersionUID = 1L;
public Class<?> getObjectClass() {
return Map.class;
}
public Object newRecord(VascEntry entry) throws VascException {
return new HashMap<String,Object>(10);
}
}

View file

@ -26,13 +26,11 @@ import java.util.List;
import java.util.Map;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascException;
/**
* VascBackendProxy to implement missing features of the backend.
@ -107,14 +105,14 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy {
* @throws Exception
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
return backend.execute(state);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#delete(java.lang.Object)
*/
public void delete(Object object) throws VascException {
public void delete(Object object) throws VascBackendException {
backend.delete(object);
}
@ -135,29 +133,29 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy {
/**
* @see net.forwardfire.vasc.backend.VascBackend#merge(java.lang.Object)
*/
public Object merge(Object object) throws VascException {
public Object merge(Object object) throws VascBackendException {
return backend.merge(object);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#persist(java.lang.Object)
*/
public void persist(Object object) throws VascException {
public void persist(Object object) throws VascBackendException {
backend.persist(object);
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryFieldValue(net.forwardfire.vasc.core.VascEntryField)
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryFieldValue()
*/
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
return backend.provideVascEntryFieldValue(field);
public VascEntryFieldValue provideVascEntryFieldValue() {
return backend.provideVascEntryFieldValue();
}
/**
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryRecordCreator(net.forwardfire.vasc.core.VascEntry)
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryRecordCreator()
*/
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
return backend.provideVascEntryRecordCreator(vascEntry);
public VascEntryRecordCreator provideVascEntryRecordCreator() {
return backend.provideVascEntryRecordCreator();
}
/**
@ -177,14 +175,14 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy {
/**
* @see net.forwardfire.vasc.core.VascBackend#doRecordMoveDownById(VascBackendState state,java.lang.Object)
*/
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascException {
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascBackendException {
return backend.doRecordMoveDownById(state,primaryId);
}
/**
* @see net.forwardfire.vasc.core.VascBackend#doRecordMoveUpById(VascBackendState state,java.lang.Object)
*/
public long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascException {
public long doRecordMoveUpById(VascBackendState state,Object primaryId) throws VascBackendException {
return backend.doRecordMoveUpById(state,primaryId);
}

View file

@ -26,8 +26,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascException;
/**
* Does simple caching for the data.
@ -130,7 +130,7 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
boolean changed = isStateChanged(state);
if (data==null | changed) {
data = backend.execute(state);
@ -151,7 +151,7 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#delete(java.lang.Object)
*/
@Override
public void delete(Object object) throws VascException {
public void delete(Object object) throws VascBackendException {
requestFlush = true;
super.delete(object);
}
@ -160,7 +160,7 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#merge(java.lang.Object)
*/
@Override
public Object merge(Object object) throws VascException {
public Object merge(Object object) throws VascBackendException {
requestFlush = true;
return super.merge(object);
}
@ -169,7 +169,7 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#persist(java.lang.Object)
*/
@Override
public void persist(Object object) throws VascException {
public void persist(Object object) throws VascBackendException {
requestFlush = true;
super.persist(object);
}

View file

@ -26,11 +26,11 @@ 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.VascBackendState;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryBackendEventListener;
import net.forwardfire.vasc.core.entry.VascEntryBackendEventListener.VascBackendEventType;
import net.forwardfire.vasc.core.VascException;
/**
* Holds !! and fires the backend event listeners.
@ -105,7 +105,7 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#delete(java.lang.Object)
*/
@Override
public void delete(Object object) throws VascException {
public void delete(Object object) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_DELETE,object);
super.delete(object);
fireVascEvent(VascBackendEventType.POST_DELETE,object);
@ -115,7 +115,7 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveDownById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
*/
@Override
public long doRecordMoveDownById(VascBackendState state, Object primaryId) throws VascException {
public long doRecordMoveDownById(VascBackendState state, Object primaryId) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_MOVE_DOWN,primaryId);
Long result = super.doRecordMoveDownById(state, primaryId);
fireVascEvent(VascBackendEventType.POST_MOVE_DOWN,result);
@ -126,7 +126,7 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveUpById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
*/
@Override
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascException {
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_MOVE_UP,primaryId);
Long result = super.doRecordMoveUpById(state, primaryId);
fireVascEvent(VascBackendEventType.POST_MOVE_UP,result);
@ -137,7 +137,7 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#execute(net.forwardfire.vasc.backend.VascBackendState)
*/
@Override
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_EXECUTE,state);
List<Object> result = super.execute(state);
fireVascEvent(VascBackendEventType.POST_EXECUTE,result);
@ -159,7 +159,7 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#merge(java.lang.Object)
*/
@Override
public Object merge(Object object) throws VascException {
public Object merge(Object object) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_MERGE,object);
Object result = super.merge(object);
fireVascEvent(VascBackendEventType.POST_MERGE,result);
@ -170,7 +170,7 @@ public class VascBackendProxyEventExecutor extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#persist(java.lang.Object)
*/
@Override
public void persist(Object object) throws VascException {
public void persist(Object object) throws VascBackendException {
fireVascEvent(VascBackendEventType.PRE_PERSIST,object);
super.persist(object);
fireVascEvent(VascBackendEventType.POST_PERSIST,object);

View file

@ -26,12 +26,9 @@ import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackend;
import net.forwardfire.vasc.backend.VascBackendFilter;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascException;
/**
* Simple filter support
@ -42,7 +39,7 @@ import net.forwardfire.vasc.core.VascException;
public class VascBackendProxyFilter extends AbstractVascBackendProxy {
private long records = 0;
private List<VascBackendFilter> filters = null;
private List<VascProxyFilter> filters = null;
/**
* @see java.lang.Object#clone()
@ -59,7 +56,7 @@ public class VascBackendProxyFilter extends AbstractVascBackendProxy {
public void initProxy(VascBackend backend, VascEntry entry) {
super.initProxy(backend,entry);
filters = entry.getVascBackendFilters();
for (VascBackendFilter filter:filters) {
for (VascProxyFilter filter:filters) {
filter.initFilter(entry);
}
}
@ -79,7 +76,7 @@ public class VascBackendProxyFilter extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
List<Object> result = backend.execute(state);
if (filters==null) {
return result;
@ -89,7 +86,7 @@ public class VascBackendProxyFilter extends AbstractVascBackendProxy {
}
List<Object> search = new ArrayList<Object>(result.size()/2);
for (Object o:result) {
for (VascBackendFilter filter:filters) {
for (VascProxyFilter filter:filters) {
Object r = filter.filterObject(o);
if (r!=null) {
search.add(r);

View file

@ -25,8 +25,8 @@ package net.forwardfire.vasc.backend.proxy;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascException;
/**
* Simulates a real pages backend.
@ -70,7 +70,7 @@ public class VascBackendProxyPaged extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
List<Object> allData = backend.execute(state);
int pageSize = state.getPageSize();
if (pageSize==0) {

View file

@ -25,10 +25,10 @@ package net.forwardfire.vasc.backend.proxy;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascException;
/**
* Simple text search
@ -70,7 +70,7 @@ public class VascBackendProxySearch extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
List<Object> result = backend.execute(state);
if (state.getSearchString()==null) {
return result;
@ -82,8 +82,8 @@ public class VascBackendProxySearch extends AbstractVascBackendProxy {
List<Object> search = new ArrayList<Object>(result.size()/4);
for (Object record:result) {
for (VascEntryField field:entry.getVascEntryFields()) {
VascEntryFieldValue fieldValue = backend.provideVascEntryFieldValue(field);
Object value = fieldValue.getValue(field, record);
VascEntryFieldValue fieldValue = backend.provideVascEntryFieldValue();
Object value = fieldValue.getValue(field.getBackendName(), record);
if (value==null) {
continue; // can't search null values.
}

View file

@ -26,11 +26,10 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryFieldLocal;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascException;
/**
* Add an sortware sort an a backend
@ -74,14 +73,13 @@ public class VascBackendProxySort extends AbstractVascBackendProxy {
*/
@SuppressWarnings("unchecked")
@Override
public List<Object> execute(final VascBackendState state) throws VascException {
public List<Object> execute(final VascBackendState state) throws VascBackendException {
List<Object> result = backend.execute(state);
if (state.getSortField()==null) {
return result;
}
try {
final VascEntryField field = getVascEntryFieldByBackendName(state.getSortField());
final VascEntryFieldValue fieldValue = backend.provideVascEntryFieldValue(((VascEntryFieldLocal)field).clone()); // TODO fixme
final VascEntryField field = getVascEntryFieldByBackendName(state.getSortField());
final VascEntryFieldValue fieldValue = backend.provideVascEntryFieldValue();
Collections.sort(result, new Comparator<Object>() {
@SuppressWarnings("rawtypes")
public int compare(Object o1, Object o2) {
@ -89,11 +87,11 @@ public class VascBackendProxySort extends AbstractVascBackendProxy {
Comparable c1 = null;
Comparable c2 = null;
if (field.getDisplayName()!=null) {
c1 = fieldValue.getDisplayValue(field, o1);
c2 = fieldValue.getDisplayValue(field, o2);
c1 = fieldValue.getDisplayValue(field.getBackendName(), o1);
c2 = fieldValue.getDisplayValue(field.getBackendName(), o2);
} else {
c1 = (Comparable)fieldValue.getValue(field, o1);
c2 = (Comparable)fieldValue.getValue(field, o2);
c1 = (Comparable)fieldValue.getValue(field.getBackendName(), o1);
c2 = (Comparable)fieldValue.getValue(field.getBackendName(), o2);
}
if (c1==null & c2==null) {
return 0;
@ -122,20 +120,12 @@ public class VascBackendProxySort extends AbstractVascBackendProxy {
} else {
return c2.compareTo(c1);
}
} catch (VascException e) {
} catch (VascBackendException e) {
e.printStackTrace();
return 0;
}
}
});
} catch (CloneNotSupportedException e1) {
throw new VascException(e1);
} // TODO: check serialable stuff again
return result;
}
}

View file

@ -26,8 +26,8 @@ import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascException;
/**
* Does simple timer logging for the backend actions.
@ -58,7 +58,7 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
*/
@Override
public List<Object> execute(VascBackendState state) throws VascException {
public List<Object> execute(VascBackendState state) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.execute(state);
@ -83,7 +83,7 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveDownById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
*/
@Override
public long doRecordMoveDownById(VascBackendState state, Object primaryId) throws VascException {
public long doRecordMoveDownById(VascBackendState state, Object primaryId) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.doRecordMoveDownById(state, primaryId);
@ -97,7 +97,7 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#doRecordMoveUpById(net.forwardfire.vasc.backend.VascBackendState, java.lang.Object)
*/
@Override
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascException {
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.doRecordMoveUpById(state, primaryId);
@ -111,7 +111,7 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#delete(java.lang.Object)
*/
@Override
public void delete(Object object) throws VascException {
public void delete(Object object) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
backend.delete(object);
@ -125,7 +125,7 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#merge(java.lang.Object)
*/
@Override
public Object merge(Object object) throws VascException {
public Object merge(Object object) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
return backend.merge(object);
@ -139,7 +139,7 @@ public class VascBackendProxyTimerLogger extends AbstractVascBackendProxy {
* @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#persist(java.lang.Object)
*/
@Override
public void persist(Object object) throws VascException {
public void persist(Object object) throws VascBackendException {
long t1 = System.currentTimeMillis();
try {
backend.persist(object);

View file

@ -20,7 +20,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.forwardfire.vasc.backend;
package net.forwardfire.vasc.backend.proxy;
import net.forwardfire.vasc.core.VascEntry;
@ -31,7 +31,7 @@ import net.forwardfire.vasc.core.VascEntry;
* @author Willem Cazander
* @version 1.0 Apr 28, 2009
*/
public interface VascBackendFilter {
public interface VascProxyFilter {
/**
* Inits the filter
@ -48,5 +48,5 @@ public interface VascBackendFilter {
* @return
* @throws CloneNotSupportedException
*/
public VascBackendFilter clone() throws CloneNotSupportedException;
public VascProxyFilter clone() throws CloneNotSupportedException;
}

View file

@ -25,8 +25,8 @@ package net.forwardfire.vasc.core;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.core.base.AbstractVascBaseIdRoleCrudOrderMetaLocal;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.validators.VascValidator;
/**

View file

@ -28,7 +28,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.forwardfire.vasc.backend.VascBackendFilter;
import net.forwardfire.vasc.backend.proxy.VascProxyFilter;
import net.forwardfire.vasc.core.actions.ColumnVascAction;
import net.forwardfire.vasc.core.actions.ColumnVascActionLocal;
import net.forwardfire.vasc.core.actions.GlobalVascAction;
@ -82,7 +82,7 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
private Map<String,List<String>> eventEntryFrontendEventListeners = null;
private List<String> eventEntryBackendEventListeners = null;
private List<VascEntryListOptionLocal> vascEntryListOptions = null;
private List<VascBackendFilter> backendFilters = null;
private List<VascProxyFilter> backendFilters = null;
private Map<String,List<String>> eventEntryFrontendActions = null;
private String backendId = null;
@ -105,7 +105,7 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
eventEntryFrontendEventListeners = new HashMap<String,List<String>>(10);
eventEntryBackendEventListeners = new ArrayList<String>(10);
vascEntryListOptions = new ArrayList<VascEntryListOptionLocal>(10);
backendFilters = new ArrayList<VascBackendFilter>(3);
backendFilters = new ArrayList<VascProxyFilter>(3);
}
@Override
@ -175,7 +175,7 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
optionClone.setVascEntry(clone);
clone.addVascEntryListOption(optionClone);
}
for (VascBackendFilter filter:backendFilters) {
for (VascProxyFilter filter:backendFilters) {
clone.addVascBackendFilter(filter.clone());
}
for (String key:eventEntryFrontendActions.keySet()) {
@ -883,11 +883,11 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
}
public void addVascBackendFilter(VascBackendFilter filter) {
public void addVascBackendFilter(VascProxyFilter filter) {
backendFilters.add(filter);
}
public List<VascBackendFilter> getVascBackendFilters() {
public List<VascProxyFilter> getVascBackendFilters() {
return backendFilters;
}

View file

@ -25,7 +25,7 @@ package net.forwardfire.vasc.core;
import java.util.Collection;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendFilter;
import net.forwardfire.vasc.backend.proxy.VascProxyFilter;
import net.forwardfire.vasc.core.actions.ColumnVascAction;
import net.forwardfire.vasc.core.actions.GlobalVascAction;
import net.forwardfire.vasc.core.actions.RowVascAction;
@ -229,7 +229,7 @@ public interface VascEntry extends VascBaseIdRoleCrud {
public VascEntryListOption getVascEntryListOptionById(String listOptionId);
public List<VascBackendFilter> getVascBackendFilters();
public List<VascProxyFilter> getVascBackendFilters();
public List<String> getVascEntryFrontendActionsByType(String frontendType);
}

View file

@ -24,8 +24,8 @@ package net.forwardfire.vasc.core;
import java.util.List;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.core.base.VascBaseIdRoleCrudOrderMeta;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.validators.VascValidator;
/**

View file

@ -22,8 +22,8 @@
package net.forwardfire.vasc.core;
import net.forwardfire.vasc.backend.VascEntryFieldValue;
import net.forwardfire.vasc.core.base.VascBaseIdRoleCrudOrderMetaLocal;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.validators.VascValidator;
/**

View file

@ -24,7 +24,7 @@ package net.forwardfire.vasc.core;
import java.util.Collection;
import net.forwardfire.vasc.backend.VascBackendFilter;
import net.forwardfire.vasc.backend.proxy.VascProxyFilter;
import net.forwardfire.vasc.core.actions.ColumnVascActionLocal;
import net.forwardfire.vasc.core.actions.GlobalVascActionLocal;
import net.forwardfire.vasc.core.actions.RowVascActionLocal;
@ -260,7 +260,7 @@ public interface VascEntryLocal extends VascEntry,VascBaseIdRoleCrudLocal {
public Collection<VascEntryListOptionLocal> getVascEntryListOptionsLocal();
public void addVascBackendFilter(VascBackendFilter filter);
public void addVascBackendFilter(VascProxyFilter filter);
public void addVascEntryFrontendAction(String actionClass,String frontendType);

View file

@ -4,7 +4,7 @@ import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.frontend.VascFrontendActions;
import net.forwardfire.vasc.frontend.VascFrontendControllerLocal;
import net.forwardfire.vasc.frontend.VascFrontendDataSelector;
import net.forwardfire.vasc.frontend.VascFrontendPager;
import net.forwardfire.vasc.frontend.VascFrontendPageInfo;
import net.forwardfire.vasc.frontend.VascFrontendUserController;
import net.forwardfire.vasc.frontend.VascFrontendUserSettingController;
@ -24,7 +24,7 @@ public interface VascInterfaceLoader {
public VascFrontendPager createVascFrontendPagerImpl(VascEntry entry);
public VascFrontendPageInfo createVascFrontendPagerImpl(VascEntry entry);
public VascFrontendActions createVascFrontendActionsImpl(VascEntry entry);
public VascFrontendDataSelector createVascFrontendDataSelectorImpl(VascEntry entry);
public VascFrontendUserController createVascFrontendUserControllerImpl(VascEntry entry);

View file

@ -1,44 +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.core.entry;
import java.io.Serializable;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascException;
/**
* VascEntryFieldValue
*
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public interface VascEntryFieldValue extends Serializable {
public Object getValue(VascEntryField field,Object record) throws VascException;
public String getDisplayValue(VascEntryField field,Object record) throws VascException;
public void setValue(VascEntryField field,Object record,Object value) throws VascException;
}

View file

@ -1,42 +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.core.entry;
import java.io.Serializable;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascException;
/**
*
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public interface VascEntryRecordCreator extends Serializable {
public Object newRecord(VascEntry entry) throws VascException;
public Class<?> getObjectClass();
}

View file

@ -22,6 +22,7 @@
package net.forwardfire.vasc.core.ui;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascException;
@ -45,7 +46,11 @@ public class VascColumnValueModelListener implements VascValueModelListener {
}
public void valueUpdate(VascValueModel model) throws VascException {
vascEntryField.getVascEntryFieldValue().setValue(vascEntryField, bean, model.getValue());
try {
vascEntryField.getVascEntryFieldValue().setValue(vascEntryField.getBackendName(), bean, model.getValue());
} catch (VascBackendException e) {
throw new VascException(e);
}
}
/**

View file

@ -27,8 +27,6 @@ import java.util.EventListener;
import net.forwardfire.vasc.core.VascException;
/**
*
* @author Willem Cazander

View file

@ -65,9 +65,9 @@ public interface VascFrontendController {
public VascFrontendActions getVascFrontendActions();
/**
* @return the vascFrontendPager
* @return the vascFrontendPageInfo
*/
public VascFrontendPager getVascFrontendPager();
public VascFrontendPageInfo getVascFrontendPageInfo();
/**
* @return the VascFrontendHelper

View file

@ -41,9 +41,9 @@ public interface VascFrontendControllerLocal extends VascFrontendController {
public void setVascFrontendActions(VascFrontendActions vascFrontendActions);
/**
* @param vascFrontendPager the vascFrontendPager to set
* @param vascFrontendPageInfo the vascFrontendPageInfo to set
*/
public void setVascFrontendPager(VascFrontendPager vascFrontendPager);
public void setVascFrontendPageInfo(VascFrontendPageInfo vascFrontendPager);
/**
* @param vascEntryResourceResolver the vascEntryResourceResolver to set

View file

@ -24,17 +24,15 @@ package net.forwardfire.vasc.frontend;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendPageNumber;
/**
* VascFrontendPager has some info about the pageing data models
*
* note all the get properties for different el parsers.
* TODO: fix all the get properties for different el parsers.
*
* @author Willem Cazander
* @version 1.0 Jan 22, 2012
*/
public interface VascFrontendPager extends VascFrontendEntry {
public interface VascFrontendPageInfo extends VascFrontendEntry {
public long getPageStartCount();
public long getPageStopCount();
@ -47,9 +45,9 @@ public interface VascFrontendPager extends VascFrontendEntry {
public boolean getHasExtendedPageMode();
public boolean getHasExtendedPageModeCenter();
public List<VascBackendPageNumber> getTablePagesFromBackend();
public List<VascBackendPageNumber> getTablePagesNormal();
public List<VascBackendPageNumber> getTablePagesExtendedBegin();
public List<VascBackendPageNumber> getTablePagesExtendedCenter();
public List<VascBackendPageNumber> getTablePagesExtendedEnd();
public List<VascFrontendPageInfoNumber> getTablePagesFromBackend();
public List<VascFrontendPageInfoNumber> getTablePagesNormal();
public List<VascFrontendPageInfoNumber> getTablePagesExtendedBegin();
public List<VascFrontendPageInfoNumber> getTablePagesExtendedCenter();
public List<VascFrontendPageInfoNumber> getTablePagesExtendedEnd();
}

View file

@ -20,25 +20,40 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.forwardfire.vasc.backend;
package net.forwardfire.vasc.frontend;
import java.io.Serializable;
/**
* Small class to wrap page number and the selected page number.
* note: this can be removed when JSF has the combined EL.
* Small class to wrap page number and the selected page number. note: this can
* be removed when JSF has the combined EL.
*
* @author Willem Cazander
* @version 1.0 Apr 25, 2006
*/
public class VascBackendPageNumber implements Serializable {
public class VascFrontendPageInfoNumber implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pageNumber = null;
private Boolean selected = false;
public VascBackendPageNumber(Integer pageNumber) { this.pageNumber=pageNumber; }
public Integer getPageNumber() { return pageNumber; }
public Boolean getSelected() { return selected; }
public Boolean getNotSelected() { return !selected; }
public void setSelected(Boolean selected) { this.selected=selected; }
public VascFrontendPageInfoNumber(Integer pageNumber) {
this.pageNumber = pageNumber;
}
public Integer getPageNumber() {
return pageNumber;
}
public Boolean getSelected() {
return selected;
}
public Boolean getNotSelected() {
return !selected;
}
public void setSelected(Boolean selected) {
this.selected = selected;
}
}

View file

@ -1,36 +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;
import net.forwardfire.vasc.backend.AbstractVascBackendControllerLocal;
/**
* DefaultVascBackendController stores the vasc backends.
*
* @author Willem Cazander
* @version 1.0 Sep 18, 2008
*/
public class DefaultVascBackendController extends AbstractVascBackendControllerLocal {
}

View file

@ -1,36 +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;
import net.forwardfire.vasc.backend.AbstractVascBackendState;
/**
* Holds the state for the backend
*
* @author Willem Cazander
* @version 1.0 May 26, 2009
*/
public class DefaultVascBackendState extends AbstractVascBackendState {
private static final long serialVersionUID = 8828343641448595993L;
}

View file

@ -29,8 +29,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.proxy.VascBackendProxy;
import net.forwardfire.vasc.core.VascController;
import net.forwardfire.vasc.core.VascEntry;
@ -45,7 +47,6 @@ import net.forwardfire.vasc.core.VascInterfaceKeyFrontend;
import net.forwardfire.vasc.core.VascInterfaceLoader;
import net.forwardfire.vasc.core.entry.VascEntryExport;
import net.forwardfire.vasc.core.entry.VascEntryFieldValidatorService;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascException;
import net.forwardfire.vasc.frontend.VascFrontendControllerLocal;
import net.forwardfire.vasc.frontend.VascFrontendEntry;
@ -216,7 +217,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
entry.setVascFrontendController(controller); // <------ This is the end result.
// Add some generic frontend impl code.
controller.setVascFrontendPager( loader.createVascFrontendPagerImpl(entry));
controller.setVascFrontendPageInfo( loader.createVascFrontendPagerImpl(entry));
controller.setVascFrontendActions( loader.createVascFrontendActionsImpl(entry));
controller.setVascFrontendDataSelector( loader.createVascFrontendDataSelectorImpl(entry));
controller.setVascFrontendUserController( loader.createVascFrontendUserControllerImpl(entry));
@ -253,7 +254,7 @@ public class DefaultVascEntryConfigController implements VascEntryConfigControll
// Fetch all data field value impl for this backend.
for (VascEntryField field:entry.getVascEntryFields()) {
if (field.getVascEntryFieldValue()==null) {
VascEntryFieldValue v = backend.provideVascEntryFieldValue(field);
VascEntryFieldValue v = backend.provideVascEntryFieldValue();
((VascEntryFieldLocal)field).setVascEntryFieldValue(v);
}
}

View file

@ -22,6 +22,8 @@
package net.forwardfire.vasc.impl;
import net.forwardfire.vasc.backend.DefaultVascBackendController;
import net.forwardfire.vasc.backend.DefaultVascBackendState;
import net.forwardfire.vasc.backend.proxy.VascBackendProxyCache;
import net.forwardfire.vasc.backend.proxy.VascBackendProxyEventExecutor;
import net.forwardfire.vasc.backend.proxy.VascBackendProxyFilter;

View file

@ -36,7 +36,7 @@ import net.forwardfire.vasc.core.VascInterfaceLoader;
import net.forwardfire.vasc.frontend.VascFrontendActions;
import net.forwardfire.vasc.frontend.VascFrontendControllerLocal;
import net.forwardfire.vasc.frontend.VascFrontendDataSelector;
import net.forwardfire.vasc.frontend.VascFrontendPager;
import net.forwardfire.vasc.frontend.VascFrontendPageInfo;
import net.forwardfire.vasc.frontend.VascFrontendUserController;
import net.forwardfire.vasc.frontend.VascFrontendUserSettingController;
@ -121,8 +121,8 @@ public class DefaultVascInterfaceLoader implements VascInterfaceLoader {
/**
* @see net.forwardfire.vasc.core.VascInterfaceLoader#createVascFrontendPagerImpl()
*/
public VascFrontendPager createVascFrontendPagerImpl(VascEntry entry) {
return (VascFrontendPager)createImpl(VascInterfaceKeyFrontend.VASC_FRONTEND_PAGER,entry);
public VascFrontendPageInfo createVascFrontendPagerImpl(VascEntry entry) {
return (VascFrontendPageInfo)createImpl(VascInterfaceKeyFrontend.VASC_FRONTEND_PAGER,entry);
}
/**

View file

@ -1,108 +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.entry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.VascException;
import org.x4o.xml.element.DefaultElementObjectPropertyValue;
/**
*
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public class BeanPropertyVascEntryFieldValue implements VascEntryFieldValue {
private static final long serialVersionUID = 1L;
private String property = null;
private DefaultElementObjectPropertyValue helper = null;
public BeanPropertyVascEntryFieldValue() {
helper = new DefaultElementObjectPropertyValue();
}
public BeanPropertyVascEntryFieldValue(String property) {
this();
setProperty(property);
}
/**
* @see net.forwardfire.vasc.core.column.VascColumnValue#getValue(net.forwardfire.vasc.core.column.VascTableColumn, java.lang.Object)
*/
public Object getValue(VascEntryField column,Object record) throws VascException {
if(getProperty()==null) {
return null;
}
if(getProperty().equals("")) {
return "";
}
try {
return helper.getProperty(record, getProperty());
} catch (Exception e) {
throw new VascException(e);
}
}
/**
* @see net.forwardfire.vasc.core.entry.VascEntryFieldValue#getDisplayValue(net.forwardfire.vasc.core.VascEntryField, java.lang.Object)
*/
public String getDisplayValue(VascEntryField field, Object record) throws VascException {
return ""+getValue(field,record); // not supported
}
/**
* @see net.forwardfire.vasc.core.column.VascColumnValue#setValue(net.forwardfire.vasc.core.column.VascTableColumn, java.lang.Object, java.lang.Object)
*/
public void setValue(VascEntryField column, Object record,Object value) throws VascException {
if(getProperty()==null) {
return;
}
if(getProperty().equals("")) {
return;
}
try {
helper.setProperty(record, getProperty(),value);
} catch (Exception e) {
throw new VascException(e);
}
}
/**
* @return the property
*/
public String getProperty() {
return property;
}
/**
* @param property the property to set
*/
public void setProperty(String property) {
this.property = property;
}
}

View file

@ -1,63 +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.entry;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
import net.forwardfire.vasc.core.VascException;
/**
* BeanVascEntryRecordCreator creates an new instance Object from a defined objectClass.
*
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public class BeanVascEntryRecordCreator implements VascEntryRecordCreator {
private static final long serialVersionUID = 1L;
private Class<?> objectClass = null;
public BeanVascEntryRecordCreator() {
}
public BeanVascEntryRecordCreator(Class<?> objectClass) {
setObjectClass(objectClass);
}
public Object newRecord(VascEntry entry) throws VascException {
try {
return objectClass.newInstance();
} catch (InstantiationException e) {
throw new VascException(e);
} catch (IllegalAccessException e) {
throw new VascException(e);
}
}
public Class<?> getObjectClass() {
return objectClass;
}
public void setObjectClass(Class<?> objectClass) {
this.objectClass=objectClass;
}
}

View file

@ -25,8 +25,9 @@ package net.forwardfire.vasc.impl.frontend;
import java.util.Date;
import java.util.logging.Logger;
import net.forwardfire.vasc.backend.VascBackendFilter;
import net.forwardfire.vasc.backend.VascBackendException;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.backend.proxy.VascProxyFilter;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryLocal;
@ -58,10 +59,8 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.PRE_CREATE, null);
Object object;
try {
object = entry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryRecordCreator(((VascEntryLocal)entry).clone()).newRecord(entry);
} catch (CloneNotSupportedException e) {
throw new VascFrontendException(e);
} catch (VascException e) {
object = entry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryRecordCreator().newRecord();
} catch (VascBackendException e) {
throw new VascFrontendException(e);
}
if (object==null) {
@ -72,7 +71,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
continue; // no default value to set.
}
try {
Object value = field.getVascEntryFieldValue().getValue(field, object);
Object value = field.getVascEntryFieldValue().getValue(field.getBackendName(), object);
if (value!=null) {
continue; // value is already set by backend creator.
}
@ -84,8 +83,8 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
}
}
logger.finer("Setting default value for: "+field.getName()+" def: "+defaultValue);
field.getVascEntryFieldValue().setValue(field, object, defaultValue);
} catch (VascException ve) {
field.getVascEntryFieldValue().setValue(field.getBackendName(), object, defaultValue);
} catch (VascBackendException ve) {
throw new VascFrontendException(ve);
}
}
@ -93,7 +92,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
return object;
}
protected int removeObjectFromDataList(Object object) throws VascException {
protected int removeObjectFromDataList(Object object) throws VascBackendException {
int indexOld = entry.getVascFrontendController().getVascEntryState().getEntryDataList().indexOf(object);
if (entry.getVascFrontendController().getVascEntryState().getEntryDataList().remove(object)) {
return indexOld; // java worked well for use
@ -102,14 +101,14 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
// remove only work on (jpa)beans with an overrided equals method.
// we lets do the search ourselfs here because we should know the primary key value
VascEntryField field = entry.getVascEntryFieldById(entry.getPrimaryKeyFieldId());
Object idObject = field.getVascEntryFieldValue().getValue(field, object);
Object idObject = field.getVascEntryFieldValue().getValue(field.getBackendName(), object);
// is only null when creating objects
if (idObject!=null) {
int index = 0;
for (Object o:entry.getVascFrontendController().getVascEntryState().getEntryDataList()) {
field = entry.getVascEntryFieldById(entry.getPrimaryKeyFieldId());
Object id = field.getVascEntryFieldValue().getValue(field, o);
Object id = field.getVascEntryFieldValue().getValue(field.getBackendName(), o);
if (idObject.equals(id)) {
break;
}
@ -146,32 +145,35 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
}
protected Object saveObject(boolean persist) throws VascException {
Object object = entry.getVascFrontendController().getVascEntryState().getEntryDataObject();
Object result = null;
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.PRE_UPDATE,object);
int index = removeObjectFromDataList(object);
// save object on backend
if (persist) {
entry.getVascFrontendController().getVascEntryState().getVascBackend().persist(object);
result = object; // TODO: fix persist
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(1+entry.getVascFrontendController().getVascEntryState().getTotalBackendRecords());
} else {
result = entry.getVascFrontendController().getVascEntryState().getVascBackend().merge(object);
try {
Object object = entry.getVascFrontendController().getVascEntryState().getEntryDataObject();
Object result = null;
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.PRE_UPDATE,object);
int index = removeObjectFromDataList(object);
// save object on backend
if (persist) {
entry.getVascFrontendController().getVascEntryState().getVascBackend().persist(object);
result = object; // TODO: fix persist
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(1+entry.getVascFrontendController().getVascEntryState().getTotalBackendRecords());
} else {
result = entry.getVascFrontendController().getVascEntryState().getVascBackend().merge(object);
}
// put object thrue the filters
for (VascProxyFilter filter:entry.getVascBackendFilters()) {
result = filter.filterObject(result);
}
// put object back in list
entry.getVascFrontendController().getVascEntryState().getEntryDataList().add(index, result);
entry.getVascFrontendController().getVascEntryState().setEntryDataObject(null);
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.POST_UPDATE,result);
return result;
} catch (VascBackendException e) {
throw new VascException(e);
}
// put object thrue the filters
for (VascBackendFilter filter:entry.getVascBackendFilters()) {
result = filter.filterObject(result);
}
// put object back in list
entry.getVascFrontendController().getVascEntryState().getEntryDataList().add(index, result);
entry.getVascFrontendController().getVascEntryState().setEntryDataObject(null);
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.POST_UPDATE,result);
return result;
}
/**
@ -189,7 +191,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
entry.getVascFrontendController().getVascEntryState().setEntryDataObject(null);
entry.getVascFrontendController().getVascEntryState().setTotalBackendRecords(entry.getVascFrontendController().getVascEntryState().getTotalBackendRecords()-1);
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.POST_DELETE, object);
} catch (VascException ve) {
} catch (VascBackendException ve) {
throw new VascFrontendException(ve);
}
}
@ -234,7 +236,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
// Fire event post read
entry.getVascFrontendController().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.POST_READ, null);
} catch (VascException ve) {
} catch (VascBackendException ve) {
throw new VascFrontendException(ve);
}
}
@ -285,9 +287,9 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
if (entry.getVascFrontendController().getVascEntryState().getVascBackend().isRecordMoveable()) {
try {
VascEntryField p = entry.getVascEntryFieldById(entry.getPrimaryKeyFieldId());
Object primaryId = p.getVascEntryFieldValue().getValue(p, record);
Object primaryId = p.getVascEntryFieldValue().getValue(p.getBackendName(), record);
entry.getVascFrontendController().getVascEntryState().getVascBackend().doRecordMoveUpById(entry.getVascFrontendController().getVascEntryState().getVascBackendState(),primaryId);
} catch (VascException ve) {
} catch (VascBackendException ve) {
throw new VascFrontendException(ve);
}
@ -303,9 +305,9 @@ public class DefaultVascFrontendActions implements VascFrontendActions {
try {
VascEntryField p = entry.getVascEntryFieldById(entry.getPrimaryKeyFieldId());
Object primaryId = p.getVascEntryFieldValue().getValue(p, record);
Object primaryId = p.getVascEntryFieldValue().getValue(p.getBackendName(), record);
entry.getVascFrontendController().getVascEntryState().getVascBackend().doRecordMoveDownById(entry.getVascFrontendController().getVascEntryState().getVascBackendState(),primaryId);
} catch (VascException ve) {
} catch (VascBackendException ve) {
throw new VascFrontendException(ve);
}

View file

@ -49,7 +49,7 @@ import net.forwardfire.vasc.frontend.VascFrontendActions;
import net.forwardfire.vasc.frontend.VascFrontendControllerLocal;
import net.forwardfire.vasc.frontend.VascFrontendDataSelector;
import net.forwardfire.vasc.frontend.VascFrontendHelper;
import net.forwardfire.vasc.frontend.VascFrontendPager;
import net.forwardfire.vasc.frontend.VascFrontendPageInfo;
import net.forwardfire.vasc.frontend.VascFrontendUserController;
import net.forwardfire.vasc.frontend.VascFrontendUserSettingController;
@ -64,7 +64,7 @@ public class DefaultVascFrontendController implements VascFrontendControllerLoca
private VascFrontend vascFrontend = null;
private VascFrontendActions vascFrontendActions = null;
private VascFrontendPager vascFrontendPager = null;
private VascFrontendPageInfo vascFrontendPageInfo = null;
private VascEntryConfigFinalizer vascEntryFinalizer = null;
private VascFrontendHelper vascFrontendHelper = null;
private VascEntryResourceResolver vascEntryResourceResolver = null;
@ -121,15 +121,15 @@ public class DefaultVascFrontendController implements VascFrontendControllerLoca
/**
* @return the vascFrontendPager
*/
public VascFrontendPager getVascFrontendPager() {
return vascFrontendPager;
public VascFrontendPageInfo getVascFrontendPageInfo() {
return vascFrontendPageInfo;
}
/**
* @param vascFrontendPager the vascFrontendPager to set
*/
public void setVascFrontendPager(VascFrontendPager vascFrontendPager) {
this.vascFrontendPager = vascFrontendPager;
public void setVascFrontendPageInfo(VascFrontendPageInfo vascFrontendPageInfo) {
this.vascFrontendPageInfo = vascFrontendPageInfo;
}
/**

View file

@ -26,13 +26,14 @@ import java.util.ArrayList;
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.core.VascEntry;
import net.forwardfire.vasc.core.VascEntryField;
import net.forwardfire.vasc.core.VascEntryLink;
import net.forwardfire.vasc.core.VascEntryLinkType;
import net.forwardfire.vasc.core.actions.RowVascAction;
import net.forwardfire.vasc.core.entry.VascEntryFieldValidatorService;
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.ui.VascUIComponent;
import net.forwardfire.vasc.core.VascException;
import net.forwardfire.vasc.frontend.VascFrontendHelper;
@ -107,11 +108,15 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
}
Object objectSelected = entry.getVascFrontendController().getVascEntryState().getEntryDataObject();
Object objectValue = field.getVascEntryFieldValue().getValue(field, objectSelected);
for (VascEntryFieldValidatorService s:entry.getVascFrontendController().getVascValidatorServices()) {
error.addAll(s.validateObjectField(field, objectSelected, objectValue));
try {
Object objectValue = field.getVascEntryFieldValue().getValue(field.getBackendName(), objectSelected);
for (VascEntryFieldValidatorService s:entry.getVascFrontendController().getVascValidatorServices()) {
error.addAll(s.validateObjectField(field, objectSelected, objectValue));
}
return error;
} catch (VascBackendException e) {
throw new VascException(e);
}
return error;
}
/**
@ -192,8 +197,8 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
VascEntryFieldValue ve = v.getVascEntryFieldValue();
String result = "no-data";
try {
result = ve.getDisplayValue(v, row);
} catch (VascException e) {
result = ve.getDisplayValue(v.getBackendName(), row);
} catch (VascBackendException e) {
throw new RuntimeException("Could not get selected name DisplayValue: "+e.getMessage(),e);
}
return result;
@ -213,8 +218,8 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
VascEntryFieldValue ve = v.getVascEntryFieldValue();
String result = "no-data";
try {
result = ve.getDisplayValue(v, row);
} catch (VascException e) {
result = ve.getDisplayValue(v.getBackendName(), row);
} catch (VascBackendException e) {
throw new RuntimeException("Could not get parent name DisplayValue: "+e.getMessage(),e);
}
return result;

View file

@ -25,11 +25,11 @@ package net.forwardfire.vasc.impl.frontend;
import java.util.ArrayList;
import java.util.List;
import net.forwardfire.vasc.backend.VascBackendPageNumber;
import net.forwardfire.vasc.backend.VascBackendState;
import net.forwardfire.vasc.core.VascEntry;
import net.forwardfire.vasc.core.entry.VascEntryFrontendEventListener;
import net.forwardfire.vasc.frontend.VascFrontendPager;
import net.forwardfire.vasc.frontend.VascFrontendPageInfoNumber;
import net.forwardfire.vasc.frontend.VascFrontendPageInfo;
/**
@ -38,15 +38,15 @@ import net.forwardfire.vasc.frontend.VascFrontendPager;
* @author Willem Cazander
* @version 1.0 Jan 22, 2012
*/
public class DefaultVascFrontendPager implements VascFrontendPager {
public class DefaultVascFrontendPager implements VascFrontendPageInfo {
//private Logger logger = Logger.getLogger(DefaultVascFrontendPager.class.getName());
private VascEntry entry = null;
private List<VascBackendPageNumber> pagesAll = null;
private List<VascFrontendPageInfoNumber> pagesAll = null;
public void init(VascEntry entry) {
this.entry=entry;
pagesAll = new ArrayList<VascBackendPageNumber>(0);
pagesAll = new ArrayList<VascFrontendPageInfoNumber>(0);
entry.getVascFrontendController().addVascEntryFrontendEventListener(new DefaultVascFrontendPagerEventListener());
}
@ -138,8 +138,8 @@ public class DefaultVascFrontendPager implements VascFrontendPager {
return true;
}
public List<VascBackendPageNumber> getTablePagesFromBackend() {
List<VascBackendPageNumber> result = new ArrayList<VascBackendPageNumber>(30);
public List<VascFrontendPageInfoNumber> getTablePagesFromBackend() {
List<VascFrontendPageInfoNumber> result = new ArrayList<VascFrontendPageInfoNumber>(30);
VascBackendState state = entry.getVascFrontendController().getVascEntryState().getVascBackendState();
if (state.getPageSize()==0) {
return result; // paging disabled
@ -150,7 +150,7 @@ public class DefaultVascFrontendPager implements VascFrontendPager {
}
int pages = new Long(total/state.getPageSize()).intValue();
for (int i=0;i<=pages;i++) {
VascBackendPageNumber pn = new VascBackendPageNumber(i);
VascFrontendPageInfoNumber pn = new VascFrontendPageInfoNumber(i);
if (state.getPageIndex()==i) {
pn.setSelected(true);
}
@ -159,16 +159,16 @@ public class DefaultVascFrontendPager implements VascFrontendPager {
return result;
}
public List<VascBackendPageNumber> getTablePagesNormal() {
public List<VascFrontendPageInfoNumber> getTablePagesNormal() {
if (getHasExtendedPageMode()) {
return new ArrayList<VascBackendPageNumber>(0);
return new ArrayList<VascFrontendPageInfoNumber>(0);
} else {
return pagesAll;
}
}
public List<VascBackendPageNumber> getTablePagesExtendedBegin() {
List<VascBackendPageNumber> result = new ArrayList<VascBackendPageNumber>(6);
public List<VascFrontendPageInfoNumber> getTablePagesExtendedBegin() {
List<VascFrontendPageInfoNumber> result = new ArrayList<VascFrontendPageInfoNumber>(6);
if (pagesAll.size()>0) {
result.add(pagesAll.get(0));
}
@ -200,8 +200,8 @@ public class DefaultVascFrontendPager implements VascFrontendPager {
return result;
}
public List<VascBackendPageNumber> getTablePagesExtendedEnd() {
List<VascBackendPageNumber> result = new ArrayList<VascBackendPageNumber>(6);
public List<VascFrontendPageInfoNumber> getTablePagesExtendedEnd() {
List<VascFrontendPageInfoNumber> result = new ArrayList<VascFrontendPageInfoNumber>(6);
int pages = pagesAll.size();
int page = entry.getVascFrontendController().getVascEntryState().getVascBackendState().getPageIndex();
int off = pages-page;
@ -224,8 +224,8 @@ public class DefaultVascFrontendPager implements VascFrontendPager {
return result;
}
public List<VascBackendPageNumber> getTablePagesExtendedCenter() {
List<VascBackendPageNumber> result = new ArrayList<VascBackendPageNumber>(3);
public List<VascFrontendPageInfoNumber> getTablePagesExtendedCenter() {
List<VascFrontendPageInfoNumber> result = new ArrayList<VascFrontendPageInfoNumber>(3);
int page = entry.getVascFrontendController().getVascEntryState().getVascBackendState().getPageIndex();
if (page>0 && pagesAll.size() > page-1) {
result.add(pagesAll.get(page-1));

View file

@ -27,17 +27,17 @@ 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.entry.VascEntryFieldValue;
import net.forwardfire.vasc.core.ui.VascSelectItem;
import net.forwardfire.vasc.core.ui.VascSelectItemModel;
import net.forwardfire.vasc.core.VascException;
import net.forwardfire.vasc.impl.DefaultVascBackendState;
/**
* The DefaultVascSelectItemModel
@ -135,14 +135,14 @@ public class VascSelectItemModelEntry implements VascSelectItemModel {
}
VascEntryField field = fieldOrg.clone();
field.getVascValidators().clear();
VascEntryFieldValue v = fieldEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue(field);
VascEntryFieldValue v = fieldEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue();
Object record = fieldEntry.getVascFrontendController().getVascEntryState().getEntryDataObject();
if (record==null) {
//System.out.println("could not get selected records from state.");
continue;
}
Object value = v.getValue(fieldOrg, record);
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);
@ -155,7 +155,7 @@ public class VascSelectItemModelEntry implements VascSelectItemModel {
VascEntryField fieldClone = key.clone();
fieldClone.getVascValidators().clear();
VascEntryFieldValue v = currentEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue(fieldClone);
VascEntryFieldValue v = currentEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue();
key.setVascEntryFieldValue(v);
}
if (dis.getVascEntryFieldValue()==null) {
@ -163,15 +163,15 @@ public class VascSelectItemModelEntry implements VascSelectItemModel {
VascEntryField fieldClone = dis.clone();
fieldClone.getVascValidators().clear();
VascEntryFieldValue v = currentEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue(fieldClone);
VascEntryFieldValue v = currentEntry.getVascFrontendController().getVascEntryState().getVascBackend().provideVascEntryFieldValue();
dis.setVascEntryFieldValue(v);
}
// execute
for (Object o:back.execute(state)) {
Object keyId = key.getVascEntryFieldValue().getValue(key, o);
String nameId = dis.getVascEntryFieldValue().getDisplayValue(dis, o);
Object 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);

View file

@ -17,10 +17,11 @@
parentClass="net.forwardfire.vasc.core.VascEntryLocal" childClass="net.forwardfire.vasc.core.VascEntryLinkLocal"
addMethod="addVascEntryLink" getMethod="getVascEntryLinksLocal"
/>
<!--
<eld:classBindingHandler id="VascEntryLocal-VascBackendFilter"
parentClass="net.forwardfire.vasc.core.VascEntryLocal" childClass="net.forwardfire.vasc.backend.VascBackendFilter"
addMethod="addVascBackendFilter" getMethod="getVascBackendFilters"
/>
/> -->
<eld:classBindingHandler id="VascEntryLocal-GlobalVascAction"
parentClass="net.forwardfire.vasc.core.VascEntryLocal" childClass="net.forwardfire.vasc.core.actions.GlobalVascAction"
addMethod="addGlobalAction" getMethod="getGlobalActionsLocal"
@ -139,11 +140,5 @@
<eld:element tag="stringRegexValidator" objectClass="net.forwardfire.vasc.validators.VascStringRegexValidator"/>
<eld:element tag="stringZipCodeValidator" objectClass="net.forwardfire.vasc.validators.VascStringZipCodeValidator"/>
<eld:element tag="virtualVascBackend" objectClass="net.forwardfire.vasc.backend.VirtualVascBackend">
<eld:configurator id="virtualVascBackend-VascBackendElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascBackendElementConfigurator" configAction="true"/>
<eld:elementParent tag="root" uri="http://vasc.forwardfire.net/xml/ns/vasc-root"/>
</eld:element>
</eld:namespace>
</root:module>