001    package org.kuali.ole;
002    
003    import com.thoughtworks.xstream.XStream;
004    import org.kuali.ole.pojo.edi.*;
005    
006    import java.util.Arrays;
007    
008    
009    /**
010     * Created by IntelliJ IDEA.
011     * User: palanivel
012     * Date: 3/2/12
013     * Time: 8:11 PM
014     * To change this template use File | Settings | File Templates.
015     */
016    public class OLETranscationalRecordGenerator {
017    
018        public String toXml(EDIOrder ediOrder) {
019            EDIOrders ediOrders = new EDIOrders();
020            ediOrders.setOrders(Arrays.asList(ediOrder));
021            String xml = toXml(ediOrders);
022            return xml;
023        }
024    
025        public String toXml(EDIOrders ediOrders) {
026            XStream xStream = intXStream();
027            String order = xStream.toXML(ediOrders);
028            return order;
029        }
030    
031        public EDIOrders fromXml(String requestXML) {
032            XStream xStream = intXStream();
033            return (EDIOrders) xStream.fromXML(requestXML);
034        }
035    
036        private XStream intXStream() {
037            XStream xStream = new XStream();
038            xStream.alias("orders", EDIOrders.class);
039            xStream.alias("order", EDIOrder.class);
040            xStream.addImplicitCollection(EDIOrders.class, "orders",EDIOrder.class);
041    
042            xStream.aliasField("sendersandreceiversidentification", EDIOrder.class, "senderAndReceiver");
043            xStream.aliasField("sendersandreceiversconstant", SenderAndReceiver.class, "sendersAndReceiversConstant");
044            xStream.aliasField("code", SendersAndReceiversConstant.class, "code");
045            xStream.aliasField("value", SendersAndReceiversConstant.class, "value");
046            xStream.aliasField("senderinformation", SenderAndReceiver.class, "senderInformation");
047            xStream.aliasField("senderid", SenderInformation.class, "senderId");
048            xStream.aliasField("senderidtype", SenderInformation.class, "senderIdType");
049            xStream.aliasField("receiverinformation", SenderAndReceiver.class, "receiverInformation");
050            xStream.aliasField("receiverid", ReceiverInformation.class, "receiverId");
051            xStream.aliasField("receiveridtype", ReceiverInformation.class, "receiverIdType");
052            xStream.aliasField("schedule", SenderAndReceiver.class, "schedule");
053            xStream.aliasField("preparationdate", Schedule.class, "preparationDate");
054            xStream.aliasField("preparationtime", Schedule.class, "preparationTime");
055            xStream.aliasField("interchangecontrolref", SenderAndReceiver.class, "interChangeControlReference");
056    
057            xStream.aliasField("messageheader", EDIOrder.class, "messageHeader");
058            xStream.aliasField("interchangecontrolref", MessageHeader.class, "interchangeControlReference");
059            xStream.aliasField("messagetypeinformation", MessageHeader.class, "messsageTypeInformation");
060            xStream.aliasField("messagetypeid", MesssageTypeInformation.class, "messageTypeId");
061            xStream.aliasField("constant1", MesssageTypeInformation.class, "constant1");
062            xStream.aliasField("constant2", MesssageTypeInformation.class, "constant2");
063            xStream.aliasField("constant3", MesssageTypeInformation.class, "constant3");
064            xStream.aliasField("constant4", MesssageTypeInformation.class, "constant4");
065    
066            xStream.aliasField("message", EDIOrder.class, "message");
067            xStream.aliasField("messagebeginning", Message.class, "messageBeginning");
068            xStream.aliasField("order", MessageBeginning.class, "messageBeginningOrder");
069            xStream.aliasField("interchangecontrolref", MessageBeginning.class, "messageBeginningInterchangeControlReference");
070            xStream.aliasField("codelistagency", MessageBeginning.class, "messageBeginningCodeListAgency");
071    
072            xStream.aliasField("messagecreationinfo", Message.class, "messageCreationInformation");
073            xStream.aliasField("details", MessageCreationInformation.class, "messageCreationInfoDetails");
074            xStream.aliasField("constant", MessageCreationInfoDetails.class, "messageCreationInfoConstant");
075            xStream.aliasField("date", MessageCreationInfoDetails.class, "messageCreationInfoDate");
076            xStream.aliasField("dateformat", MessageCreationInfoDetails.class, "messageCreationInfoDateFormat");
077    
078            xStream.aliasField("buyerpartyqualifier", Message.class, "buyerPartyQualifier");
079            xStream.aliasField("buyer", BuyerPartyQualifier.class, "buyer");
080            xStream.aliasField("buyerinfo", BuyerPartyQualifier.class, "buyerInformation");
081            xStream.aliasField("codedidentification", BuyerInformation.class, "buyerCodeIdentification");
082            xStream.aliasField("partyidentificationcode", BuyerInformation.class, "buyerPartyIdentificationCode");
083            xStream.aliasField("codelistagency", BuyerInformation.class, "buyerCodeListAgency");
084    
085            xStream.aliasField("reference", Message.class, "messageReference");
086            xStream.aliasField("partydetails", MessageReference.class, "partyDetails");
087            xStream.aliasField("additionalpartyidentification", PartyDetails.class, "additionalPartyIdentification");
088            xStream.aliasField("partyname", PartyDetails.class, "partyName");
089    
090            xStream.aliasField("supplierpartyqualifier", Message.class, "supplierPartyQualifier");
091            xStream.aliasField("supplier", SupplierPartyQualifier.class, "supplier");
092            xStream.aliasField("supplierinfo", SupplierPartyQualifier.class, "supplierInformation");
093            xStream.aliasField("codedidentification", SupplierInformation.class, "supplierCodeIdentification");
094            xStream.aliasField("partyidentificationcode", SupplierInformation.class, "supplierPartyIdentificationCode");
095            xStream.aliasField("codelistagency", SupplierInformation.class, "supplierCodeListAgency");
096    
097            xStream.aliasField("currencydetails", Message.class, "currencyDetails");
098            xStream.aliasField("supplierinfo", CurrencyDetails.class, "currencyDetailsSupplierInformation");
099            xStream.aliasField("defaultcurrency", CurrencyDetailsSupplierInformation.class, "defaultCurrency");
100            xStream.aliasField("currencytype", CurrencyDetailsSupplierInformation.class, "currencyType");
101            xStream.aliasField("ordercurrency", CurrencyDetailsSupplierInformation.class, "orderCurrency");
102    
103            xStream.alias("lineitemOrder", LineItemOrder.class);
104            xStream.alias("lineitem", LineItem.class);
105            xStream.alias("articlenumber", LineItemArticleNumber.class);
106            xStream.alias("productfunction", ProductFunction.class);
107            xStream.alias("articlenumber", ProductArticleNumber.class);
108            xStream.alias("itemdescription", ItemDescription.class);
109            xStream.alias("quantityinformation", QuantityInformation.class);
110            xStream.alias("quantity", Qunatity.class);
111            xStream.alias("priceinformation", PriceInformation.class);
112            xStream.alias("price", ItemPrice.class);
113            xStream.alias("referenceinformation", BuyerReferenceInformation.class);
114            xStream.alias("reference", BuyerLineItemReference.class);
115            xStream.alias("suppliersreferenceinformation", SupplierReferenceInformation.class);
116            xStream.alias("suppliersreference", SupplierLineItemReference.class);
117            xStream.alias("fundnumberreference", FundNumberReference.class);
118            xStream.alias("buyers", BuyersFundNumberReference.class);
119            xStream.alias("note",FreeTextNotes.class);
120            xStream.alias("transportstagequalifier", TransportStageQualifier.class);
121    
122            xStream.addImplicitCollection(EDIOrder.class, "lineItemOrder",LineItemOrder.class);
123            xStream.addImplicitCollection(LineItemOrder.class, "lineItem",LineItem.class);
124    
125            xStream.aliasField("sequencenumber",LineItem.class,"sequenceNumber");
126            xStream.aliasField("itemnumberid",LineItem.class,"itemNumberId");
127    
128            xStream.addImplicitCollection(LineItem.class, "lineItemArticleNumber",LineItemArticleNumber.class);
129    
130            xStream.aliasField("isbn",LineItemArticleNumber.class,"lineItemIsbn");
131            xStream.aliasField("itemnumbertype",LineItemArticleNumber.class,"lineItemNumberType");
132    
133            xStream.addImplicitCollection(LineItemOrder.class, "productFunction",ProductFunction.class);
134    
135            xStream.aliasField("productid",ProductFunction.class,"productId");
136    
137            xStream.addImplicitCollection(ProductFunction.class, "productArticleNumber",ProductArticleNumber.class);
138    
139            xStream.aliasField("isbn",ProductArticleNumber.class,"productIsbn");
140            xStream.aliasField("itemnumbertype",ProductArticleNumber.class,"productItemNumberType");
141    
142            xStream.addImplicitCollection(LineItemOrder.class, "itemDescriptionList",ItemDescription.class);
143    
144            xStream.aliasField("text",ItemDescription.class,"text");
145            xStream.aliasField("itemcharacteristiccode",ItemDescription.class,"itemCharacteristicCode");
146            xStream.aliasField("data",ItemDescription.class,"data");
147    
148            xStream.addImplicitCollection(LineItemOrder.class, "quantityInformation",QuantityInformation.class);
149            xStream.addImplicitCollection(QuantityInformation.class, "qunatity",Qunatity.class);
150    
151            xStream.aliasField("constant",Qunatity.class,"quantityConstant");
152            xStream.aliasField("quantity",Qunatity.class,"quantity");
153    
154            xStream.addImplicitCollection(LineItemOrder.class, "priceInformation",PriceInformation.class);
155            xStream.addImplicitCollection(PriceInformation.class, "itemPrice",ItemPrice.class);
156    
157            xStream.aliasField("grossprice",ItemPrice.class,"grossPrice");
158            xStream.aliasField("price",ItemPrice.class,"price");
159    
160            xStream.addImplicitCollection(LineItemOrder.class, "buyerReferenceInformation",BuyerReferenceInformation.class);
161            xStream.addImplicitCollection(BuyerReferenceInformation.class, "buyerLineItemReference",BuyerLineItemReference.class);
162    
163            xStream.aliasField("buyersorderline",BuyerLineItemReference.class,"buyersOrderLine");
164            xStream.aliasField("orderlinenumber",BuyerLineItemReference.class,"orderLineNumber");
165    
166    
167            xStream.addImplicitCollection(LineItemOrder.class, "supplierReferenceInformation",SupplierReferenceInformation.class);
168            xStream.addImplicitCollection(SupplierReferenceInformation.class, "supplierLineItemReference",SupplierLineItemReference.class);
169    
170            xStream.aliasField("suppliersorderline",SupplierLineItemReference.class,"suppliersOrderLine");
171            xStream.aliasField("vendorreferencenumber",SupplierLineItemReference.class,"vendorReferenceNumber");
172    
173    
174            xStream.addImplicitCollection(LineItemOrder.class, "fundNumberReference",FundNumberReference.class);
175            xStream.addImplicitCollection(FundNumberReference.class, "buyersFundNumberReference",BuyersFundNumberReference.class);
176    
177            xStream.aliasField("buyersfundnumber",BuyersFundNumberReference.class,"buyersFundNumber");
178            xStream.aliasField("budgetnumber",BuyersFundNumberReference.class,"budgetNumber");
179    
180            xStream.addImplicitCollection(LineItemOrder.class, "note",FreeTextNotes.class);
181    
182            xStream.aliasField("notelineitem",FreeTextNotes.class,"noteLineItem");
183            xStream.aliasField("noteempty1",FreeTextNotes.class,"noteempty1");
184            xStream.aliasField("noteempty2",FreeTextNotes.class,"noteempty2");
185            xStream.aliasField("noteempty3",FreeTextNotes.class,"noteempty3");
186    
187    
188            xStream.addImplicitCollection(LineItemOrder.class, "transportStageQualifier",TransportStageQualifier.class);
189    
190            xStream.aliasField("transportstagequalifierconstant",TransportStageQualifier.class,"transportStageConstant");
191            xStream.aliasField("surfacemail",TransportStageQualifier.class,"surfaceMail");
192    
193    
194            xStream.aliasField("summary", LineItemOrder.class, "supplierReferenceInformation");
195            xStream.aliasField("summarysection", Summary.class, "summarySection");
196            xStream.aliasField("separatorinfo", SummarySection.class, "separatorInformation");
197    
198            xStream.alias("controlinfomation", ControlInfomation.class);
199            xStream.alias("control", Control.class);
200    
201            xStream.addImplicitCollection(Summary.class, "controlInfomation",ControlInfomation.class);
202            xStream.addImplicitCollection(ControlInfomation.class, "control",Control.class);
203    
204            xStream.aliasField("controlqualifier", Control.class, "controlQualifier");
205            xStream.aliasField("totalqtysegments", Control.class, "totalQuantitySegments");
206    
207    
208            xStream.aliasField("unt", Summary.class, "untSummary");
209            xStream.aliasField("messagesegmentsnumber", UNTSummary.class, "segmentNumber");
210            xStream.aliasField("linsegmentstotal", UNTSummary.class, "linSegmentTotal");
211            xStream.addImplicitCollection(EDIOrders.class, "orders");
212            return xStream;
213        }
214    
215    }