package org.goko.core.gcode.rs274ngcv3.element;
import java.util.List;
import org.goko.core.common.exception.GkException;
import org.goko.core.common.exception.GkTechnicalException;
import org.goko.core.gcode.element.GCodeLine;
import org.goko.core.gcode.element.IGCodeProvider;
import org.goko.core.gcode.element.IGCodeProviderSource;
import org.goko.core.gcode.element.validation.IValidationElement;
import org.goko.core.gcode.element.validation.ValidationTargetAdapter;
public class StackableGCodeProviderRoot extends GCodeProvider implements IGCodeProvider, IStackableGCodeProvider{
private IGCodeProvider parent;
private IStackableGCodeProvider child;
private ValidationTargetAdapter validationTargetAdapter;
/**
* Constructor
* @param parent the parent IGCodeProvider
*/
public StackableGCodeProviderRoot(IGCodeProvider parent) {
super();
this.parent = parent;
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getLines()
*/
@Override
public List<GCodeLine> getLines() throws GkException {
return parent.getLines();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getLinesCount()
*/
@Override
public int getLinesCount() throws GkException {
return parent.getLinesCount();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#addLine(org.goko.core.gcode.element.GCodeLine)
*/
@Override
public void addLine(GCodeLine line) throws GkException {
throw new GkTechnicalException("Cannot add line to existing GCodeProvider");
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getId()
*/
@Override
public Integer getId() {
return parent.getId();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#setId(java.lang.Integer)
*/
@Override
public void setId(Integer id) {
parent.setId(id);
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getLine(java.lang.Integer)
*/
@Override
public GCodeLine getLine(Integer idLine) throws GkException {
return parent.getLine(idLine);
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getLineAtIndex(java.lang.Integer)
*/
@Override
public GCodeLine getLineAtIndex(Integer indexLine) throws GkException {
return parent.getLineAtIndex(indexLine);
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getCode()
*/
@Override
public String getCode() {
return parent.getCode();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#setCode(java.lang.String)
*/
@Override
public void setCode(String code) {
parent.setCode(code);
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#update()
*/
@Override
public void update() throws GkException {
// Nothing
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.IStackableGCodeProvider#getIdModifier()
*/
@Override
public Integer getIdModifier() {
return null;
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.IStackableGCodeProvider#getParent()
*/
@Override
public IStackableGCodeProvider getParent() {
return null;
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.IStackableGCodeProvider#setParent(org.goko.core.gcode.rs274ngcv3.element.IStackableGCodeProvider)
*/
@Override
public void setParent(IStackableGCodeProvider paarent) {}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getSource()
*/
@Override
public IGCodeProviderSource getSource() {
return parent.getSource();
}
/**
* @param parent the parent to set
*/
public void setParent(IGCodeProvider parent) {
this.parent = parent;
}
/**
* @return the child
*/
public IStackableGCodeProvider getChild() {
return child;
}
/**
* @param child the child to set
*/
public void setChild(IStackableGCodeProvider child) {
this.child = child;
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#getValidationElements()
*/
@Override
public List<IValidationElement> getValidationElements() {
return parent.getValidationElements();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#hasErrors()
*/
@Override
public boolean hasErrors() {
return parent.hasErrors();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#hasWarnings()
*/
@Override
public boolean hasWarnings() {
return parent.hasWarnings();
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#clearValidationElements()
*/
@Override
public void clearValidationElements() {
parent.clearValidationElements();
}
// voir comment gerer la hierarchie des erreurs.
// Pour les modifiers :
// - Ajouter un validation element ne devrait pas l'ajouter au parent
// - Récupérer la liste des validations element ramène les courants + ceux des parents
// Pour le root
// - redirection pure ?
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.element.GCodeProvider#addValidationElement(org.goko.core.gcode.element.validation.IValidationElement)
*/
@Override
public void addValidationElement(IValidationElement element) {
parent.addValidationElement(element);
}
}