/** * */ package org.goko.core.gcode.rs274ngcv3.jogl.internal; import java.util.Date; import org.goko.core.common.exception.GkException; import org.goko.core.controller.IGCodeContextProvider; import org.goko.core.controller.event.IGCodeContextListener; import org.goko.core.gcode.execution.ExecutionToken; import org.goko.core.gcode.rs274ngcv3.IRS274NGCService; import org.goko.core.gcode.rs274ngcv3.context.GCodeContext; import org.goko.core.log.GkLog; /** * @author Psyko * @date 10 juil. 2016 */ public class BaseGCodeContextProvider extends LinkedGCodeContextProvider implements IGCodeContextListener<GCodeContext> { private static final GkLog LOG = GkLog.getLogger(BaseGCodeContextProvider.class); /** The wrapped provider */ private IGCodeContextProvider<GCodeContext> baseContextProvider; /** * @param previous * @param token * @param gcodeService */ public BaseGCodeContextProvider(IGCodeContextProvider<GCodeContext> baseContextProvider, ExecutionToken token, IRS274NGCService gcodeService) { super(null, token, gcodeService); this.baseContextProvider = baseContextProvider; setUpdateDate(new Date()); baseContextProvider.addObserver(this); } /** (inheritDoc) * @see org.goko.core.gcode.rs274ngcv3.jogl.internal.LinkedGCodeContextProvider#computeGCodeContext() */ @Override protected void computeGCodeContext() { try { if(getCachedContext() == null){ setCachedContext(baseContextProvider.getGCodeContext()); } } catch (GkException e) { LOG.error(e); } } /** (inheritDoc) * @see org.goko.core.controller.event.IGCodeContextListener#onGCodeContextEvent(org.goko.core.gcode.element.IGCodeContext) */ @Override public void onGCodeContextEvent(GCodeContext context) { setUpdateDate(new Date()); setCachedContext(new GCodeContext(context)); } }