@Override public List<QName> getFieldsToDelete() { return record.getFieldsToDelete(); }
@Override public List<QName> getFieldsToDelete() { return Collections.unmodifiableList(delegate.getFieldsToDelete()); }
private Map<QName, Object> getFieldsToUpdate(Record record) { // Work with a copy of the map Map<QName, Object> fields = new HashMap<QName, Object>(); fields.putAll(record.getFields()); for (QName qName : record.getFieldsToDelete()) { fields.put(qName, FieldFlags.getDeleteMarker()); } return fields; }
/** * Removes state from the record which was present on submit, but shouldn't be present in the record * returned to the client. */ private void removeUnidirectionalState(Record record) { record.getFieldsToDelete().clear(); // Clearing the fieldsToDelete of the metadata's is a bit more complex since those objects are immutable Map<QName, Metadata> changedMetadata = null; for (Map.Entry<QName, Metadata> metadataEntry : record.getMetadataMap().entrySet()) { if (metadataEntry.getValue().getFieldsToDelete().size() > 0) { MetadataBuilder builder = new MetadataBuilder(); for (Map.Entry<String, Object> entry : metadataEntry.getValue().getMap().entrySet()) { builder.object(entry.getKey(), entry.getValue()); } if (changedMetadata == null) { changedMetadata = new HashMap<QName, Metadata>(); } changedMetadata.put(metadataEntry.getKey(), builder.build()); } } if (changedMetadata != null) { record.getMetadataMap().putAll(changedMetadata); } }
private Record merge(Record record, Record original) { Record result = original.clone(); if (record.getRecordTypeName() != null) { result.setRecordType(record.getRecordTypeName()); } // TODO merge meta map for(Map.Entry<QName,Object> entry : record.getFields().entrySet()) { result.setField(entry.getKey(), entry.getValue()); } for (QName toDelete : record.getFieldsToDelete()) { result.getFields().remove(toDelete); } return result; }
} else { QName qname = QNameConverter.fromJson(fieldToDelete.getTextValue(), namespaces); record.getFieldsToDelete().add(qname);
output.writeVInt(record.getFieldsToDelete().size()); for (QName name : record.getFieldsToDelete()) { writeQName(name, output);
private void validateRecord(Record record, Record originalRecord, RecordType recordType, FieldTypes fieldTypes) throws TypeException, InvalidRecordException, InterruptedException { // Check mandatory fields Collection<FieldTypeEntry> fieldTypeEntries = recordType.getFieldTypeEntries(); List<QName> fieldsToDelete = record.getFieldsToDelete(); for (FieldTypeEntry fieldTypeEntry : fieldTypeEntries) { if (fieldTypeEntry.isMandatory()) { FieldType fieldType = fieldTypes.getFieldType(fieldTypeEntry.getFieldTypeId()); QName fieldName = fieldType.getName(); if (fieldsToDelete.contains(fieldName)) { throw new InvalidRecordException("Field: '" + fieldName + "' is mandatory.", record.getId()); } if (!record.hasField(fieldName) && !originalRecord.hasField(fieldName)) { throw new InvalidRecordException("Field: '" + fieldName + "' is mandatory.", record.getId()); } } } }
private void validateRecord(Record record, Record originalRecord, RecordType recordType) throws TypeException, InvalidRecordException, InterruptedException, RepositoryException { // Check mandatory fields Collection<FieldTypeEntry> fieldTypeEntries = recordType.getFieldTypeEntries(); List<QName> fieldsToDelete = record.getFieldsToDelete(); for (FieldTypeEntry fieldTypeEntry : fieldTypeEntries) { if (fieldTypeEntry.isMandatory()) { FieldType fieldType = getTypeManager().getFieldTypeById(fieldTypeEntry.getFieldTypeId()); QName fieldName = fieldType.getName(); if (fieldsToDelete.contains(fieldName)) { throw new InvalidRecordException("Field: '" + fieldName + "' is mandatory.", record.getId()); } if (!record.hasField(fieldName) && !originalRecord.hasField(fieldName)) { throw new InvalidRecordException("Field: '" + fieldName + "' is mandatory.", record.getId()); } } } }
record.getFieldsToDelete().add(readQName(input));