You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2012/01/03 18:22:22 UTC

svn commit: r1226881 - /incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/FieldFormatter.java

Author: jarcec
Date: Tue Jan  3 17:22:22 2012
New Revision: 1226881

URL: http://svn.apache.org/viewvc?rev=1226881&view=rev
Log:
SQOOP-411. Precompile Pattern for replacement of Hive delimiters

(Lars Francke via Jarek Jarcec Cecho)

Modified:
    incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/FieldFormatter.java

Modified: incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/FieldFormatter.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/FieldFormatter.java?rev=1226881&r1=1226880&r2=1226881&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/FieldFormatter.java (original)
+++ incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/FieldFormatter.java Tue Jan  3 17:22:22 2012
@@ -17,13 +17,21 @@
  */
 package org.apache.sqoop.lib;
 
+import java.util.regex.Pattern;
+
 /**
  * Static helper class that will help format data with quotes and escape chars.
  */
 public final class FieldFormatter {
 
+  private static final Pattern REPLACE_PATTERN = Pattern.compile("\\n|\\r|\01");
+
   /**
-   * only pass fields that are strings when --hive-drop-delims option is on.
+   * This drops all default Hive delimiters from the string and passes it on.
+   *
+   * These delimiters are \n, \r and \01. This method is invoked when the
+   * command line option {@code --hive-drop-delims} is provided.
+   *
    * @param str
    * @param delimiters
    * @return
@@ -42,7 +50,7 @@ public final class FieldFormatter {
    */
   public static String hiveStringReplaceDelims(String str, String replacement,
       com.cloudera.sqoop.lib.DelimiterSet delimiters) {
-    String droppedDelims = str.replaceAll("\\n|\\r|\01", replacement);
+    String droppedDelims = REPLACE_PATTERN.matcher(str).replaceAll(replacement);
     return escapeAndEnclose(droppedDelims, delimiters);
   }