package policy.price;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import foundation.json.IJSONProvider;
|
import foundation.json.IJSONWriter;
|
|
public class PriceResult implements IJSONProvider {
|
|
private String skuId;
|
private boolean includeNotAlive;
|
private PriceLine baseLine;
|
private List<PriceLine> domainLines;
|
|
|
public PriceResult(String skuId, boolean includeNotAlive) {
|
this.skuId = skuId;
|
this.includeNotAlive = includeNotAlive;
|
domainLines = new ArrayList<PriceLine>();
|
}
|
|
public void setBasePrice(PriceLine baseLine) {
|
this.baseLine = baseLine;
|
}
|
|
public void addPriceList(List<PriceLine> prices) {
|
domainLines.addAll(prices);
|
}
|
|
@Override
|
public void writeJSON(IJSONWriter writer) {
|
writer.beginObject(skuId);
|
|
//1.
|
List<PriceLine> topActives = getActives();
|
writer.beginArray("actives");
|
|
for (PriceLine line: topActives) {
|
line.writeJSON(writer);
|
}
|
|
writer.endArray();
|
|
//2.
|
writer.beginArray("lines");
|
|
if (baseLine != null) {
|
baseLine.writeJSON(writer);
|
}
|
|
for (PriceLine line: domainLines) {
|
if (!line.isAlive() && !includeNotAlive) {
|
continue;
|
}
|
|
line.writeJSON(writer);
|
}
|
|
writer.endArray();
|
|
writer.endObject();
|
}
|
|
private List<PriceLine> getActives() {
|
PriceSelector selector = new PriceSelector();
|
|
//1.
|
for (PriceLine line: domainLines) {
|
if (!line.isAlive()) {
|
continue;
|
}
|
|
selector.loadOne(line);
|
}
|
|
//2.
|
selector.loadOne(baseLine);
|
|
//3.
|
return selector.getPriceList();
|
}
|
|
}
|