package sk.stuba.fiit.perconik.activity.serializers;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import sk.stuba.fiit.perconik.data.content.Content;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import static com.google.common.collect.Maps.newLinkedHashMap;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.newEmptyListSuitableFor;
public abstract class AbstractMultiSerializer<T> extends AbstractSerializer<T> implements MultiSerializer<T> {
protected AbstractMultiSerializer() {}
public final List<StructuredContent> serialize(final Iterable<? extends T> objects) {
List<StructuredContent> contents = newEmptyListSuitableFor(objects);
for (T object: objects) {
contents.add(this.serialize(object));
}
return contents;
}
public final List<StructuredContent> serialize(final Iterator<? extends T> objects) {
List<StructuredContent> contents = newEmptyListSuitableFor(objects);
while (objects.hasNext()) {
contents.add(this.serialize(objects.next()));
}
return contents;
}
public final Map<String, ? extends Content> serialize(final Map<?, ? extends T> objects) {
Map<String, StructuredContent> contents = newLinkedHashMap();
for (Entry<?, ? extends T> entry: objects.entrySet()) {
contents.put(entry.getKey().toString(), this.serialize(entry.getValue()));
}
return contents;
}
}