private GenericValue makeUpdatedEntry(CacheKey cacheKey, Integer type) throws GenericEntityException { final FieldMap fieldMap = cacheKey.toFieldMap(); final List<GenericValue> list = genericDelegator.findByAnd(PROPERTY_ENTRY, fieldMap); if (list == null || list.isEmpty()) { final Long id = genericDelegator.getNextSeqId(PROPERTY_ENTRY); return genericDelegator.makeValue(PROPERTY_ENTRY, fieldMap .add(ID, id) .add(TYPE, type)); } final GenericValue existingPropertyEntry = (list.size() == 1) ? list.get(0) : selectMaximumIdAndRemoveOthers(list); removeOrphanedValueIfTypeChanged(type, existingPropertyEntry); return existingPropertyEntry; }