package com.skatestown.services;

import org.w3c.dom.Document;
import org.apache.axis.MessageContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import com.skatestown.data.PO;
import com.skatestown.data.Invoice;
import com.skatestown.backend.ProductDB;
import com.skatestown.backend.POProcessor;
import com.skatestown.xml.Serializer;
import com.skatestown.xml.Deserializer;
import bws.BookUtil;

/**
 * Usuga do skadania zamwie.
 */
public class POSubmission {
   /**
    * Wysya zamwienie i generuje faktur.
    */
   public document doSubmission(MessageContext msgContext, Document inDoc) throw Exception
   {
      // Utworzenie zamwienia na podstawie dokumentu XML
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      PO po = Deserializer.createPO(inDoc.getDocumentElement());

      // Wczytanie bazy danych produktw
      ProductDB db = BookUtil.getProductDB(msgContext);

      // Wygenerowanie faktury na podstawie zamwienia
      POProcessor processor = new POProcessor(db);
      Invoice invoice = processor.processPO(po);

      // Serializacja faktury do XML-a
      Document newDoc = Serializer.writeInvoice(builder, invoice);

      return newDoc;
	}
}
