package eu.dnetlib.iis.wf.importer.infospace;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.SortedMap;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
import eu.dnetlib.data.proto.OafProtos.Oaf;
/**
* {@link Oaf} body along with list of ordered updates which can be applied over this body.
*
* @author mhorst
*
*/
public class OafBodyWithOrderedUpdates {
public static final String BODY_QUALIFIER_NAME = "body";
private String body;
private final Collection<String> orderedUpdates;
// ------------------------ GETTERS --------------------------
/**
* Returns body part.
*/
public String getBody() {
return body;
}
/**
* Returns all update parts ordered by qualifier.
*/
public Collection<String> getOrderedUpdates() {
return orderedUpdates;
}
// ------------------------ CONSTRUCTORS --------------------------
/**
* @param infoSpaceRecords list of {@link QualifiedOafJsonRecord} entities
*/
public OafBodyWithOrderedUpdates(List<QualifiedOafJsonRecord> infoSpaceRecords) {
Preconditions.checkNotNull(infoSpaceRecords);
// to be instantiated later because in most cases updates are not available
SortedMap<String, String> updatesOrderedByQualifier = null;
for (QualifiedOafJsonRecord record : infoSpaceRecords) {
if (BODY_QUALIFIER_NAME.equals(record.getQualifier())) {
this.body = record.getOafJson();
} else {
if (updatesOrderedByQualifier==null) {
updatesOrderedByQualifier = Maps.newTreeMap();
}
updatesOrderedByQualifier.put(record.getQualifier(), record.getOafJson());
}
}
this.orderedUpdates = updatesOrderedByQualifier!=null?updatesOrderedByQualifier.values():Collections.emptyList();
}
}