Exemplo n.º 1
0
 /**
  * Delete the referenced rows of baseObj in associated tables(Many2One and One2One conditions).
  *
  * @param baseObj The record to delete. Now contains associations info.
  * @return The number of rows affected in all associated tables.
  */
 private int deleteAssociatedForeignKeyRows(DataSupport baseObj) {
   int rowsAffected = 0;
   Map<String, Set<Long>> associatedModelMap = baseObj.getAssociatedModelsMapWithFK();
   for (String associatedTableName : associatedModelMap.keySet()) {
     String fkName = getForeignKeyColumnName(baseObj.getTableName());
     rowsAffected +=
         mDatabase.delete(associatedTableName, fkName + " = " + baseObj.getBaseObjId(), null);
   }
   return rowsAffected;
 }
Exemplo n.º 2
0
 /**
  * The open interface for other classes in CRUD package to delete. Using baseObj to decide which
  * record to delete. The baseObj must be saved already(using {@link
  * org.litepal.crud.DataSupport#isSaved()} to test), or nothing will be deleted. This method can
  * action cascade delete. When the record is deleted from database, all the referenced data such
  * as foreign key value will be removed too.
  *
  * @param baseObj The record to delete.
  * @return The number of rows affected. Including cascade delete rows.
  */
 int onDelete(DataSupport baseObj) {
   if (baseObj.isSaved()) {
     Collection<AssociationsInfo> associationInfos = analyzeAssociations(baseObj);
     int rowsAffected = deleteCascade(baseObj);
     rowsAffected +=
         mDatabase.delete(baseObj.getTableName(), "id = " + baseObj.getBaseObjId(), null);
     clearAssociatedModelSaveState(baseObj, associationInfos);
     return rowsAffected;
   }
   return 0;
 }
Exemplo n.º 3
0
 /**
  * Delete the referenced rows of baseObj in intermediate join tables(Many2Many condition).
  *
  * @param baseObj The record to delete. Now contains associations info.
  * @return The number of rows affected in all intermediate join tables.
  */
 private int deleteAssociatedJoinTableRows(DataSupport baseObj) {
   int rowsAffected = 0;
   Set<String> associatedTableNames = baseObj.getAssociatedModelsMapForJoinTable().keySet();
   for (String associatedTableName : associatedTableNames) {
     String joinTableName =
         DBUtility.getIntermediateTableName(baseObj.getTableName(), associatedTableName);
     String fkName = getForeignKeyColumnName(baseObj.getTableName());
     rowsAffected +=
         mDatabase.delete(joinTableName, fkName + " = " + baseObj.getBaseObjId(), null);
   }
   return rowsAffected;
 }