Author: kwright
Date: Mon Aug 20 13:02:46 2012
New Revision: 1375003

URL: http://svn.apache.org/viewvc?rev=1375003&view=rev
Log:
Fix for CONNECTORS-509.

Modified:
    manifoldcf/trunk/CHANGES.txt
    
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnection.java
    
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
    
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConstants.java
    
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_en_US.properties
    
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_ja_JP.properties

Modified: manifoldcf/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1375003&r1=1375002&r2=1375003&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Mon Aug 20 13:02:46 2012
@@ -3,6 +3,10 @@ $Id$
 
 ======================= 0.7-dev =====================
 
+CONNECTORS-509: Allow JDBC Connector to choose which column
+access method to use.
+(Shigeki Kobayashi, Karl Wright)
+
 CONNECTORS-507: Improve JCIFs Connector documentation.
 (Swapna Vuppala)
 

Modified: 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnection.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnection.java?rev=1375003&r1=1375002&r2=1375003&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnection.java
 (original)
+++ 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnection.java
 Mon Aug 20 13:02:46 2012
@@ -37,6 +37,7 @@ public class JDBCConnection
   public static final String _rcsid = "@(#)$Id: JDBCConnection.java 988245 
2010-08-23 18:39:35Z kwright $";
 
   protected String jdbcProvider = null;
+  protected boolean useName;
   protected String host = null;
   protected String databaseName = null;
   protected String userName = null;
@@ -44,9 +45,10 @@ public class JDBCConnection
 
   /** Constructor.
   */
-  public JDBCConnection(String jdbcProvider, String host, String databaseName, 
String userName, String password)
+  public JDBCConnection(String jdbcProvider, boolean useName, String host, 
String databaseName, String userName, String password)
   {
     this.jdbcProvider = jdbcProvider;
+    this.useName = useName;
     this.host = host;
     this.databaseName = databaseName;
     this.userName = userName;
@@ -308,7 +310,7 @@ public class JDBCConnection
         WrappedConnection tempConnection = 
JDBCConnectionFactory.getConnection(jdbcProvider,host,databaseName,userName,password);
         try
         {
-          execute(tempConnection.getConnection(),query,params,false,0);
+          execute(tempConnection.getConnection(),query,params,false,0,useName);
         }
         finally
         {
@@ -332,7 +334,7 @@ public class JDBCConnection
   * @param maxResults is the maximum number of results to load: -1 if all
   * @param params ArrayList if params !=null, use preparedStatement
   */
-  protected static IResultSet execute(Connection connection, String query, 
ArrayList params, boolean bResults, int maxResults)
+  protected static IResultSet execute(Connection connection, String query, 
ArrayList params, boolean bResults, int maxResults, boolean useName)
     throws ManifoldCFException, ServiceInterruption
   {
 
@@ -353,7 +355,7 @@ public class JDBCConnection
           {
             // Suck data from resultset
             if (bResults)
-              return getData(rs,maxResults);
+              return getData(rs,maxResults,useName);
             return null;
           }
           finally
@@ -380,7 +382,7 @@ public class JDBCConnection
             try
             {
               // Suck data from resultset
-              return getData(rs,maxResults);
+              return getData(rs,maxResults,useName);
             }
             finally
             {
@@ -471,7 +473,7 @@ public class JDBCConnection
     }
   }
 
-  protected static String[] readColumnNames(ResultSetMetaData rsmd)
+  protected static String[] readColumnNames(ResultSetMetaData rsmd, boolean 
useName)
     throws ManifoldCFException, ServiceInterruption
   {
     try
@@ -483,7 +485,12 @@ public class JDBCConnection
         resultCols = new String[colcount];
         for (int i = 0; i < colcount; i++)
         {
-          resultCols[i] = rsmd.getColumnName(i+1);
+          String name;
+          if (useName)
+            name = rsmd.getColumnName(i+1);
+          else
+            name = rsmd.getColumnLabel(i+1);
+          resultCols[i] = name;
         }
       }
       else
@@ -497,7 +504,7 @@ public class JDBCConnection
   }
 
   // Read data from a resultset
-  protected static IResultSet getData(ResultSet rs, int maxResults)
+  protected static IResultSet getData(ResultSet rs, int maxResults, boolean 
useName)
     throws ManifoldCFException, ServiceInterruption
   {
     try
@@ -510,7 +517,7 @@ public class JDBCConnection
         // out of the db and return it in a
         // readonly structure
         ResultSetMetaData rsmd = rs.getMetaData();
-        String[] resultCols = readColumnNames(rsmd);
+        String[] resultCols = readColumnNames(rsmd, useName);
         if (resultCols.length == 0)
         {
           // This is an error situation; if a result with no columns is
@@ -929,7 +936,7 @@ public class JDBCConnection
         stmt.execute(query);
         rs = stmt.getResultSet();
         rsmd = rs.getMetaData();
-        resultCols = readColumnNames(rsmd);
+        resultCols = readColumnNames(rsmd,useName);
       }
       catch (Throwable e)
       {
@@ -1207,7 +1214,7 @@ public class JDBCConnection
         loadPS(ps, params);
         rs = ps.executeQuery();
         rsmd = rs.getMetaData();
-        resultCols = readColumnNames(rsmd);
+        resultCols = readColumnNames(rsmd,useName);
       }
       catch (Throwable e)
       {

Modified: 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java?rev=1375003&r1=1375002&r2=1375003&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
 (original)
+++ 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
 Mon Aug 20 13:02:46 2012
@@ -77,6 +77,7 @@ public class JDBCConnector extends org.a
 
   protected JDBCConnection connection = null;
   protected String jdbcProvider = null;
+  protected String accessMethod = null;
   protected String host = null;
   protected String databaseName = null;
   protected String userName = null;
@@ -99,7 +100,7 @@ public class JDBCConnector extends org.a
       if (host == null || host.length() == 0)
         throw new ManifoldCFException("Missing parameter 
'"+JDBCConstants.hostParameter+"'");
 
-      connection = new 
JDBCConnection(jdbcProvider,host,databaseName,userName,password);
+      connection = new JDBCConnection(jdbcProvider,(accessMethod==null || 
accessMethod.equals("name")),host,databaseName,userName,password);
     }
   }
 
@@ -131,6 +132,7 @@ public class JDBCConnector extends org.a
     super.connect(configParams);
 
     jdbcProvider = configParams.getParameter(JDBCConstants.providerParameter);
+    accessMethod = configParams.getParameter(JDBCConstants.methodParameter);
     host = configParams.getParameter(JDBCConstants.hostParameter);
     databaseName = 
configParams.getParameter(JDBCConstants.databaseNameParameter);
     userName= configParams.getParameter(JDBCConstants.databaseUserName);
@@ -710,6 +712,9 @@ public class JDBCConnector extends org.a
     String jdbcProvider = 
parameters.getParameter(org.apache.manifoldcf.crawler.connectors.jdbc.JDBCConstants.providerParameter);
     if (jdbcProvider == null)
       jdbcProvider = "oracle:thin:@";
+    String accessMethod = 
parameters.getParameter(org.apache.manifoldcf.crawler.connectors.jdbc.JDBCConstants.methodParameter);
+    if (accessMethod == null)
+      accessMethod = "name";
     String host = 
parameters.getParameter(org.apache.manifoldcf.crawler.connectors.jdbc.JDBCConstants.hostParameter);
     if (host == null)
       host = "localhost";
@@ -740,13 +745,23 @@ public class JDBCConnector extends org.a
 "      </select>\n"+
 "    </td>\n"+
 "  </tr>\n"+
+"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
+"  <tr>\n"+
+"    <td class=\"description\"><nobr>" + 
Messages.getBodyString(locale,"JDBCConnector.AccessMethod") + "</nobr></td><td 
class=\"value\">\n"+
+"      <select multiple=\"false\" name=\"accessmethod\" size=\"2\">\n"+
+"        <option value=\"name\" 
"+(accessMethod.equals("name")?"selected=\"selected\"":"")+">by 
name</option>\n"+
+"        <option value=\"label\" 
"+(accessMethod.equals("label")?"selected=\"selected\"":"")+">by 
label</option>\n"+
+"      </select>\n"+
+"    </td>\n"+
+"  </tr>\n"+
 "</table>\n"
       );
     }
     else
     {
       out.print(
-"<input type=\"hidden\" name=\"databasetype\" value=\""+jdbcProvider+"\"/>\n"
+"<input type=\"hidden\" name=\"databasetype\" value=\""+jdbcProvider+"\"/>\n"+
+"<input type=\"hidden\" name=\"accessmethod\" value=\""+accessMethod+"\"/>\n"
       );
     }
 
@@ -815,6 +830,10 @@ public class JDBCConnector extends org.a
     if (type != null)
       
parameters.setParameter(org.apache.manifoldcf.crawler.connectors.jdbc.JDBCConstants.providerParameter,type);
 
+    String accessMethod = variableContext.getParameter("accessmethod");
+    if (accessMethod != null)
+      
parameters.setParameter(org.apache.manifoldcf.crawler.connectors.jdbc.JDBCConstants.methodParameter,accessMethod);
+
     String host = variableContext.getParameter("databasehost");
     if (host != null)
       
parameters.setParameter(org.apache.manifoldcf.crawler.connectors.jdbc.JDBCConstants.hostParameter,host);

Modified: 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConstants.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConstants.java?rev=1375003&r1=1375002&r2=1375003&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConstants.java
 (original)
+++ 
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConstants.java
 Mon Aug 20 13:02:46 2012
@@ -26,6 +26,8 @@ public class JDBCConstants
 
   /** The jdbc provider parameter */
   public static String providerParameter = "JDBC Provider";
+  /** The column interrogation method name parameter */
+  public static String methodParameter = "JDBC column access method";
   /** The host machine config parameter */
   public static String hostParameter = "Host";
   /** The database name config parameter */

Modified: 
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_en_US.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_en_US.properties?rev=1375003&r1=1375002&r2=1375003&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_en_US.properties
 (original)
+++ 
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_en_US.properties
 Mon Aug 20 13:02:46 2012
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 JDBCConnector.DatabaseType=Database Type
+JDBCConnector.AccessMethod=Access Method
 JDBCConnector.Server=Server
 JDBCConnector.Credentials=Credentials
 JDBCConnector.DatabaseType2=Database type:

Modified: 
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_ja_JP.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_ja_JP.properties?rev=1375003&r1=1375002&r2=1375003&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_ja_JP.properties
 (original)
+++ 
manifoldcf/trunk/connectors/jdbc/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/jdbc/common_ja_JP.properties
 Mon Aug 20 13:02:46 2012
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 JDBCConnector.DatabaseType=データベースタイプ
+JDBCConnector.AccessMethod=アクセス方式
 JDBCConnector.Server=サーバ
 JDBCConnector.Credentials=証明書
 JDBCConnector.DatabaseType2=データベースタイプ:


Reply via email to