You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Fabio Insaccanebbia (JIRA)" <ji...@apache.org> on 2006/12/01 21:55:21 UTC

[jira] Created: (DBUTILS-34) BasicRowProcessor loses any information on database field case

BasicRowProcessor loses any information on database field case
--------------------------------------------------------------

                 Key: DBUTILS-34
                 URL: http://issues.apache.org/jira/browse/DBUTILS-34
             Project: Commons DbUtils
          Issue Type: Improvement
    Affects Versions: 1.0
            Reporter: Fabio Insaccanebbia
            Priority: Minor


In the BasicRowProcessor class there is a comment about the toMap method:
" This  implementation returns a <code>Map</code> with case insensitive column names as keys.  Calls to map.get("COL") and map.get("col") return the same value"

So the "contract" of this method just says that the "get" method is case insensitive. The current implementation obtains this result by putting all the keys in lowercase. This way we simply "lose" every information about the case of the fields. If you call the "keys" iterator, you don't have anymore the keys you inserted, but the "lowercase" version. 

I find it not completely correct: I would expect the keys to be exactly the ones I set on the database, also if I can get the value in a case insensitive way.
I still have to find the idea for a pathc, but I'd like to know if you find my reasoning correct.

I consider the current behaviour a problem, since I had to map the database fields to a bean and the "case" made it impossible, even if I had set my database to return mixed case fieldnames.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


[jira] Updated: (DBUTILS-34) BasicRowProcessor loses any information on database field case

Posted by "Julien Aymé (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DBUTILS-34?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julien Aymé updated DBUTILS-34:
-------------------------------

    Attachment: BasicRowProcessor.java
                BasicRowProcessor.patch

Hello, I had the same problem as yours, and I fixed it with an implementation of my own of the CaseInsensitiveHashMap:

Instead of converting the key to lower case before putting it into the map, I chose to keep the key as it was given, and maintain an internal mapping from lower case keys to real keys.

I join the whole BasicRowProcessor class, and the patch. (Some of the comments can be removed, it's just for the clarity of the code).

> BasicRowProcessor loses any information on database field case
> --------------------------------------------------------------
>
>                 Key: DBUTILS-34
>                 URL: https://issues.apache.org/jira/browse/DBUTILS-34
>             Project: Commons DbUtils
>          Issue Type: Improvement
>    Affects Versions: 1.0
>            Reporter: Fabio Insaccanebbia
>            Priority: Minor
>         Attachments: BasicRowProcessor.java, BasicRowProcessor.patch
>
>
> In the BasicRowProcessor class there is a comment about the toMap method:
> " This  implementation returns a <code>Map</code> with case insensitive column names as keys.  Calls to map.get("COL") and map.get("col") return the same value"
> So the "contract" of this method just says that the "get" method is case insensitive. The current implementation obtains this result by putting all the keys in lowercase. This way we simply "lose" every information about the case of the fields. If you call the "keys" iterator, you don't have anymore the keys you inserted, but the "lowercase" version. 
> I find it not completely correct: I would expect the keys to be exactly the ones I set on the database, also if I can get the value in a case insensitive way.
> I still have to find the idea for a pathc, but I'd like to know if you find my reasoning correct.
> I consider the current behaviour a problem, since I had to map the database fields to a bean and the "case" made it impossible, even if I had set my database to return mixed case fieldnames.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org