/*
 * ColorWriter.java
 *
 */

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

/**
 * PropertyWriter para la propiedades de la clase java.awt.Color
 * @author raul
 */
public class ColorWriter implements PropertyWriter{
    
    /**
     * Crea una nueva instancia de la clase
     */
    public ColorWriter() {
    }
    
    /**
     * Devuelve la clase correspondiente a java.awt.Color
     */
    public Class getTypeProperty() {
        return java.awt.Color.class;
    }
    
    /**
     * Escribe el objeto oValue (java.awt.Color) a la estructura
     * oProperty. Obtiene los tres compomentes RGB del color
     * y los escribe como Strings.
     * @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{
        java.awt.Color oColor = (java.awt.Color) oValue;
        oProperty.setType("object");
        oProperty.setPropertyClass("java.awt.Color");
        PropertyType.ParamType oParam = oFactory.createPropertyTypeParamType();
        oParam.setParamClass("java.lang.Integer");
        oParam.setParamName("RED");
        oParam.setValue(String.valueOf(oColor.getRed()));
        oProperty.getParam().add(oParam);
        oParam = oFactory.createPropertyTypeParamType();
        oParam.setParamClass("java.lang.Integer");
        oParam.setParamName("GREEN");
        oParam.setValue(String.valueOf(oColor.getGreen()));
        oProperty.getParam().add(oParam);
        oParam = oFactory.createPropertyTypeParamType();
        oParam.setParamClass("java.lang.Integer");
        oParam.setParamName("BLUE");
        oParam.setValue(String.valueOf(oColor.getBlue()));
        oProperty.getParam().add(oParam);
    }
}
