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 domainLines; public PriceResult(String skuId, boolean includeNotAlive) { this.skuId = skuId; this.includeNotAlive = includeNotAlive; domainLines = new ArrayList(); } public void setBasePrice(PriceLine baseLine) { this.baseLine = baseLine; } public void addPriceList(List prices) { domainLines.addAll(prices); } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject(skuId); //1. List 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 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(); } }