sqoop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From b...@apache.org
Subject svn commit: r1190430 [5/5] - in /incubator/sqoop/trunk: ./ src/java/com/cloudera/sqoop/io/ src/java/com/cloudera/sqoop/lib/ src/java/org/apache/sqoop/io/ src/java/org/apache/sqoop/lib/
Date Fri, 28 Oct 2011 16:32:45 GMT
Added: incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/SqoopRecord.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/SqoopRecord.java?rev=1190430&view=auto
==============================================================================
--- incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/SqoopRecord.java (added)
+++ incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/SqoopRecord.java Fri Oct 28 16:32:43
2011
@@ -0,0 +1,159 @@
+/**
+ * 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.sqoop.lib;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.Map;
+
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.Writable;
+import org.apache.hadoop.mapreduce.lib.db.DBWritable;
+
+/**
+ * Interface implemented by the classes generated by sqoop's orm.ClassWriter.
+ */
+public abstract class SqoopRecord implements Cloneable, DBWritable,
+    com.cloudera.sqoop.lib.FieldMappable, Writable  {
+
+  public SqoopRecord() {
+  }
+
+
+  public abstract void parse(CharSequence s)
+      throws com.cloudera.sqoop.lib.RecordParser.ParseError;
+  public abstract void parse(Text s)
+      throws com.cloudera.sqoop.lib.RecordParser.ParseError;
+  public abstract void parse(byte [] s)
+      throws com.cloudera.sqoop.lib.RecordParser.ParseError;
+  public abstract void parse(char [] s)
+      throws com.cloudera.sqoop.lib.RecordParser.ParseError;
+  public abstract void parse(ByteBuffer s)
+      throws com.cloudera.sqoop.lib.RecordParser.ParseError;
+  public abstract void parse(CharBuffer s)
+      throws com.cloudera.sqoop.lib.RecordParser.ParseError;
+  public abstract void loadLargeObjects(
+      com.cloudera.sqoop.lib.LargeObjectLoader objLoader)
+      throws SQLException, IOException, InterruptedException;
+
+  /**
+   * Inserts the data in this object into the PreparedStatement, starting
+   * at parameter 'offset'.
+   * @return the number of fields written to the statement.
+   */
+  public abstract int write(PreparedStatement stmt, int offset)
+      throws SQLException;
+
+  /**
+   * Format output data according to the specified delimiters.
+   */
+  public abstract String toString(
+      com.cloudera.sqoop.lib.DelimiterSet delimiters);
+
+  /**
+   * Use the default delimiters, but only append an end-of-record delimiter
+   * if useRecordDelim is true.
+   */
+  public String toString(boolean useRecordDelim) {
+    // Method body should be overridden by generated classes in 1.3.0+
+    if (useRecordDelim) {
+      // This is the existing functionality.
+      return toString();
+    } else {
+      // Setting this to false requires behavior in the generated class.
+      throw new RuntimeException(
+          "toString(useRecordDelim=false) requires a newer SqoopRecord. "
+          + "Please regenerate your record class to use this function.");
+    }
+  }
+
+  /**
+   * Format the record according to the specified delimiters. An end-of-record
+   * delimiter is optional, and only used if useRecordDelim is true. For
+   * use with TextOutputFormat, calling this with useRecordDelim=false may
+   * make more sense.
+   */
+  public String toString(
+      com.cloudera.sqoop.lib.DelimiterSet delimiters, boolean useRecordDelim) {
+    if (useRecordDelim) {
+      return toString(delimiters);
+    } else {
+      // Setting this to false requires behavior in the generated class.
+      throw new RuntimeException(
+          "toString(delimiters, useRecordDelim=false) requires a newer "
+          + "SqoopRecord. Please regenerate your record class to use this "
+          + "function.");
+    }
+  }
+
+  @Override
+  public Object clone() throws CloneNotSupportedException {
+    return super.clone();
+  }
+
+  /**
+   * Returns an integer specifying which API format version the
+   * generated class conforms to. Used by internal APIs for backwards
+   * compatibility.
+   * @return the API version this class was generated against.
+   */
+  public abstract int getClassFormatVersion();
+
+  /**
+   * Use the delegate pattern to allow arbitrary processing of the
+   * fields of this record.
+   * @param processor A delegate that operates on this object.
+   * @throws IOException if the processor encounters an IO error when
+   * operating on this object.
+   * @throws com.cloudera.sqoop.lib.ProcessingException if the FieldMapProcessor
+   * encounters a general processing error when operating on this object.
+   */
+  public void delegate(com.cloudera.sqoop.lib.FieldMapProcessor processor)
+      throws IOException, com.cloudera.sqoop.lib.ProcessingException {
+    processor.accept(this);
+  }
+
+  @Override
+  /**
+   * {@inheriDoc}
+   * @throws RuntimeException if used with a record that was generated
+   * before this capability was added (1.1.0).
+   */
+  public Map<String, Object> getFieldMap() {
+    // Default implementation does not support field iteration.
+    // ClassWriter should provide an overriding version.
+  throw new RuntimeException(
+      "Got null field map from record. Regenerate your record class.");
+  }
+
+  /**
+   * Allows an arbitrary field to be set programmatically to the
+   * specified value object. The value object must match the
+   * type expected for the particular field or a RuntimeException
+   * will result.
+   * @throws RuntimeException if the specified field name does not exist.
+   */
+  public void setField(String fieldName, Object fieldVal) {
+    throw new RuntimeException("This SqoopRecord does not support setField(). "
+        + "Regenerate your record class.");
+  }
+
+}

Propchange: incubator/sqoop/trunk/src/java/org/apache/sqoop/lib/SqoopRecord.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message