empire-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From inem...@apache.org
Subject [1/2] empire-db git commit: 1. Removed some trivial classes (EmpireStringValueReader etc.) 2. Renamed classes to match both Empire and Sring naming conventions EmpireDataReader => DbRecordMapper EmpireRowCallbackHandler => DbRecordCallbackHandler E
Date Thu, 22 Oct 2015 06:55:35 GMT
Repository: empire-db
Updated Branches:
  refs/heads/master 0bcef5a81 -> 2945b5df2


1. Removed some trivial classes (EmpireStringValueReader etc.)
2. Renamed classes to match both Empire and Sring naming conventions
		EmpireDataReader => DbRecordMapper
		EmpireRowCallbackHandler => DbRecordCallbackHandler
		EmpireReaderExtractor => DbReaderExtractor
		EmpireRecordWriter => DbRecordWriter
3. New methods in EmpireTemplate (getBeanList etc.)
4. Example updates

Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo
Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/d4079f57
Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/d4079f57
Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/d4079f57

Branch: refs/heads/master
Commit: d4079f5750a0bfc4b8f930b6a6ce186b07c6b63a
Parents: 06bd6f1
Author: inemeth <inemeth@apache.org>
Authored: Thu Oct 22 08:39:25 2015 +0200
Committer: inemeth <inemeth@apache.org>
Committed: Thu Oct 22 08:39:25 2015 +0200

----------------------------------------------------------------------
 .../apache/empire/spring/DbReaderExtractor.java |  27 +++
 .../empire/spring/DbRecordCallbackHandler.java  |  27 +++
 .../apache/empire/spring/DbRecordMapper.java    |  34 ++++
 .../apache/empire/spring/DbRecordWriter.java    |  28 ++++
 .../apache/empire/spring/EmpireDataReader.java  |  27 ---
 .../empire/spring/EmpireIntegerValueReader.java |  39 -----
 .../empire/spring/EmpireLongValueReader.java    |  39 -----
 .../empire/spring/EmpireReaderExtractor.java    |  27 ---
 .../empire/spring/EmpireRecordWriter.java       |  28 ----
 .../empire/spring/EmpireRowCallbackHandler.java |  27 ---
 .../empire/spring/EmpireStringValueReader.java  |  37 -----
 .../apache/empire/spring/EmpireTemplate.java    | 163 ++++++++++++++-----
 .../apache/empire/spring/EmpireValueReader.java |  37 -----
 .../empire/spring/example1/EmpireAppImpl.java   |  14 +-
 .../empire/spring/example2/Department.java      |  11 +-
 .../empire/spring/example2/EmployeeDao.java     |   2 +
 .../empire/spring/example2/EmployeeDaoImpl.java |  23 ++-
 .../spring/example2/EmployeeSpringApp.java      |   9 +-
 18 files changed, 283 insertions(+), 316 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/DbReaderExtractor.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/DbReaderExtractor.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/DbReaderExtractor.java
new file mode 100644
index 0000000..5d8cf8c
--- /dev/null
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/DbReaderExtractor.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.spring;
+
+import org.apache.empire.db.DBReader;
+
+public interface DbReaderExtractor<K> {
+
+	K process(DBReader reader);
+
+}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordCallbackHandler.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordCallbackHandler.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordCallbackHandler.java
new file mode 100644
index 0000000..6fcd15a
--- /dev/null
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordCallbackHandler.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.spring;
+
+import org.apache.empire.db.DBRecordData;
+
+public interface DbRecordCallbackHandler {
+
+	void processRow(DBRecordData record);
+
+}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordMapper.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordMapper.java b/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordMapper.java
new file mode 100644
index 0000000..226f3b4
--- /dev/null
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordMapper.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.spring;
+
+import org.apache.empire.db.DBRecordData;
+
+/**
+ * Interface used by {@link EmpireTemplate} for mapping a
+ * {@link org.apache.empire.db.DBRecordData}. 
+ * 
+ */
+
+
+public interface DbRecordMapper<K> {
+
+	public abstract K read(DBRecordData record);
+	
+}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordWriter.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordWriter.java b/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordWriter.java
new file mode 100644
index 0000000..2bc9a39
--- /dev/null
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/DbRecordWriter.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.spring;
+
+import org.apache.empire.db.DBRecord;
+
+
+public interface DbRecordWriter<K> {
+
+	public abstract void write(DBRecord record, K entity);
+	
+}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireDataReader.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireDataReader.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireDataReader.java
deleted file mode 100644
index b0b2f76..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireDataReader.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBRecordData;
-
-public interface EmpireDataReader<K> {
-
-	public abstract K read(DBRecordData record);
-	
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireIntegerValueReader.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireIntegerValueReader.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireIntegerValueReader.java
deleted file mode 100644
index f707a8c..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireIntegerValueReader.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBRecordData;
-
-public class EmpireIntegerValueReader implements EmpireDataReader<Integer> {
-
-	DBColumnExpr column;
-	Integer defaultValue = null;
-
-	public EmpireIntegerValueReader(DBColumnExpr column, Integer defaultValue) {
-		super();
-		this.column = column;
-		this.defaultValue = defaultValue;
-	}
-
-	public Integer read(DBRecordData record) {
-		return record.isNull(column) ? defaultValue : record.getInt(column);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireLongValueReader.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireLongValueReader.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireLongValueReader.java
deleted file mode 100644
index 7e68f22..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireLongValueReader.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBRecordData;
-
-public class EmpireLongValueReader implements EmpireDataReader<Long> {
-
-	DBColumnExpr column;
-	private Long defaultValue;
-
-	public EmpireLongValueReader(DBColumnExpr column, Long defaultValue) {
-		super();
-		this.column = column;
-		this.defaultValue = defaultValue;
-	}
-
-	public Long read(DBRecordData record) {
-		return record.isNull(column) ? defaultValue : record.getLong(column);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireReaderExtractor.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireReaderExtractor.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireReaderExtractor.java
deleted file mode 100644
index 81255d7..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireReaderExtractor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBReader;
-
-public interface EmpireReaderExtractor<K> {
-
-	K process(DBReader reader);
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRecordWriter.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRecordWriter.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRecordWriter.java
deleted file mode 100644
index 2ecea4d..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRecordWriter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBRecord;
-
-
-public interface EmpireRecordWriter<K> {
-
-	public abstract void write(DBRecord record, K entity);
-	
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRowCallbackHandler.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRowCallbackHandler.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRowCallbackHandler.java
deleted file mode 100644
index 9a24bce..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireRowCallbackHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBRecordData;
-
-public interface EmpireRowCallbackHandler {
-
-	void processRow(DBRecordData record);
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireStringValueReader.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireStringValueReader.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireStringValueReader.java
deleted file mode 100644
index 9f16a6c..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireStringValueReader.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBRecordData;
-
-public class EmpireStringValueReader implements EmpireDataReader<String> {
-
-	DBColumnExpr column;
-
-	public EmpireStringValueReader(DBColumnExpr column) {
-		super();
-		this.column = column;
-	}
-
-	public String read(DBRecordData record) {
-		return record.getString(column);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireTemplate.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireTemplate.java b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireTemplate.java
index 9202bbc..558ae84 100644
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireTemplate.java
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireTemplate.java
@@ -21,6 +21,7 @@ package org.apache.empire.spring;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import javax.sql.DataSource;
@@ -29,6 +30,7 @@ import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBReader;
 import org.apache.empire.db.DBRecord;
+import org.apache.empire.db.DBRecordData;
 import org.apache.empire.db.DBRowSet;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.exceptions.RecordNotFoundException;
@@ -52,7 +54,8 @@ public class EmpireTemplate implements InitializingBean {
 	}
 
 	public final void setDataSource(DataSource dataSource) {
-		if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
+		if (this.jdbcTemplate == null
+				|| dataSource != this.jdbcTemplate.getDataSource()) {
 			this.jdbcTemplate = new JdbcTemplate(dataSource);
 			this.jdbcTemplate.afterPropertiesSet();
 		}
@@ -60,50 +63,93 @@ public class EmpireTemplate implements InitializingBean {
 
 	public void afterPropertiesSet() throws Exception {
 		if (getJdbcTemplate() == null) {
-			throw new IllegalArgumentException("Property 'jdbcTemplate' is required");
+			throw new IllegalArgumentException(
+					"Property 'jdbcTemplate' is required");
 		}
 
 	}
 
-	public <K> List<K> query(final DBCommand cmd, final EmpireDataReader<K>
dataReader) {
-		return query(cmd, new EmpireDataReaderExtractor<K>(dataReader));
+	public <K> List<K> query(final DBCommand cmd,
+			final DbRecordMapper<K> dataReader) {
+		return query(cmd, new DbRecordMapperExtractor<K>(dataReader));
 
 	}
 
 	public List<Object> queryForList(final DBCommand cmd, final DBColumnExpr col) {
-		return query(cmd, new EmpireValueReader(col));
+		class SingleValueMapper implements DbRecordMapper<Object> {
+
+			@Override
+			public Object read(DBRecordData record) {
+				return record.getValue(col);
+			}
+
+		}
+		return query(cmd, new SingleValueMapper());
 
 	}
 
-	public Long queryForLong(final DBCommand cmd, final DBColumnExpr col, Long defaultValue)
{
-		return DataAccessUtils.uniqueResult(queryForLongList(cmd, col, defaultValue));
+	public Long queryForLong(final DBCommand cmd, final DBColumnExpr col,
+			Long defaultValue) {
+		return DataAccessUtils.uniqueResult(queryForLongList(cmd, col,
+				defaultValue));
 	}
 
-	public List<Long> queryForLongList(final DBCommand cmd, final DBColumnExpr col, final
Long defaultValue) {
-		return query(cmd, new EmpireLongValueReader(col, defaultValue));
+	public List<Long> queryForLongList(final DBCommand cmd,
+			final DBColumnExpr col, final Long defaultValue) {
+		class SingleLongMapper implements DbRecordMapper<Long> {
+
+			@Override
+			public Long read(DBRecordData record) {
+				return record.isNull(col) ? defaultValue : record.getLong(col);
+			}
+
+		}
+		return query(cmd, new SingleLongMapper());
 
 	}
 
-	public Integer queryForInteger(final DBCommand cmd, final DBColumnExpr col, Integer defaultValue)
{
-		return DataAccessUtils.uniqueResult(queryForIntegerList(cmd, col, defaultValue));
+	public Integer queryForInteger(final DBCommand cmd, final DBColumnExpr col,
+			Integer defaultValue) {
+		return DataAccessUtils.uniqueResult(queryForIntegerList(cmd, col,
+				defaultValue));
 	}
 
-	public List<Integer> queryForIntegerList(final DBCommand cmd, final DBColumnExpr col,
final Integer defaultValue) {
-		return query(cmd, new EmpireIntegerValueReader(col, defaultValue));
+	public List<Integer> queryForIntegerList(final DBCommand cmd,
+			final DBColumnExpr col, final Integer defaultValue) {
+		class SingleIntegerMapper implements DbRecordMapper<Integer> {
+
+			@Override
+			public Integer read(DBRecordData record) {
+				return record.isNull(col) ? defaultValue : record.getInt(col);
+			}
+
+		}
+		return query(cmd, new SingleIntegerMapper());
 	}
 
 	public String queryForString(final DBCommand cmd, final DBColumnExpr col) {
 		return DataAccessUtils.uniqueResult(queryForStringList(cmd, col));
 	}
 
-	public List<String> queryForStringList(final DBCommand cmd, final DBColumnExpr col)
{
-		return query(cmd, new EmpireStringValueReader(col));
+	public List<String> queryForStringList(final DBCommand cmd,
+			final DBColumnExpr col) {
+		class SingleStringMapper implements DbRecordMapper<String> {
+
+			@Override
+			public String read(DBRecordData record) {
+				return record.getString(col);
+			}
+
+		}
+		return query(cmd, new SingleStringMapper());
 	}
 
-	public <K> K query(final DBCommand cmd, final EmpireReaderExtractor<K> readerHandler)
{
+	public <K> K query(final DBCommand cmd,
+			final DbReaderExtractor<K> readerHandler) {
 
 		class QueryCallback implements ConnectionCallback<K> {
-			public K doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public K doInConnection(Connection connection) throws SQLException,
+					DataAccessException {
 				return query(connection, cmd, readerHandler);
 			}
 		}
@@ -111,11 +157,13 @@ public class EmpireTemplate implements InitializingBean {
 
 	}
 
-	public void query(final DBCommand cmd, final EmpireRowCallbackHandler rowCallbackHandler)
{
-		query(cmd, new EmpireRowCallbackHandlerExtractor(rowCallbackHandler));
+	public void query(final DBCommand cmd,
+			final DbRecordCallbackHandler rowCallbackHandler) {
+		query(cmd, new DbRecordCallbackHandlerExtractor(rowCallbackHandler));
 	}
 
-	public <K> K queryForObject(final DBCommand cmd, final EmpireDataReader<K> dataReader)
{
+	public <K> K queryForObject(final DBCommand cmd,
+			final DbRecordMapper<K> dataReader) {
 
 		return DataAccessUtils.uniqueResult(query(cmd, dataReader));
 
@@ -124,7 +172,8 @@ public class EmpireTemplate implements InitializingBean {
 	public void deleteRecord(final DBRecord record) {
 
 		class DeleteRecordCallback implements ConnectionCallback<Object> {
-			public Object doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public Object doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				record.delete(connection);
 				return null;
 			}
@@ -140,7 +189,8 @@ public class EmpireTemplate implements InitializingBean {
 	public void deleteRecord(final DBTable table, final Object[] keys) {
 
 		class DeleteRecordCallback implements ConnectionCallback<Object> {
-			public Object doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public Object doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				DBRecord record = new EmpireRecord();
 				record.read(table, keys, connection);
 				record.delete(connection);
@@ -154,7 +204,8 @@ public class EmpireTemplate implements InitializingBean {
 	public DBRecord updateRecord(final DBRecord record) {
 
 		class UpdateRecordCallback implements ConnectionCallback<DBRecord> {
-			public DBRecord doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public DBRecord doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				record.update(connection);
 				return record;
 			}
@@ -167,7 +218,8 @@ public class EmpireTemplate implements InitializingBean {
 	public int executeUpdate(final DBCommand cmd) {
 
 		class UpdateRecordCallback implements ConnectionCallback<Integer> {
-			public Integer doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public Integer doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				return cmd.getDatabase().executeUpdate(cmd, connection);
 			}
 		}
@@ -179,7 +231,8 @@ public class EmpireTemplate implements InitializingBean {
 	public int executeDelete(final DBTable table, final DBCommand cmd) {
 
 		class DeleteRecordCallback implements ConnectionCallback<Integer> {
-			public Integer doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public Integer doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				return cmd.getDatabase().executeDelete(table, cmd, connection);
 			}
 		}
@@ -191,7 +244,8 @@ public class EmpireTemplate implements InitializingBean {
 	public int executeInsert(final DBCommand cmd) {
 
 		class InsertRecordCallback implements ConnectionCallback<Integer> {
-			public Integer doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public Integer doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				return cmd.getDatabase().executeInsert(cmd, connection);
 			}
 		}
@@ -213,7 +267,8 @@ public class EmpireTemplate implements InitializingBean {
 	public DBRecord openRecord(final DBRowSet table, final Object[] keys) {
 
 		class ReadRecordCallback implements ConnectionCallback<DBRecord> {
-			public DBRecord doInConnection(Connection connection) throws SQLException, DataAccessException
{
+			public DBRecord doInConnection(Connection connection)
+					throws SQLException, DataAccessException {
 				DBRecord record = new EmpireRecord();
 				try {
 					record.read(table, keys, connection);
@@ -228,11 +283,40 @@ public class EmpireTemplate implements InitializingBean {
 
 	}
 
+	public <C extends Collection<T>, T> C queryForBeanList(final DBCommand cmd,
+			final C c, final Class<T> t, final int maxCount) {
+
+		class GetBeanListCallback implements DbReaderExtractor<C> {
+
+			@Override
+			public C process(DBReader reader) {
+				return reader.getBeanList(c, t, maxCount);
+			}
+		}
+
+		return query(cmd, new GetBeanListCallback());
+
+	}
+
+	public <T> List<T> queryForBeanList(DBCommand cmd, Class<T> t, int maxItems)
{
+		return queryForBeanList(cmd, new ArrayList<T>(), t, maxItems);
+	}
+
+	public <T> List<T> queryForBeanList(DBCommand cmd, Class<T> t) {
+		return queryForBeanList(cmd, t, -1);
+	}
+	
+	public <T> T queryForBean(DBCommand cmd, Class<T> t) {
+		return DataAccessUtils.uniqueResult(queryForBeanList(cmd, t, -1));
+	}
+
+
 	public <K> K execute(ConnectionCallback<K> connectionCallback) {
 		return getJdbcTemplate().execute(connectionCallback);
 	}
 
-	private <K> K query(Connection connection, DBCommand command, EmpireReaderExtractor<K>
callback) {
+	private <K> K query(Connection connection, DBCommand command,
+			DbReaderExtractor<K> callback) {
 		DBReader reader = newDBReader();
 		try {
 			reader.open(command, connection);
@@ -247,17 +331,19 @@ public class EmpireTemplate implements InitializingBean {
 	private DBReader newDBReader() {
 		return new EmpireReader();
 	}
-	
-	public static class EmpireRowCallbackHandlerExtractor implements EmpireReaderExtractor<Object>
{
 
-		private final EmpireRowCallbackHandler rowCallbackHandler;
+	private static class DbRecordCallbackHandlerExtractor implements
+			DbReaderExtractor<Object> {
 
-		public EmpireRowCallbackHandlerExtractor(EmpireRowCallbackHandler rowCallbackHandler) {
+		private final DbRecordCallbackHandler rowCallbackHandler;
+
+		public DbRecordCallbackHandlerExtractor(
+				DbRecordCallbackHandler rowCallbackHandler) {
 			Assert.notNull(rowCallbackHandler, "RowCallbackHandler is required");
 			this.rowCallbackHandler = rowCallbackHandler;
 		}
 
-//		@Override
+		// @Override
 		public Object process(DBReader reader) {
 			try {
 				while (reader.moveNext()) {
@@ -268,19 +354,20 @@ public class EmpireTemplate implements InitializingBean {
 				reader.close();
 			}
 		}
-		
+
 	}
 
-	public static class EmpireDataReaderExtractor<K> implements EmpireReaderExtractor<List<K>>
{
+	private static class DbRecordMapperExtractor<K> implements
+			DbReaderExtractor<List<K>> {
 
-		private final EmpireDataReader<K> dataReader;
+		private final DbRecordMapper<K> dataReader;
 
-		public EmpireDataReaderExtractor(EmpireDataReader<K> rowMapper) {
+		public DbRecordMapperExtractor(DbRecordMapper<K> rowMapper) {
 			Assert.notNull(rowMapper, "DataReader is required");
 			this.dataReader = rowMapper;
 		}
 
-//		@Override
+		// @Override
 		public List<K> process(DBReader reader) {
 			try {
 				List<K> results = new ArrayList<K>();

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireValueReader.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireValueReader.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireValueReader.java
deleted file mode 100644
index 95e1b9b..0000000
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/EmpireValueReader.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.spring;
-
-import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBRecordData;
-
-public class EmpireValueReader implements EmpireDataReader<Object> {
-
-	DBColumnExpr column;
-
-	public EmpireValueReader(DBColumnExpr column) {
-		super();
-		this.column = column;
-	}
-
-	public Object read(DBRecordData record) {
-		return record.getValue(column);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/example1/EmpireAppImpl.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/example1/EmpireAppImpl.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/example1/EmpireAppImpl.java
index 41fcd52..3c152ff 100644
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/example1/EmpireAppImpl.java
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/example1/EmpireAppImpl.java
@@ -39,10 +39,10 @@ import org.apache.empire.db.h2.DBDatabaseDriverH2;
 import org.apache.empire.db.hsql.DBDatabaseDriverHSql;
 import org.apache.empire.db.postgresql.DBDatabaseDriverPostgreSQL;
 import org.apache.empire.spring.EmpireDaoSupport;
-import org.apache.empire.spring.EmpireDataReader;
-import org.apache.empire.spring.EmpireReaderExtractor;
+import org.apache.empire.spring.DbRecordMapper;
+import org.apache.empire.spring.DbReaderExtractor;
 import org.apache.empire.spring.EmpireRecord;
-import org.apache.empire.spring.EmpireRowCallbackHandler;
+import org.apache.empire.spring.DbRecordCallbackHandler;
 import org.apache.empire.xml.XMLWriter;
 import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.ConnectionCallback;
@@ -174,7 +174,7 @@ public class EmpireAppImpl extends EmpireDaoSupport implements EmpireApp
{
 			switch (type) {
 			case BeanList:
 				// Text-Output by iterating through all records.
-				EmpireRowCallbackHandler readerImpl = new EmpireRowCallbackHandler() {
+				DbRecordCallbackHandler readerImpl = new DbRecordCallbackHandler() {
 
 					public void processRow(DBRecordData reader) {
 						System.out.println(reader.getString(EMP.EMPLOYEE_ID)
@@ -193,7 +193,7 @@ public class EmpireAppImpl extends EmpireDaoSupport implements EmpireApp
{
 			case Reader:
 				// Text-Output using a list of Java Beans supplied by the
 				// DBReader
-				EmpireReaderExtractor<List<SampleBean>> beanListImpl = new EmpireReaderExtractor<List<SampleBean>>()
{
+				DbReaderExtractor<List<SampleBean>> beanListImpl = new DbReaderExtractor<List<SampleBean>>()
{
 
 					public List<SampleBean> process(DBReader reader) {
 						return reader.getBeanList(SampleBean.class);
@@ -254,7 +254,7 @@ public class EmpireAppImpl extends EmpireDaoSupport implements EmpireApp
{
 	}
 
 	public static class XmlDocumentExtractor implements
-			EmpireReaderExtractor<Document> {
+			DbReaderExtractor<Document> {
 
 		public Document process(DBReader reader) {
 			return reader.getXmlDocument();
@@ -263,7 +263,7 @@ public class EmpireAppImpl extends EmpireDaoSupport implements EmpireApp
{
 	}
 
 	public static class RowToObjectMapDataMapper implements
-			EmpireDataReader<Map<Object, Object>> {
+			DbRecordMapper<Map<Object, Object>> {
 
 		DBTable table;
 

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/example2/Department.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/Department.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/Department.java
index e56953c..08d8943 100644
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/Department.java
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/Department.java
@@ -59,7 +59,15 @@ public class Department {
 
 	@Override
 	public String toString() {
-		return this.name;
+		StringBuffer buf = new StringBuffer();
+		buf.append(departmentId);
+		buf.append("\t");
+		buf.append(name);
+		buf.append(" ");
+		buf.append(businessUnit);
+		buf.append("\t");
+		buf.append(head);
+		return buf.toString();
 	}
 	
 	@Override
@@ -87,4 +95,5 @@ public class Department {
 		return 1;
 	}
 
+	
 }

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDao.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDao.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDao.java
index ad02b46..b2dd39f 100644
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDao.java
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDao.java
@@ -23,6 +23,8 @@ import java.util.List;
 public interface EmployeeDao {
 
 	public List<Employee> getEmployees();
+	
+	public List<Department> getDepartments();
 
 	public Integer createEmployee(Employee employee);
 

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDaoImpl.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDaoImpl.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDaoImpl.java
index 7a384f9..5d1fe50 100644
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDaoImpl.java
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeDaoImpl.java
@@ -27,9 +27,9 @@ import org.apache.empire.db.DBJoinType;
 import org.apache.empire.db.DBRecord;
 import org.apache.empire.db.DBRecordData;
 import org.apache.empire.spring.EmpireDaoSupport;
-import org.apache.empire.spring.EmpireDataReader;
+import org.apache.empire.spring.DbRecordMapper;
 import org.apache.empire.spring.EmpireRecord;
-import org.apache.empire.spring.EmpireRecordWriter;
+import org.apache.empire.spring.DbRecordWriter;
 import org.apache.empire.spring.example1.SampleDB;
 import org.apache.empire.spring.example1.SampleDB.Departments;
 import org.apache.empire.spring.example1.SampleDB.Employees;
@@ -81,16 +81,23 @@ public class EmployeeDaoImpl extends EmpireDaoSupport implements EmployeeDao
{
 	public Department openDepartment(Integer id) {
 		DBCommand cmd = createDepartmentSelectCommand();
 		cmd.where(DEPARTMENTS.DEPARTMENT_ID.is(id));
-		return getEmpireTemplate().queryForObject(cmd, new DepartmentMapper());
+		return getEmpireTemplate().queryForBean(cmd, Department.class);
 	}
 
 	@Transactional(readOnly = true)
 	public Department findDepartment(String name) {
 		DBCommand cmd = createDepartmentSelectCommand();
 		cmd.where(DEPARTMENTS.NAME.is(name));
-		return getEmpireTemplate().queryForObject(cmd, new DepartmentMapper());
+		return getEmpireTemplate().queryForBean(cmd, Department.class);
 	}
 
+	@Transactional(readOnly = true)
+	public List<Department> getDepartments() {
+		DBCommand cmd = createEmployeeSelectCommand();
+		return getEmpireTemplate().queryForBeanList(cmd, Department.class);
+	}
+
+	
 	@Transactional
 	public void renameDepartment(Integer id, String name) {
 		DBCommand cmd = getDatabase().createCommand();
@@ -137,7 +144,7 @@ public class EmployeeDaoImpl extends EmpireDaoSupport implements EmployeeDao
{
 		getEmpireTemplate().updateRecord(record);
 	}
 
-	private class EmployeeMapper implements EmpireDataReader<Employee> {
+	private class EmployeeMapper implements DbRecordMapper<Employee> {
 
 		DepartmentMapper departmentMapper = new DepartmentMapper();
 
@@ -159,7 +166,7 @@ public class EmployeeDaoImpl extends EmpireDaoSupport implements EmployeeDao
{
 
 	}
 
-	private class EmployeeWriter implements EmpireRecordWriter<Employee> {
+	private class EmployeeWriter implements DbRecordWriter<Employee> {
 
         @Override
 		public void write(DBRecord record, Employee entity) {
@@ -177,7 +184,7 @@ public class EmployeeDaoImpl extends EmpireDaoSupport implements EmployeeDao
{
 
 	}
 
-	private class DepartmentMapper implements EmpireDataReader<Department> {
+	private class DepartmentMapper implements DbRecordMapper<Department> {
 
 		// reader cache, in case of joined resultset the same object is returned
 
@@ -206,7 +213,7 @@ public class EmployeeDaoImpl extends EmpireDaoSupport implements EmployeeDao
{
 
 	}
 
-	private class DepartmentWriter implements EmpireRecordWriter<Department> {
+	private class DepartmentWriter implements DbRecordWriter<Department> {
 
 		@Override
         public void write(DBRecord record, Department entity) {

http://git-wip-us.apache.org/repos/asf/empire-db/blob/d4079f57/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeSpringApp.java
----------------------------------------------------------------------
diff --git a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeSpringApp.java
b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeSpringApp.java
index 90d964a..3b641a7 100644
--- a/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeSpringApp.java
+++ b/empire-db-spring/src/main/java/org/apache/empire/spring/example2/EmployeeSpringApp.java
@@ -134,7 +134,14 @@ public class EmployeeSpringApp {
 			System.out.println(employee);
 		}
         
-        
+        System.out.println("*** List departments ***");
+
+        List<Department> departments = employeeDao.getDepartments();
+        for (Iterator<Department> iterator = departments.iterator(); iterator.hasNext();)
{
+			Department department = iterator.next();
+			System.out.println(department);
+		}
+
     }
 
     private static void clearDatabase() {


Mime
View raw message