@Override public boolean getPendingChanges() { for (EntityObjectVO eo : mmp.getAllValues()) { if (eo.isFlagNew() || eo.isFlagRemoved() || eo.isFlagUpdated()) return true; if (eo.getDependants().getPendingChanges()) return true; } return false; }
/** * sets the parent id of masterdata records. * * @param iGenericObjectId */ @Override public void setParent( String moduleEntityName, Integer iGenericObjectId, Map<EntityAndFieldName, String> collSubEntities) { if (iGenericObjectId == null) { throw new NullArgumentException("iGenericObjectId"); } Long longId = IdUtils.toLongId(iGenericObjectId); /** @todo eliminate this workaround: */ final MasterDataMetaProvider cache = SpringApplicationContextHolder.getBean(MasterDataMetaProvider.class); for (String sEntityName : this.getEntityNames()) { if (cache != null) { final MasterDataMetaVO mdmetavo = cache.getMetaData(sEntityName); if (mdmetavo.isEditable()) { for (EntityObjectVO mdvo : this.getData(sEntityName)) { String foreignKeyIdField = null; for (EntityAndFieldName entityAndFieldName : collSubEntities.keySet()) { if (entityAndFieldName.getEntityName().equals(sEntityName)) { foreignKeyIdField = entityAndFieldName.getFieldName(); break; } } if (foreignKeyIdField == null) foreignKeyIdField = getForeignKeyField(mdmetavo, moduleEntityName, false); final Long iOldGenericObjectId = mdvo.getFieldId(foreignKeyIdField); if (iOldGenericObjectId != null && !longId.equals(iOldGenericObjectId)) { log.warn( "Bad parent id in dependant masterdata record; old id: " + iOldGenericObjectId + ", new id: " + longId + "."); } if (iOldGenericObjectId == null || (!longId.equals(iOldGenericObjectId) && mdvo.isFlagUpdated())) { mdvo.getFieldIds().put(foreignKeyIdField, longId); } } } } } }
@Override protected DalCallResult batchInsertOrUpdate( List<IColumnToVOMapping<? extends Object>> columns, Collection<EntityObjectVO> colDalVO, boolean failAfterBatch) { DalCallResult dcr = new DalCallResult(); for (EntityObjectVO dalVO : colDalVO) { Map<String, Object> columnValueMap = getColumnValuesMap(valueColumnsUpdate, dalVO, false); Map<String, Object> columnConditionMap = getColumnValuesMap(conditionColumns, dalVO, false); DbTableStatement stmt = null; try { boolean updated = false; if (importStructure.isUpdate()) { columnValueMap.put("INTVERSION", DbIncrement.INCREMENT); stmt = new DbUpdateStatement(getDbSourceForDML(), columnValueMap, columnConditionMap); updated = dataBaseHelper.getDbAccess().execute(stmt) > 0; if (updated) this.updated++; } dalVO.setId(DalUtils.getNextId()); columnValueMap = getColumnValuesMap(valueColumnsInsert, dalVO, false); if (importStructure.isInsert() && !updated) { stmt = new DbInsertStatement(getDbSourceForDML(), columnValueMap); dataBaseHelper.getDbAccess().execute(stmt); inserted++; } if (eMeta.isStateModel() && !updated) { EOGenericObjectVO eogo = new EOGenericObjectVO(); eogo.setId(dalVO.getId()); eogo.setCreatedBy(dalVO.getCreatedBy()); eogo.setCreatedAt(dalVO.getCreatedAt()); eogo.setChangedBy(dalVO.getChangedBy()); eogo.setChangedAt(dalVO.getChangedAt()); eogo.setModuleId(eMeta.getId()); eogo.setVersion(1); eogo.flagNew(); NucletDalProvider.getInstance().getEOGenericObjectProcessor().insertOrUpdate(eogo); } } catch (DbException ex) { if (!failAfterBatch) { throw ex; } ex.setIdIfNull(dalVO.getId()); dcr.addBusinessException(ex); } } return dcr; }