public void deleteCustomField(CustomField field) throws ApplicationException { if (field == null || ConvertUtil.isNullOrEmpty(field.getEntityName()) || ConvertUtil.isNullOrEmpty(field.getFieldName())) { log.warn("The custom field to be deleted is invalid: " + field); throw new ApplicationException("Unable to add invalid custom field definition."); } Entity entity = findLatestEntityVersionByName(field.getEntityName()); EntityAttribute attrib = null; for (EntityAttribute item : entity.getAttributes()) { if (item.getName().equalsIgnoreCase(field.getFieldName()) && item.getDateVoided() == null) { attrib = item; } } if (attrib == null) { log.info("The user attempted to delete a custom field that does not exist."); throw new ApplicationException("Unable to delete an unknown custom field definition."); } attrib.setDateVoided(new Date()); attrib.setUserVoidedBy(Context.getUserContext().getUser()); try { entityDefinitionDao.updateEntity(entity); // Generate a notification event to inform interested listeners via the lightweight mechanism // that this event has occurred. Context.notifyObserver(ObservationEventType.CUSTOM_FIELD_DELETE_EVENT, field); } catch (DaoException e) { log.error("Failed while deleting a custom field: " + e, e); throw new ApplicationException("Failed while deleting the custom field: " + e.getMessage()); } }
private void handleAttributeUpdates(Entity entity) { Entity existing = entityDefinitionDao.loadEntity(entity.getEntityVersionId()); Map<Integer, EntityAttribute> newAttribById = new HashMap<Integer, EntityAttribute>(); for (EntityAttribute attribute : entity.getAttributes()) { newAttribById.put(attribute.getEntityAttributeId(), attribute); } // Mark for deletion attributes that were removed for (EntityAttribute attrib : existing.getAttributes()) { if (newAttribById.get(attrib.getEntityAttributeId()) == null) { attrib.setDateVoided(entity.getDateChanged()); attrib.setUserVoidedBy(Context.getUserContext().getUser()); entity.addAttribute(attrib); } } }
public void deleteEntity(Entity entity) throws ApplicationException { if (entity == null) { return; } if (entity.getEntityVersionId() == null) { throw new ApplicationException( "An entity definition must first be created before it is deleted."); } try { Date dateVoided = new Date(); entity.setDateVoided(dateVoided); entity.setUserVoidedBy(Context.getUserContext().getUser()); for (EntityAttribute attribute : entity.getAttributes()) { attribute.setDateVoided(dateVoided); attribute.setUserVoidedBy(Context.getUserContext().getUser()); attribute.setEntity(entity); } entityDefinitionDao.updateEntity(entity); addToCache(entity); } catch (DaoException e) { throw new ApplicationException(e.getMessage()); } }