public Serie loadSerieFromCursor(Cursor cursor) {
   Serie serie = new Serie();
   int columnIndex;
   if ((columnIndex = cursor.getColumnIndex(MySQLiteOpenHelper.COL_SERIES_ID)) >= 0)
     serie.setId(cursor.getInt(columnIndex));
   if ((columnIndex = cursor.getColumnIndex(MySQLiteOpenHelper.COL_SERIES_NAME)) >= 0)
     serie.setName(cursor.getString(columnIndex));
   if ((columnIndex = cursor.getColumnIndex(MySQLiteOpenHelper.COL_SERIES_STATUS)) >= 0)
     serie.setStatus(Status.getValue(cursor.getInt(columnIndex)));
   return serie;
 }
  public boolean insertSerie(Handler handler, Serie serie) {
    if (serie == null) return false;
    Hashtable<String, String> editions = serie.getEditions();
    Log.d(
        Global.getLogTag(MyDbAdaptor.class),
        "insertSerie " + serie.getName() + "(" + serie.getId() + ") - " + serie.getTomeCount());
    Enumeration<String> e = editions.keys();
    while (e.hasMoreElements()) {
      String key = e.nextElement();
      String value = editions.get(key);
      Log.d(Global.getLogTag(MyDbAdaptor.class), "id_edition = " + key + " count=" + value);
    }

    boolean result = false;
    ContentValues values = new ContentValues();
    values.put(MySQLiteOpenHelper.COL_SERIES_ID, serie.getId());
    values.put(MySQLiteOpenHelper.COL_SERIES_NAME, serie.getName());
    values.put(MySQLiteOpenHelper.COL_SERIES_STATUS, serie.getStatus().getValue());

    // Find row
    Cursor cursor =
        database.query(
            MySQLiteOpenHelper.TABLE_SERIES,
            null,
            new StringBuilder().append(MySQLiteOpenHelper.COL_SERIES_ID).append("=?").toString(),
            new String[] {Integer.toString(serie.getId())},
            null,
            null,
            null);

    Enumeration<String> key = serie.getEditions().keys();
    int tome_count;
    String id_edition;
    if (cursor.getCount() == 0) {
      result = (database.insert(MySQLiteOpenHelper.TABLE_SERIES, null, values) >= 0);
      while (key.hasMoreElements()) {
        id_edition = key.nextElement();
        tome_count = Integer.parseInt(serie.getEditions().get(id_edition));
        if (tome_count != getTomesCountFromEditionId(id_edition)) {
          // sync editions tomes
          ServerConnector.syncEdition(handler, id_edition, serie.getId());
        }
      }
    } else {
      cursor.moveToFirst();
      int tomeCount = 0;
      if (serie.getTomeCount() != (tomeCount = getTomesCountFromSerieId(serie.getId()))) {
        while (key.hasMoreElements()) {
          id_edition = key.nextElement();
          tome_count = Integer.parseInt(serie.getEditions().get(id_edition));
          if (tome_count != getTomesCountFromEditionId(id_edition)) {
            // sync editions tomes
            ServerConnector.syncEdition(handler, id_edition, serie.getId());
          }
        }
      } else if (tomeCount > 0) checkTomeIcons(handler, serie.getId());

      Serie saved = loadSerieFromCursor(cursor);
      if (!(result = saved.equals(serie)))
        result =
            (database.update(
                    MySQLiteOpenHelper.TABLE_SERIES,
                    values,
                    new StringBuilder()
                        .append(MySQLiteOpenHelper.COL_SERIES_ID)
                        .append("=?")
                        .toString(),
                    new String[] {Integer.toString(serie.getId())})
                >= 0);
    }
    cursor.close();
    return result;
  }