You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by gm...@apache.org on 2010/12/03 16:28:24 UTC
svn commit: r1041876 - in
/db/torque/runtime/trunk/src/java/org/apache/torque/util:
ListOrderedMapCI.java SummaryHelper.java
Author: gmonroe
Date: Fri Dec 3 15:28:23 2010
New Revision: 1041876
URL: http://svn.apache.org/viewvc?rev=1041876&view=rev
Log:
Refactored SummaryHelper to use case insensitive ListOrderMapCI class. This fixes problems with different DB's metadata column names having different cases.
Added:
db/torque/runtime/trunk/src/java/org/apache/torque/util/ListOrderedMapCI.java
Modified:
db/torque/runtime/trunk/src/java/org/apache/torque/util/SummaryHelper.java
Added: db/torque/runtime/trunk/src/java/org/apache/torque/util/ListOrderedMapCI.java
URL: http://svn.apache.org/viewvc/db/torque/runtime/trunk/src/java/org/apache/torque/util/ListOrderedMapCI.java?rev=1041876&view=auto
==============================================================================
--- db/torque/runtime/trunk/src/java/org/apache/torque/util/ListOrderedMapCI.java (added)
+++ db/torque/runtime/trunk/src/java/org/apache/torque/util/ListOrderedMapCI.java Fri Dec 3 15:28:23 2010
@@ -0,0 +1,99 @@
+package org.apache.torque.util;
+
+/*
+ * 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.
+ */
+
+import org.apache.commons.collections.map.ListOrderedMap;
+
+/**
+ * A subclass of the Apache Commons ListOrderedMap that has case insensitive
+ * String key methods. This is done by converting all String keys to
+ * lower case.
+ *
+ * @author <a href="mailto:greg.monroe@dukece.com">Greg Monroe</a>
+ * @version $Id$
+ */
+public class ListOrderedMapCI extends ListOrderedMap
+{
+ private static final long serialVersionUID = -4349246328751938554L;
+
+ /**
+ * Constructs a new empty ListOrderedMap.
+ */
+ public ListOrderedMapCI() {
+ super();
+ }
+
+ /**
+ * Get the object associated with this key.
+ *
+ * @param key A case insensitive String.
+ * @return The value for this key
+ */
+ public Object get( String key ) {
+ return super.get( key.toLowerCase() );
+ }
+ /**
+ * Adds a value to the end of the list with the specified key.
+ *
+ * @param key A case insensitive String.
+ * @param value The value to add
+ * @return The value for previously mapped to this key
+ */
+ public Object put( String key, Object value ) {
+ return super.put( key.toLowerCase(), value );
+ }
+ /**
+ * Puts a key-value mapping into the map at the specified index.
+ *
+ * @param index The index at which the mapping should be inserted.
+ * @param key A case insensitive String.
+ * @param value The value.
+ * @return The value for previously mapped to this key
+ */
+ public Object put( int index, String key, Object value ) {
+ return super.put(index, key.toLowerCase(), value );
+ }
+ /**
+ * Gets the index of the specified key.
+ *
+ * @param key A case insensitive String.
+ * @return the index, or -1 if not found
+ */
+ public int indexOf( String key ) {
+ return super.indexOf( key.toLowerCase() );
+ }
+ /**
+ * Removes the mapping for the specified key.
+ * @param key A case insensitive String.
+ * @return the removed value, or null if none existed
+ */
+ public Object remove ( String key ) {
+ return super.remove( key.toLowerCase() );
+ }
+ /**
+ * Test if the key exists in the mapping.
+ *
+ * @param key The case insensitive key to test for.
+ * @return True if the key exists.
+ */
+ public boolean containsKey( String key ) {
+ return super.containsKey( key.toLowerCase());
+ }
+}
Modified: db/torque/runtime/trunk/src/java/org/apache/torque/util/SummaryHelper.java
URL: http://svn.apache.org/viewvc/db/torque/runtime/trunk/src/java/org/apache/torque/util/SummaryHelper.java?rev=1041876&r1=1041875&r2=1041876&view=diff
==============================================================================
--- db/torque/runtime/trunk/src/java/org/apache/torque/util/SummaryHelper.java (original)
+++ db/torque/runtime/trunk/src/java/org/apache/torque/util/SummaryHelper.java Fri Dec 3 15:28:23 2010
@@ -28,7 +28,7 @@ import java.util.Vector;
import org.apache.commons.collections.OrderedMap;
import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.map.ListOrderedMap;
+// import org.apache.commons.collections.map.ListOrderedMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.torque.TorqueException;
@@ -84,7 +84,7 @@ import com.workingdogs.village.Value;
*
* @see org.apache.torque.util.functions.FunctionFactory
* @author <a href="mailto:greg.monroe@dukece.com">Greg Monroe</a>
- * @version $Id
+ * @version $Id$
*/
public class SummaryHelper
{
@@ -123,15 +123,16 @@ public class SummaryHelper
}
/**
- * Return a list of OrderedMap objects with the results of the summary
- * query. The OrderedMap objects have a key of the column name or
- * function alias and are in the order generated by the query.
+ * Return a list of ListOrderedMapCI objects with the results of the
+ * summary query. The ListOrderedMapCI objects have a key of the column
+ * name or function alias and are in the order generated by the query.
*
* @param crit The base criteria to build on.
* @param conn The DB Connection to use.
* @return Results as a OrderMap<String,Values> object.
* @throws TorqueException
* @throws DataSetException
+ * @see ListOrderedMapCI
*/
public List summarize( Criteria crit, Connection conn )
throws TorqueException, DataSetException
@@ -153,7 +154,7 @@ public class SummaryHelper
Vector resultsList = new Vector(results.size());
while ( r.hasNext() )
{
- ListOrderedMap recordMap = new ListOrderedMap();
+ ListOrderedMapCI recordMap = new ListOrderedMapCI();
Record rec = (Record) r.next();
String cName = null;
Value value = null;
@@ -231,7 +232,7 @@ public class SummaryHelper
if ( ! haveFromTable ) // Last chance. Get it from the func.
{
String col = f.getArgument(0).toString();
- if ( col.indexOf('.') >= 0)
+ if ( col.contains(".") )
{
// Kludgy Where table.col = table.col clause to force
// from table identification.
@@ -315,7 +316,7 @@ public class SummaryHelper
{
if ( aggregates == null )
{
- aggregates = new ListOrderedMap();
+ aggregates = new ListOrderedMapCI();
}
return aggregates;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org