package com.constellio.data.dao.dto.records;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class RecordDeltaDTO implements RecordsOperationDTO {
private final String id;
private final long fromVersion;
private final Map<String, Object> modifiedFields;
private final Map<String, Object> initialFields;
private final Map<String, Object> copyfields;
//TODO Remove initialFields param, replacing it with recordDTO
public RecordDeltaDTO(RecordDTO recordDTO, Map<String, Object> modifiedFields) {
this(recordDTO, modifiedFields, recordDTO.getFields(), new HashMap<String, Object>());
}
//TODO Remove initialFields param, replacing it with recordDTO
public RecordDeltaDTO(RecordDTO recordDTO, Map<String, Object> modifiedFields, Map<String, Object> initialFields) {
this(recordDTO, modifiedFields, initialFields, new HashMap<String, Object>());
}
//TODO Remove initialFields param, replacing it with recordDTO
public RecordDeltaDTO(RecordDTO recordDTO, Map<String, Object> modifiedFields, Map<String, Object> initialFields,
Map<String, Object> copyfields) {
super();
this.initialFields = initialFields;
this.copyfields = copyfields;
this.id = recordDTO.getId();
this.fromVersion = recordDTO.getVersion();
this.modifiedFields = Collections.unmodifiableMap(modifiedFields);
}
public RecordDeltaDTO(String id, long fromVersion, Map<String, Object> modifiedFields, Map<String, Object> initialFields) {
this(id, fromVersion, modifiedFields, initialFields, new HashMap<String, Object>());
}
public RecordDeltaDTO(String id, long fromVersion, Map<String, Object> modifiedFields, Map<String, Object> initialFields,
Map<String, Object> copyfields) {
super();
this.id = id;
this.copyfields = copyfields;
this.fromVersion = fromVersion;
this.initialFields = initialFields;
this.modifiedFields = Collections.unmodifiableMap(modifiedFields);
}
public String getId() {
return id;
}
public long getFromVersion() {
return fromVersion;
}
public Map<String, Object> getModifiedFields() {
return modifiedFields;
}
public Map<String, Object> getInitialFields() {
return initialFields;
}
public Map<String, Object> getCopyfields() {
return copyfields;
}
public <T> T get(String field) {
if (modifiedFields.containsKey(field)) {
return (T) modifiedFields.get(field);
} else if (initialFields.containsKey(field)) {
return (T) initialFields.get(field);
} else if (copyfields.containsKey(field)) {
return (T) copyfields.get(field);
} else {
return null;
}
}
}