package fr.openwide.core.wicket.more.jqplot.data.adapter; import java.util.Collection; import java.util.Locale; import java.util.Map; import org.apache.wicket.Component; import org.apache.wicket.model.IModel; import org.apache.wicket.model.IWrapModel; import nl.topicus.wqplot.data.AbstractSeries; import nl.topicus.wqplot.options.PlotOptions; import nl.topicus.wqplot.options.PlotSeries; import nl.topicus.wqplot.options.PlotTick; public abstract class ForwardingJQPlotDataAdapter<S, K, V> extends AbstractJQPlotDataAdapter<S, K, V> implements IJQPlotDataAdapter<S, K, V> { private static final long serialVersionUID = 773447284220394712L; private final IJQPlotDataAdapter<S, K, V> delegate; public ForwardingJQPlotDataAdapter(IJQPlotDataAdapter<S, K, V> delegate) { super(delegate); this.delegate = delegate; } @Override protected Collection<? extends AbstractSeries<?, V, ?>> getObject(Locale locale) { return transformOnGet(delegate.getObject(), locale); } protected Collection<? extends AbstractSeries<?, V, ?>> transformOnGet(Collection<? extends AbstractSeries<?, V, ?>> delegateObject, Locale locale) { return delegateObject; } @Override public final void setObject(Collection<? extends AbstractSeries<?, V, ?>> object) { delegate.setObject(transformOnSet(object)); } protected Collection<? extends AbstractSeries<?, V, ?>> transformOnSet(Collection<? extends AbstractSeries<?, V, ?>> setObject) { return setObject; } @Override public void configure(PlotOptions options, Map<? extends S, PlotSeries> seriesMap, Map<? extends K, PlotTick> keysMap, Locale locale) { delegate.configure(options, seriesMap, keysMap, locale); } @Override public void detach() { delegate.detach(); } @Override public void afterConfigure(PlotOptions options, Map<? extends S, PlotSeries> seriesMap, Map<? extends K, PlotTick> keysMap, Locale locale) { delegate.afterConfigure(options, seriesMap, keysMap, locale); } @Override public Collection<S> getSeries() { return delegate.getSeries(); } @Override public Collection<K> getKeys() { return delegate.getKeys(); } @Override public V getValue(S serie, K key) { return delegate.getValue(serie, key); } @Override public Collection<S> getSeriesTicks() { return delegate.getSeriesTicks(); } @Override public Collection<K> getKeysTicks() { return delegate.getKeysTicks(); } @Override public IWrapModel<Collection<? extends AbstractSeries<?, V, ?>>> wrapOnAssignment(Component component) { return new WrapModel(component); } private class WrapModel implements IWrapModel<Collection<? extends AbstractSeries<?, V, ?>>> { private static final long serialVersionUID = 6641833381429869435L; private final Component component; private final IModel<Collection<? extends AbstractSeries<?, V, ?>>> wrappedDelegate; public WrapModel(Component component) { super(); this.component = component; this.wrappedDelegate = delegate.wrapOnAssignment(component); } @Override public Collection<? extends AbstractSeries<?, V, ?>> getObject() { return ForwardingJQPlotDataAdapter.this.transformOnGet(wrappedDelegate.getObject(), component.getLocale()); } @Override public void setObject(Collection<? extends AbstractSeries<?, V, ?>> object) { wrappedDelegate.setObject(ForwardingJQPlotDataAdapter.this.transformOnSet(object)); } @Override public void detach() { wrappedDelegate.detach(); ForwardingJQPlotDataAdapter.this.detach(); } @Override public IModel<?> getWrappedModel() { return ForwardingJQPlotDataAdapter.this; } } }