/*
 * PropertyWriter.java
 *
 */

package com.uvigo.tMaestro.SCOCreator.tool.optionGenerator;
import com.uvigo.tMaestro.SCO.options.PropertyType;
import com.uvigo.tMaestro.SCO.options.ObjectFactory;

/**
 * Esta interfaz se define para permitir la creacion de elementos que sen capaces
 * de expresar una propiedad (Objeto Java) en funcion de uno o varios parametros (de tipo String)
 * Estos parametros son los que se pondran en el fichero de configuracion .xml correspondiente.
 * @author raul
 */
public interface PropertyWriter {
    /**
     * La clase Java de la propiedad para la que se ha disenado este PropertyWriter
     * @return La clase
     */
    public Class getTypeProperty();
    
    /**
     * El metodo encargado de escribir la propiedad en la estructura PropertyType
     * @param oProperty La Propiedad en la que escribir los parametros
     * @param oValue El Objecto java correspondiente a la propiedad
     * @param oFactory La factoria que permite crear las estructuras que seran portadas a .xml
     * @param throws javax.xml.bind.JAXBException SI se produce algun error al crear las estructuras
     */
    public void writeProperty(PropertyType oProperty,Object oValue,ObjectFactory oFactory) throws javax.xml.bind.JAXBException;
}
