2017-05-10 11 views
0

これは初めての人で、助けていただければ幸いです。他のメソッドのリストを返し、イテレータを使用してこのリスト内のアイテムを削除するメソッドを呼び出す方法

以下のマイセーブ関数からgetListTenant()を呼び出し、保存を行う前にイテレータを使用してリストを消去したいとします。

package controllers; 

public class TenantController extends AppController { 

    Tenant tenant; 
    FacilityUnit unit; 

    // list tenants in selected facility 
    public Result listTenant() { 

     return ok(Json.toJson(getTenantList())); 
    } 


     private List<Tenant> getTenantList() { 

      List<Tenant> tenants = Tenant.find 
       .fetch("unit.facility") 
       .where().eq("unit.facility", currentFacility()) 
       .findList(); 
      return tenants; 
     } 

    public Result saveTenant() { 
     JsonNode submissionNode = request().body().asJson(); 
     JsonNode itemsArray = submissionNode.get("items"); 
     //clear tenant 


     // create the new tenant 
     if (itemsArray.isArray()) { 

      for (JsonNode itemNode : itemsArray) { 
       JsonNode tenantNode = itemNode.get("tenant"); 
       String tenantId = tenantNode.get("id").asText(); 
       JsonNode unitNode = itemNode.get("unit"); 
       String unitId = unitNode.get("id").asText(); 

       System.out.println("##### Tenant ID IS " + tenantId); 
       System.out.println("##### unit ID IS " + unitId); 

       // Tenant.find.where().eq("tenant.id", 
       // tenant.getTenant().getId()).eq("unit.id", unit.getId() 
       //).delete(); 
       // Util.isNotEmpty() && 
       if (Util.isNotEmpty(tenantId) && Util.isNotEmpty(unitId)) { 
        // these two are the minimal criteria for an tenant 

        Tenant tenant = new Tenant(); 
        tenant.setTenant(Person.find.byId(tenantId)); 
        tenant.setUnit(FacilityUnit.find.byId(unitId)); 

        tenant.save(); 
        System.out.println("##### SAVED A TENANT"); 
       } 
      } 
     } 

     System.out.println("##### DONE"); 
     return ok(infoMessage("Update of " + tenant.getTenant() + "successful")); 

    } 

答えて

0

getTenantList()からTenantsを反復し、それらをクリアするためにそれらにdelete()を呼び出します。以下は私のコントローラのコードがあります。例えば

private List<Tenant> getTenantList() { 
    List<Tenant> tenants = Tenant.find 
     .fetch("unit.facility") 
     .where().eq("unit.facility", currentFacility()) 
     .findList(); 
    return tenants; 
} 

public Result saveTenant() { 
    // Do something... 
    // ... 

    // Get the tenants list that we want to clear before saving. 
    // Best way to do this is loop over it and call delete. 
    for (Tenant tenant : getTenantList()) { 
     tenant.delete(); 
    } 

    // Do some more things... 
    // ... 
} 
関連する問題