public void deParse(CreateTable createTable) {
    buffer.append("CREATE TABLE ").append(createTable.getTable().getFullyQualifiedName());
    if (createTable.getColumnDefinitions() != null) {
      buffer.append(" (");
      for (Iterator<ColumnDefinition> iter = createTable.getColumnDefinitions().iterator();
          iter.hasNext(); ) {
        ColumnDefinition columnDefinition = iter.next();
        buffer.append(columnDefinition.getColumnName());
        buffer.append(" ");
        buffer.append(columnDefinition.getColDataType().toString());
        if (columnDefinition.getColumnSpecStrings() != null) {
          for (String s : columnDefinition.getColumnSpecStrings()) {
            buffer.append(" ");
            buffer.append(s);
          }
        }

        if (iter.hasNext()) {
          buffer.append(", ");
        }
      }

      if (createTable.getIndexes() != null) {
        for (Iterator<Index> iter = createTable.getIndexes().iterator(); iter.hasNext(); ) {
          buffer.append(", ");
          Index index = iter.next();
          buffer.append(index.toString());
        }
      }

      buffer.append(")");
    }
  }
 @SuppressWarnings("deprecation")
 @Override
 public void serialize(SerializerOutput out, ValueContainer value) throws IOException {
   out.writeInt(value.count);
   for (ArrayList<Datum> tuple : value.tuples) {
     int index = -1;
     for (ColumnDefinition datumType : colsDef) {
       if (datumType.getColDataType().getDataType().equalsIgnoreCase("long")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("int")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("number")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("integer")) {
         out.writeLong((long) tuple.get(++index).getValue());
       } else if (datumType.getColDataType().getDataType().equalsIgnoreCase("double")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("float")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("decimal")) {
         out.writeDouble((double) tuple.get(++index).getValue());
       } else if (datumType.getColDataType().getDataType().equalsIgnoreCase("date")) {
         index++;
         out.writeInt(((Date) (tuple.get(index).getValue())).getYear());
         out.writeInt(((Date) (tuple.get(index).getValue())).getMonth());
         out.writeInt(((Date) (tuple.get(index).getValue())).getDate());
       } else {
         out.writeUTF(tuple.get(++index).getValue().toString());
       }
     }
   }
 }
 @Override
 public ValueContainer deserialize(SerializerInput in) throws IOException, ClassNotFoundException {
   ArrayList<ArrayList<Datum>> tuples = new ArrayList<ArrayList<Datum>>();
   int count = in.readInt();
   for (int i = 0; i < count; i++) {
     ArrayList<Datum> tuple = new ArrayList<Datum>();
     for (ColumnDefinition datumType : colsDef) {
       if (datumType.getColDataType().getDataType().equalsIgnoreCase("long")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("int")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("number")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("integer")) {
         tuple.add(new Datum.DatumLong(in.readLong()));
       } else if (datumType.getColDataType().getDataType().equalsIgnoreCase("double")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("float")
           || datumType.getColDataType().getDataType().equalsIgnoreCase("decimal")) {
         tuple.add(new Datum.DatumDouble(in.readDouble()));
       } else if (datumType.getColDataType().getDataType().equalsIgnoreCase("date")) {
         @SuppressWarnings("deprecation")
         Date date = new Date(in.readInt(), in.readInt(), in.readInt());
         tuple.add(new Datum.DatumDate(date));
       } else {
         tuple.add(new Datum.DatumString(in.readUTF()));
       }
     }
     tuples.add(tuple);
   }
   ValueContainer value = new ValueContainer(tuples);
   return value;
 }