⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jrecord.java

📁 hadoop:Nutch集群平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                cc.write("bool "+getCppFQName()+"::operator== (const "+getCppFQName()+"& peer_) const {\n");        cc.write("  return (1\n");        for (Iterator i = mFields.iterator(); i.hasNext();) {            JField jf = (JField) i.next();            String name = jf.getName();            cc.write("    && ("+name+" == peer_."+name+")\n");        }        cc.write("  );\n");        cc.write("}\n");                cc.write("const ::std::string&"+getCppFQName()+"::type() const {\n");        cc.write("  static const ::std::string type_(\""+mName+"\");\n");        cc.write("  return type_;\n");        cc.write("}\n");                cc.write("const ::std::string&"+getCppFQName()+"::signature() const {\n");        cc.write("  static const ::std::string sig_(\""+getSignature()+"\");\n");        cc.write("  return sig_;\n");        cc.write("}\n");            }        public void genJavaCode() throws IOException {        String pkg = getJavaPackage();        String pkgpath = pkg.replaceAll("\\.", "/");        File pkgdir = new File(pkgpath);        if (!pkgdir.exists()) {            // create the pkg directory            boolean ret = pkgdir.mkdirs();            if (!ret) {                System.out.println("Cannnot create directory: "+pkgpath);                System.exit(1);            }        } else if (!pkgdir.isDirectory()) {            // not a directory            System.out.println(pkgpath+" is not a directory.");            System.exit(1);        }        File jfile = new File(pkgdir, getName()+".java");        FileWriter jj = new FileWriter(jfile);        jj.write("// File generated by hadoop record compiler. Do not edit.\n");        jj.write("package "+getJavaPackage()+";\n\n");        jj.write("import org.apache.hadoop.io.Text;\n\n");        jj.write("public class "+getName()+" implements org.apache.hadoop.record.Record, org.apache.hadoop.io.WritableComparable {\n");        for (Iterator i = mFields.iterator(); i.hasNext();) {            JField jf = (JField) i.next();            jj.write(jf.genJavaDecl());        }        jj.write("  private java.util.BitSet bs_;\n");        jj.write("  public "+getName()+"() {\n");        jj.write("    bs_ = new java.util.BitSet("+(mFields.size()+1)+");\n");        jj.write("    bs_.set("+mFields.size()+");\n");        jj.write("  }\n");                jj.write("  public "+getName()+"(\n");        int fIdx = 0;        int fLen = mFields.size();        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaConstructorParam(fIdx));            jj.write((fLen-1 == fIdx)?"":",\n");        }        jj.write(") {\n");        jj.write("    bs_ = new java.util.BitSet("+(mFields.size()+1)+");\n");        jj.write("    bs_.set("+mFields.size()+");\n");        fIdx = 0;        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaConstructorSet(fIdx));        }        jj.write("  }\n");        fIdx = 0;        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaGetSet(fIdx));        }        jj.write("  public void serialize(org.apache.hadoop.record.OutputArchive a_, String tag) throws java.io.IOException {\n");        jj.write("    if (!validate()) throw new java.io.IOException(\"All fields not set:\");\n");        jj.write("    a_.startRecord(this,tag);\n");        fIdx = 0;        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaWriteMethodName());            jj.write("    bs_.clear("+fIdx+");\n");        }        jj.write("    a_.endRecord(this,tag);\n");        jj.write("  }\n");                jj.write("  public void deserialize(org.apache.hadoop.record.InputArchive a_, String tag) throws java.io.IOException {\n");        jj.write("    a_.startRecord(tag);\n");        fIdx = 0;        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaReadMethodName());            jj.write("    bs_.set("+fIdx+");\n");        }        jj.write("    a_.endRecord(tag);\n");        jj.write("}\n");                jj.write("  public String toString() {\n");        jj.write("    try {\n");        jj.write("      java.io.ByteArrayOutputStream s =\n");        jj.write("        new java.io.ByteArrayOutputStream();\n");        jj.write("      org.apache.hadoop.record.CsvOutputArchive a_ = \n");        jj.write("        new org.apache.hadoop.record.CsvOutputArchive(s);\n");        jj.write("      a_.startRecord(this,\"\");\n");        fIdx = 0;        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaWriteMethodName());        }        jj.write("      a_.endRecord(this,\"\");\n");        jj.write("      return new String(s.toByteArray(), \"UTF-8\");\n");        jj.write("    } catch (Throwable ex) {\n");        jj.write("      ex.printStackTrace();\n");        jj.write("    }\n");        jj.write("    return \"ERROR\";\n");        jj.write("  }\n");                jj.write("  public void write(java.io.DataOutput out) throws java.io.IOException {\n");        jj.write("    org.apache.hadoop.record.BinaryOutputArchive archive = new org.apache.hadoop.record.BinaryOutputArchive(out);\n");        jj.write("    serialize(archive, \"\");\n");        jj.write("  }\n");                jj.write("  public void readFields(java.io.DataInput in) throws java.io.IOException {\n");        jj.write("    org.apache.hadoop.record.BinaryInputArchive archive = new org.apache.hadoop.record.BinaryInputArchive(in);\n");        jj.write("    deserialize(archive, \"\");\n");        jj.write("  }\n");                jj.write("  public boolean validate() {\n");        jj.write("    if (bs_.cardinality() != bs_.length()) return false;\n");        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            JType type = jf.getType();            if (type instanceof JRecord) {                jj.write("    if (!"+jf.getName()+".validate()) return false;\n");            }        }        jj.write("    return true;\n");        jj.write("}\n");                jj.write("  public int compareTo (Object peer_) throws ClassCastException {\n");        jj.write("    if (!(peer_ instanceof "+getName()+")) {\n");        jj.write("      throw new ClassCastException(\"Comparing different types of records.\");\n");        jj.write("    }\n");        jj.write("    "+getName()+" peer = ("+getName()+") peer_;\n");        jj.write("    int ret = 0;\n");        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaCompareTo());            jj.write("    if (ret != 0) return ret;\n");        }        jj.write("     return ret;\n");        jj.write("  }\n");                jj.write("  public boolean equals(Object peer_) {\n");        jj.write("    if (!(peer_ instanceof "+getName()+")) {\n");        jj.write("      return false;\n");        jj.write("    }\n");        jj.write("    if (peer_ == this) {\n");        jj.write("      return true;\n");        jj.write("    }\n");        jj.write("    "+getName()+" peer = ("+getName()+") peer_;\n");        jj.write("    boolean ret = false;\n");        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaEquals());            jj.write("    if (!ret) return ret;\n");        }        jj.write("     return ret;\n");        jj.write("  }\n");                jj.write("  public int hashCode() {\n");        jj.write("    int result = 17;\n");        jj.write("    int ret;\n");        for (Iterator i = mFields.iterator(); i.hasNext(); fIdx++) {            JField jf = (JField) i.next();            jj.write(jf.genJavaHashCode());            jj.write("    result = 37*result + ret;\n");        }        jj.write("    return result;\n");        jj.write("  }\n");        jj.write("  public static String signature() {\n");        jj.write("    return \""+getSignature()+"\";\n");        jj.write("  }\n");                jj.write("}\n");                jj.close();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -