/**
   * Debug/bootstrap testing method to blow away all data in the core model tables <br>
   * <br>
   * rapidandroid_form <br>
   * rapidandroid_field <br>
   * rapidandroid_fieldtype
   */
  public static void ClearFormTables() {

    SQLiteDatabase db = mDbHelper.getWritableDatabase();

    db.execSQL("delete from " + RapidSmsDBConstants.FieldType.TABLE);
    db.execSQL("delete from " + RapidSmsDBConstants.Field.TABLE);
    db.execSQL("delete from " + RapidSmsDBConstants.Form.TABLE);

    Log.v("dimagi", "wiped the form/field/fieldtype/formdata table for debug purposes");
  }
  /**
   * Generate the fully typed out table that parsed data will be inserted into when SMS messages
   * come in.
   *
   * @param form
   */
  public static void generateFormTable(Form form) {
    // dmyung: 1/19/2009
    // For the intial run through this is a bit hacky.

    // for each form, create a new sql table create table script
    // do do that get the form prefix and get a foriegn key back to the
    // message table
    // after that, create all the columns
    // do do this we make a switch statement and we will support the SQLite
    // datatypes.

    SQLiteDatabase db = mDbHelper.getWritableDatabase();
    try {
      Cursor formdatacursor =
          db.rawQuery("select * from formdata_" + form.getPrefix().replace("@", "") + ";", null);
      if (formdatacursor.getCount() > 0) {
        return;
      } else {
        db.execSQL("drop table formdata_" + form.getPrefix());
      }
    } catch (SQLException ex) {
      // table likely doesn't exist, we're good to go!

    }

    StringBuilder sb = new StringBuilder();
    sb.append("create table formdata_");
    sb.append(form.getPrefix().replace("@", ""));
    sb.append(" (");
    sb.append(" \"_id\" integer not null PRIMARY KEY, ");
    sb.append(" \"message_id\" integer not null references \"message\", ");

    org.rapidsms.java.core.model.Field[] fields = form.getFields();
    int fieldcount = fields.length;

    boolean last = false;
    for (int i = 0; i < fieldcount; i++) {
      if (i == fieldcount - 1) {
        last = true;
      }
      getFieldDeclaration(fields[i], sb, last);
    }

    sb.append(" );");

    db.execSQL(sb.toString());
  }