package com.vaguehope.onosendai.payload;
import java.util.ArrayList;
import java.util.List;
import com.vaguehope.onosendai.model.Meta;
public class PayloadList {
private final List<Payload> payloads;
public PayloadList (final List<Payload> payloads) {
this.payloads = new ArrayList<Payload>(payloads);
}
Payload findForMeta(final Meta meta) {
if (meta == null) return null;
for (final Payload p : this.payloads) {
if (meta.equals(p.getMeta())) return p;
}
return null;
}
void addItem (final Payload payload) {
this.payloads.add(payload);
}
void addItemsTop(final List<Payload> items) {
this.payloads.addAll(0, items);
}
void addItemAfter(final Payload toAdd, final Payload marker) {
if (marker == null) return;
final int x = this.payloads.indexOf(marker);
if (x >= 0) {
this.payloads.add(x + 1, toAdd);
}
}
void replaceItem (final Payload find, final Payload with) {
for (int i = 0; i < this.payloads.size(); i++) {
if (find.equals(this.payloads.get(i))) this.payloads.set(i, with);
}
}
void replaceItem (final Payload find, final List<? extends Payload> withs) {
if (withs == null || withs.size() < 1) return;
if (withs.size() < 2) {
replaceItem(find, withs.get(0));
return;
}
for (int i = 0; i < this.payloads.size(); i++) {
if (find.equals(this.payloads.get(i))) {
this.payloads.set(i, withs.get(0));
for (int x = 1; x < withs.size(); x++) {
this.payloads.add(i + x, withs.get(x));
}
break;
}
}
}
void removeItem (final Payload payload) {
this.payloads.remove(payload);
}
public int size () {
return this.payloads.size();
}
public Payload getPayload (final int index) {
return this.payloads.get(index);
}
public List<Payload> getPayloads () {
return this.payloads;
}
@Override
public String toString () {
return new StringBuilder("PayloadList{")
.append(this.payloads)
.append("}").toString();
}
}