/*
 * ScrivoXmlFile.java
 *
 * Autori : Clementi Diana, De Santis Filippo 
 * Esame TWI, Scienze dell'Informazione
 *
 * Questo codice è sottoposto ad una licenza Creative Common:
 * Riferimento: http://creativecommons.org/licenses/by/2.5/
 * Legal Code : http://creativecommons.org/licenses/by/2.5/legalcode
 */

package server;
import java.io.*;
import javax.xml.parsers.*; // DocumentBuilderFactory, DocumentBuilder
import org.w3c.dom .*; // Document
import javax.xml.transform.*; // Transformer, TransformerFactory, TransformerException
import javax.xml.transform.dom.*; // DOMSource
import javax.xml.transform.stream.*; // Streamresult

/** Classe per la scrittura sui file XML
 *  
 *  @author Gruppo 117 
 *  @author desantis@csr.unibo.it - Filippo De Santis - matr. 140215
 *  @author clementi@csr.unibo.it - Diana Clementi - matr. 135989
 */
public class ScrivoXmlFile {
    
    private Document documento;
    private DocumentBuilder builder;
    private Transformer serializer;
    private Element argomento;
    
    /** Costruttore. Effettua le operazioni di scrittura di un Document
     *  su un file XML
     *
     *  @param  doc documento da scrivere come file XML
     *  @param  pathfile path del file su cui scrivere il Document
     *  @param pathDtdSchema path della dtd del file XML che sto scrivendo
     *  @return nessun valore di ritorno
     */
    public ScrivoXmlFile(Document doc, String pathFile, String pathDtdSchema) {
        try{
            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer();
            
            transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, pathDtdSchema); 
            
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new FileWriter(pathFile));
            transformer.transform(source, result);
            
        }catch(TransformerConfigurationException tce){
            System.out.println("Transformer Factory Error!");
            System.out.println("Message: "+ tce.getMessage());
            if(tce.getException()!=null)
                tce.getException().printStackTrace();
        }catch(TransformerException te){
            System.out.println("Transformer Error!");
            System.out.println("Message: "+ te.getMessage());
            if(te.getException()!=null)
                te.getException().printStackTrace();
        }catch(IOException ioe){
            ioe.printStackTrace();
        }
    }
}