package com.company.sdo.po;
import java.io.FileInputStream;
import java.util.List;
import commonj.sdo.ChangeSummary;
import commonj.sdo.DataObject;
import commonj.sdo.helper.XMLDocument;
import commonj.sdo.helper.XMLHelper;
public class ReviewPO {
public static void main(String[] args) throws Exception {
Util.definePOTypes();
FileInputStream fis = new FileInputStream(Constants.PO_PROCESSED_XML);
//1. 装载要处理的订购单
XMLDocument xmlDoc = XMLHelper.INSTANCE.load(fis);
DataObject purchaseOrder = xmlDoc.getRootObject();
//2. 显示被编辑的订购单的信息
System.out.println();
System.out.println("---received purchase order information---");
System.out.println("Order date: " + purchaseOrder.get("orderDate"));
System.out.println("Order comment: " + purchaseOrder.get("comment"));
DataObject shipTo = purchaseOrder.getDataObject("shipTo");
System.out.println("Ship to name: ");
Util.printDataObject(shipTo,1);
DataObject billTo = purchaseOrder.getDataObject("billTo");
System.out.println("Bill to name: ");
Util.printDataObject(billTo,1);
DataObject items = purchaseOrder.getDataObject("items");
List itemList = items.getList("item");
System.out.println("Ordered items: ");
for (int i = 0; i < itemList.size(); i++) {
DataObject item = (DataObject) itemList.get(i);
System.out.println("\tItem " + (i+1) + " :" );
Util.printDataObject(item,2);
}
//3. 显示了第二阶段的数据变化
System.out.println();
System.out.println("---review changes in purchase order ---");
ChangeSummary chngSum = purchaseOrder.getChangeSummary();
Util.printChangeSummary(chngSum);
//4. 取消第二阶段的所有变化
System.out.println();
System.out.println("---action taken after reviewing the changes---");
System.out.println("\t###undo all changes###");
chngSum.undoChanges();
//5. 编辑订购单的原始版本
System.out.println();
System.out.println("---changes made in purchase order review---");
chngSum.beginLogging();
billTo.set("name", "Alice Smith");
chngSum.endLogging();
//6. 将新的变化输出到系统控制台
Util.printChangeSummary(chngSum);
//7. 将改变记录保存到一个XML文件中
Util.storeXML(purchaseOrder,"purchaseOrder", Constants.PO_REVIEWED_XML);
}
}