NC 儲存時怎麼取到已刪除的子表VO
阿新 • • 發佈:2018-11-19
//這是儲存時,從UI獲取的改變後的聚合VO AggregatedValueObject billVO = getBillUI().getChangedVOFromUI(); //子表VO陣列 SuperVO[] vos = (SuperVO[]) billVO.getChildrenVO(); //一種方法是,直接判斷這個改變後的子表VO的狀態 for(int i =0,len = vos.length;i<len;i++){ if(vos[i].getStatus()==VOStatus.DELETED) //這裡就是刪除的子表VO } //如果上一種方法不行,則只能與儲存前的VO作對比了 AggregatedValueObject oldVO = getBufferData().getCurrentVOClone(); oldvos = (SuperVO[]) oldVO.getChildrenVO(); if (oldvos != null && oldvos.length > 0) { for (int i = 0, len_old = oldvos.length; i < len_old; i++) { SuperVO oldvo = oldvos[i]; String oldpk = oldvo.getPrimaryKey(); if (oldpk == null || oldpk.trim().length() == 0) continue; int rowindex = -1; // 與新表體進行比較 if (newvos != null && newvos.length > 0) { for (int j = 0, len_new = newvos.length; j < len_new; j++) { SuperVO newvo = newvos[j]; String newpk = newvo.getPrimaryKey(); if (newpk == null || newpk.trim().length() == 0 || !newpk.equals(oldpk)) continue; rowindex = j; break; } } if (rowindex == -1) { //沒在儲存前的表體VO中找到的,就是要刪除的 oldvo.setStatus(VOStatus.DELETED); al.add(oldvo); } } }