WIP: left over open files for long...
This commit is contained in:
parent
0a2398c5c1
commit
76aa74990e
165 changed files with 4299 additions and 3373 deletions
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* 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.jdbc;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackendLocal;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataKey;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascBackendAccessDataKey;
|
||||
|
||||
/**
|
||||
* AbstractJdbcVascBackend.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 5, 2008
|
||||
*/
|
||||
abstract public class AbstractJdbcVascBackend extends AbstractVascBackendLocal<HashMap<String,Serializable>> {
|
||||
|
||||
private JdbcConnectionProvider jdbcConnectionProvider = null;
|
||||
private final Map<String,Class<?>> keyMapType = new HashMap<String,Class<?>>(5);
|
||||
|
||||
abstract protected void startBackendJdbc();
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.AbstractVascBackendLocal#startBackendLocal()
|
||||
*/
|
||||
@Override
|
||||
protected final void startBackendLocal() {
|
||||
requireNonNull(getJdbcConnectionProvider(), "jdbcConnectionProvider is null.");
|
||||
requireNonEmpty(keyMapType.keySet(), "No primary keys defined.");
|
||||
startBackendJdbc();
|
||||
}
|
||||
|
||||
protected final void addKeyMapType(String field,Class<?> fieldType) {
|
||||
requireNonEmpty(field,"field has to have value");
|
||||
requireNonNull(fieldType,"field has to have value");
|
||||
keyMapType.put(field, fieldType);
|
||||
}
|
||||
|
||||
protected final Map<String,Class<?>> getKeyMapType() {
|
||||
return keyMapType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#createVascBackendAccessDataKey()
|
||||
*/
|
||||
@Override
|
||||
public final VascBackendAccessDataKey<HashMap<String, Serializable>> createVascBackendAccessDataKey() {
|
||||
return new HashMapVascBackendAccessDataKey(keyMapType);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the JdbcConnectionProvider
|
||||
*/
|
||||
public final JdbcConnectionProvider getJdbcConnectionProvider() {
|
||||
return jdbcConnectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param JdbcConnectionProvider the JdbcConnectionProvider to set
|
||||
*/
|
||||
public final void setJdbcConnectionProvider(JdbcConnectionProvider jdbcConnectionProvider) {
|
||||
this.jdbcConnectionProvider = jdbcConnectionProvider;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,169 +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.jdbc;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascEntryRecordCreator;
|
||||
|
||||
/**
|
||||
* JdbcVascBackend Simple jdbc vasc backend.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 5, 2008
|
||||
*/
|
||||
public class JdbcVascBackend extends AbstractVascBackend<HashMap<String,Object>> {
|
||||
|
||||
private JdbcConnectionProvider jdbcConnectionProvider = null;
|
||||
private String sqlList = null;
|
||||
//private String idColumn = null;
|
||||
//private String sqlDelete = null;
|
||||
//private String sqlUpdate = null;
|
||||
//private String sqlInsert = null;
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.AbstractVascBackend#isReadOnly()
|
||||
*/
|
||||
@Override
|
||||
public boolean isReadOnly() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the JdbcConnectionProvider
|
||||
*/
|
||||
public JdbcConnectionProvider getJdbcConnectionProvider() {
|
||||
return jdbcConnectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param JdbcConnectionProvider the JdbcConnectionProvider to set
|
||||
*/
|
||||
public void setJdbcConnectionProvider(JdbcConnectionProvider jdbcConnectionProvider) {
|
||||
this.jdbcConnectionProvider = jdbcConnectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
|
||||
*/
|
||||
@Override
|
||||
public VascBackendResult<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
JdbcConnectionProvider prov = getJdbcConnectionProvider();
|
||||
List<HashMap<String,Object>> result = new ArrayList<HashMap<String,Object>>(50);
|
||||
Connection connection = null;
|
||||
try {
|
||||
connection = prov.getJdbcConnection();
|
||||
Statement s = connection.createStatement();
|
||||
s.execute(getSqlList());
|
||||
ResultSet rs = s.getResultSet();
|
||||
int cols = rs.getMetaData().getColumnCount();
|
||||
while (rs.next()) {
|
||||
HashMap<String,Object> map = new HashMap<String,Object>(cols);
|
||||
for (int i=1;i<=cols;i++) {
|
||||
String columnName = rs.getMetaData().getColumnName(i);
|
||||
Object columnObject = rs.getObject(i);
|
||||
map.put(columnName, columnObject);
|
||||
}
|
||||
result.add(map);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new VascBackendException(e);
|
||||
} finally {
|
||||
if (connection!=null) {
|
||||
try {
|
||||
connection.close();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new DefaultVascBackendResult<HashMap<String,Object>>(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#merge(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public HashMap<String,Object> merge(HashMap<String,Object> object) throws VascBackendException {
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#persist(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void persist(HashMap<String,Object> object) throws VascBackendException {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#delete(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void delete(HashMap<String,Object> object) throws VascBackendException {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryFieldValue(net.forwardfire.vasc.core.VascEntryField)
|
||||
*/
|
||||
@Override
|
||||
public VascEntryFieldValue provideVascEntryFieldValue() {
|
||||
return new HashMapVascEntryFieldValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryRecordCreator(net.forwardfire.vasc.core.VascEntry)
|
||||
*/
|
||||
@Override
|
||||
public VascEntryRecordCreator provideVascEntryRecordCreator() {
|
||||
return new HashMapVascEntryRecordCreator();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the sqlList
|
||||
*/
|
||||
public String getSqlList() {
|
||||
return sqlList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sqlList the sqlList to set
|
||||
*/
|
||||
public void setSqlList(String sqlList) {
|
||||
this.sqlList = sqlList;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
/*
|
||||
* 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.jdbc;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascBackendAccessDataRecord;
|
||||
import net.forwardfire.vasc.backend.list.DefaultVascBackendListResult;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendList;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListResult;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
|
||||
|
||||
/**
|
||||
* JdbcVascBackend Simple jdbc vasc backend.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 5, 2008
|
||||
*/
|
||||
public class JdbcVascBackendList extends AbstractJdbcVascBackend implements VascBackendList<HashMap<String,Serializable>,HashMap<String,Serializable>> {
|
||||
|
||||
private final EnumSet<VascBackendListFeature> features = EnumSet.noneOf(VascBackendListFeature.class);
|
||||
private final List<String> rowActions = new ArrayList<String>();
|
||||
private String query = null;
|
||||
private String queryExtra = null;
|
||||
|
||||
@Override
|
||||
protected void startBackendJdbc() {
|
||||
requireNonEmpty(getQuery(), "query is empty.");
|
||||
if (queryExtra!=null && !queryExtra.isEmpty()) {
|
||||
features.add(VascBackendListFeature.DATA_EXTRA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VascBackendAccessDataRecord<HashMap<String, Serializable>, HashMap<String, Serializable>> createVascBackendAccessDataRecord() {
|
||||
return new HashMapVascBackendAccessDataRecord(getKeyMapType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumSet<VascBackendListFeature> getSupportedFeatures() {
|
||||
return features;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSupportedRowActions() {
|
||||
return rowActions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeRowAction(VascBackendListRequest request,List<HashMap<String, Serializable>> recordPKs, String actionName) throws VascBackendException {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendList#execute(VascBackendListRequest state)
|
||||
*/
|
||||
@Override
|
||||
public VascBackendListResult<HashMap<String,Serializable>> execute(VascBackendListRequest state) throws VascBackendException {
|
||||
JdbcConnectionProvider prov = getJdbcConnectionProvider();
|
||||
List<HashMap<String,Serializable>> result = new ArrayList<HashMap<String,Serializable>>(50);
|
||||
Connection connection = null;
|
||||
try {
|
||||
connection = prov.getJdbcConnection();
|
||||
Statement s = connection.createStatement();
|
||||
s.execute(getQuery());
|
||||
ResultSet rs = s.getResultSet();
|
||||
int cols = rs.getMetaData().getColumnCount();
|
||||
while (rs.next()) {
|
||||
HashMap<String,Serializable> map = new HashMap<String,Serializable>(cols);
|
||||
for (int i=1;i<=cols;i++) {
|
||||
String columnName = rs.getMetaData().getColumnName(i);
|
||||
Serializable columnObject = (Serializable) rs.getObject(i);
|
||||
map.put(columnName, columnObject);
|
||||
}
|
||||
result.add(map);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new VascBackendException(e);
|
||||
} finally {
|
||||
if (connection!=null) {
|
||||
try {
|
||||
connection.close();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return new DefaultVascBackendListResult<HashMap<String,Serializable>>(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the query
|
||||
*/
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param query the query to set
|
||||
*/
|
||||
public void setQuery(String query) {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the queryExtra
|
||||
*/
|
||||
public String getQueryExtra() {
|
||||
return queryExtra;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param queryExtra the queryExtra to set
|
||||
*/
|
||||
public void setQueryExtra(String queryExtra) {
|
||||
this.queryExtra = queryExtra;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* 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.jdbc;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascBackendAccessDataRecord;
|
||||
import net.forwardfire.vasc.backend.list.DefaultVascBackendListResult;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendList;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListResult;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
|
||||
import net.forwardfire.vasc.backend.select.VascBackendSelect;
|
||||
import net.forwardfire.vasc.backend.select.VascBackendSelectItem;
|
||||
|
||||
/**
|
||||
* JdbcVascBackend Simple jdbc vasc backend.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 5, 2008
|
||||
*/
|
||||
public class JdbcVascBackendSelect extends AbstractJdbcVascBackend implements VascBackendSelect<HashMap<String,Serializable>> {
|
||||
|
||||
private String query = null;
|
||||
|
||||
@Override
|
||||
protected void startBackendJdbc() {
|
||||
requireNonEmpty(getQuery(), "query is empty.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VascBackendSelectItem<HashMap<String, Serializable>>> execute() throws VascBackendException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public VascBackendListResult<HashMap<String,Serializable>> execute(VascBackendListRequest state) throws VascBackendException {
|
||||
JdbcConnectionProvider prov = getJdbcConnectionProvider();
|
||||
List<HashMap<String,Serializable>> result = new ArrayList<HashMap<String,Serializable>>(50);
|
||||
Connection connection = null;
|
||||
try {
|
||||
connection = prov.getJdbcConnection();
|
||||
Statement s = connection.createStatement();
|
||||
s.execute(getQuery());
|
||||
ResultSet rs = s.getResultSet();
|
||||
int cols = rs.getMetaData().getColumnCount();
|
||||
while (rs.next()) {
|
||||
HashMap<String,Serializable> map = new HashMap<String,Serializable>(cols);
|
||||
for (int i=1;i<=cols;i++) {
|
||||
String columnName = rs.getMetaData().getColumnName(i);
|
||||
Serializable columnObject = (Serializable) rs.getObject(i);
|
||||
map.put(columnName, columnObject);
|
||||
}
|
||||
result.add(map);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new VascBackendException(e);
|
||||
} finally {
|
||||
if (connection!=null) {
|
||||
try {
|
||||
connection.close();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return new DefaultVascBackendListResult<HashMap<String,Serializable>>(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the query
|
||||
*/
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param query the query to set
|
||||
*/
|
||||
public void setQuery(String query) {
|
||||
this.query = query;
|
||||
}
|
||||
}
|
||||
|
|
@ -20,25 +20,26 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.backend.jdbc;
|
||||
package net.forwardfire.vasc.backend.jdbc.xpql;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.data.HashMapVascEntryRecordCreator;
|
||||
import net.forwardfire.vasc.backend.VascBackendAccessDataRecord;
|
||||
import net.forwardfire.vasc.backend.jdbc.AbstractJdbcVascBackend;
|
||||
import net.forwardfire.vasc.backend.list.DefaultVascBackendListResult;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendList;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListFeature;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListResult;
|
||||
import net.forwardfire.vasc.backend.list.VascBackendListRequest;
|
||||
import net.forwardfire.vasc.xpql.query.QueryParameterValue;
|
||||
|
||||
/**
|
||||
|
|
@ -47,53 +48,46 @@ import net.forwardfire.vasc.xpql.query.QueryParameterValue;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 5, 2008
|
||||
*/
|
||||
public class JdbcVascBackendXpql extends AbstractVascBackend<HashMap<String,Object>> {
|
||||
public class JdbcVascBackendXpqlList extends AbstractJdbcVascBackend implements VascBackendList<HashMap<String,Serializable>,HashMap<String,Serializable>> {
|
||||
|
||||
private JdbcConnectionProvider jdbcConnectionProvider = null;
|
||||
|
||||
private final EnumSet<VascBackendListFeature> features = EnumSet.noneOf(VascBackendListFeature.class);
|
||||
private final List<String> rowActions = new ArrayList<String>();
|
||||
private net.forwardfire.vasc.xpql.query.Query query = null;
|
||||
private net.forwardfire.vasc.xpql.query.Query queryExtra = null;
|
||||
|
||||
@Override
|
||||
protected void startBackendJdbc() {
|
||||
requireNonNull(getQuery(), "query is null.");
|
||||
if (queryExtra!=null) {
|
||||
features.add(VascBackendListFeature.DATA_EXTRA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VascBackendAccessDataRecord<HashMap<String, Serializable>, HashMap<String, Serializable>> createVascBackendAccessDataRecord() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumSet<VascBackendListFeature> getSupportedFeatures() {
|
||||
return features;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSupportedRowActions() {
|
||||
return rowActions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeRowAction(VascBackendListRequest request,List<HashMap<String, Serializable>> recordPKs, String actionName) throws VascBackendException {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.AbstractVascBackend#isReadOnly()
|
||||
* @see net.forwardfire.vasc.backend.crud.VascBackendCrud#execute(VascBackendListRequest state)
|
||||
*/
|
||||
@Override
|
||||
public boolean isReadOnly() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the JdbcConnectionProvider
|
||||
*/
|
||||
public JdbcConnectionProvider getJdbcConnectionProvider() {
|
||||
return jdbcConnectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param JdbcConnectionProvider the JdbcConnectionProvider to set
|
||||
*/
|
||||
public void setJdbcConnectionProvider(JdbcConnectionProvider jdbcConnectionProvider) {
|
||||
this.jdbcConnectionProvider = jdbcConnectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the query
|
||||
*/
|
||||
public net.forwardfire.vasc.xpql.query.Query getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param query the query to set
|
||||
*/
|
||||
public void setQuery(net.forwardfire.vasc.xpql.query.Query query) {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
|
||||
*/
|
||||
@Override
|
||||
public VascBackendResult<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendListResult<HashMap<String,Serializable>> execute(VascBackendListRequest state) throws VascBackendException {
|
||||
// Copy parameters
|
||||
for (String key:state.getDataParameterKeys()) {
|
||||
Object value = state.getDataParameter(key);
|
||||
|
|
@ -113,17 +107,17 @@ public class JdbcVascBackendXpql extends AbstractVascBackend<HashMap<String,Obje
|
|||
q.execute();
|
||||
ResultSet rs = q.getResultSet();
|
||||
int cols = rs.getMetaData().getColumnCount();
|
||||
List<HashMap<String,Object>> result = new ArrayList<HashMap<String,Object>>(50);
|
||||
List<HashMap<String,Serializable>> result = new ArrayList<HashMap<String,Serializable>>(50);
|
||||
while (rs.next()) {
|
||||
HashMap<String,Object> map = new HashMap<String,Object>(cols);
|
||||
HashMap<String,Serializable> map = new HashMap<String,Serializable>(cols);
|
||||
for (int i=1;i<=cols;i++) {
|
||||
String columnName = rs.getMetaData().getColumnName(i);
|
||||
Object columnObject = rs.getObject(i);
|
||||
Serializable columnObject = (Serializable) rs.getObject(i);
|
||||
map.put(columnName, columnObject);
|
||||
}
|
||||
result.add(map);
|
||||
}
|
||||
return new DefaultVascBackendResult<HashMap<String,Object>>(result);
|
||||
return new DefaultVascBackendListResult<HashMap<String,Serializable>>(result);
|
||||
} catch (SQLException e) {
|
||||
throw new VascBackendException(e);
|
||||
} finally {
|
||||
|
|
@ -135,42 +129,18 @@ public class JdbcVascBackendXpql extends AbstractVascBackend<HashMap<String,Obje
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#merge(java.lang.Object)
|
||||
* @return the query
|
||||
*/
|
||||
@Override
|
||||
public HashMap<String,Object> merge(HashMap<String,Object> object) throws VascBackendException {
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#persist(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void persist(HashMap<String,Object> object) throws VascBackendException {
|
||||
public net.forwardfire.vasc.xpql.query.Query getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#delete(java.lang.Object)
|
||||
* @param query the query to set
|
||||
*/
|
||||
@Override
|
||||
public void delete(HashMap<String,Object> object) throws VascBackendException {
|
||||
public void setQuery(net.forwardfire.vasc.xpql.query.Query query) {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryFieldValue()
|
||||
*/
|
||||
@Override
|
||||
public VascEntryFieldValue provideVascEntryFieldValue() {
|
||||
return new HashMapVascEntryFieldValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#provideVascEntryRecordCreator()
|
||||
*/
|
||||
@Override
|
||||
public VascEntryRecordCreator provideVascEntryRecordCreator() {
|
||||
return new HashMapVascEntryRecordCreator();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author willemc
|
||||
*
|
||||
*/
|
||||
package net.forwardfire.vasc.backend.jdbc.xpql;
|
||||
Loading…
Add table
Add a link
Reference in a new issue