/**
*
*/
package org.goko.gcode.rs274ngcv3.xml.exporter.modifier;
import org.goko.core.common.exception.GkException;
import org.goko.core.gcode.rs274ngcv3.element.GCodeProvider;
import org.goko.core.gcode.rs274ngcv3.element.IModifier;
import org.goko.core.workspace.service.IExporter;
import org.goko.core.workspace.service.IMapperService;
import org.goko.gcode.rs274ngcv3.xml.bean.XmlGCodeModifier;
/**
* @author PsyKo
* @date 13 d�c. 2015
*/
public abstract class AbstractModifierExporter<M extends IModifier<GCodeProvider>, X extends XmlGCodeModifier> implements IExporter<M, X>{
protected void exportAbstract(X output, M input, IMapperService mapperService) throws GkException {
output.setEnabled(input.isEnabled());
output.setOrder(input.getOrder());
}
/** (inheritDoc)
* @see org.goko.core.workspace.service.IExporter#export(java.lang.Object, org.goko.core.workspace.service.IMapperService)
*/
@Override
public final X export(M input, IMapperService mapperService) throws GkException {
X output = createOutputInstance();
exportAbstract(output, input, mapperService);
exportModifierData(output, input, mapperService);
return output;
}
protected abstract void exportModifierData(X output, M input, IMapperService mapperService) throws GkException;
/**
* @return an instance of the output object
*/
protected abstract X createOutputInstance();
}