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); } }