001/**
002 * PrimitiveProduction.java
003 * 
004 * Copyright (c) 2004-2012, Nicole C. Tedesco. All rights reserved.
005 * 
006 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
007 * use this file except in compliance with the License. You may obtain a copy of
008 * the License at:
009 * 
010 * http://www.apache.org/licenses/LICENSE-2.0
011 * 
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
014 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
015 * License for the specific language governing permissions and limitations under
016 * the License.
017 */
018
019package net.sf.jaccumulator.lex;
020
021import java.math.BigDecimal;
022import java.math.BigInteger;
023
024import net.sf.jaccumulator.ControlIntention;
025import net.sf.jaccumulator.primitives.SealedPrimitive;
026import net.sf.jaccumulator.reals.SealedReal;
027import net.sf.jaccumulator.scalars.SealedScalar;
028import net.sf.jaccumulator.texts.SealedText;
029
030/**
031 * A <b>production</b> is an event processor associated with both a
032 * {@link Guard} and an {@link Action}
033 * 
034 * @since JAccumulator 4.0
035 * @author Nicole Tedesco (<a
036 *         href="mailto:nicole@tedesco.name">nicole@tedesco.name</a>)
037 */
038public class PrimitiveProduction<MODEL>
039    implements
040        PrimitiveAction<MODEL>,
041        PrimitiveGuard<MODEL>
042{
043    final PrimitiveAction<MODEL> _theAction;
044    final PrimitiveGuard<MODEL> _theGuard;
045
046    public PrimitiveProduction(
047        final PrimitiveGuard<MODEL> aGuard,
048        final PrimitiveAction<MODEL> anAction )
049    {
050        this._theGuard = aGuard;
051        this._theAction = anAction;
052    }
053
054    @Override
055    public boolean acceptNull( final MODEL aModel )
056    {
057        return this.getGuard().acceptNull(aModel);
058    }
059
060    @Override
061    public boolean acceptPrimitive(
062        final SealedPrimitive<?> aSignal,
063        final MODEL aModel )
064    {
065        return this.getGuard().acceptPrimitive(aSignal, aModel);
066    }
067
068    @Override
069    public boolean acceptReal( final BigDecimal aSignal, final MODEL aModel )
070    {
071        return this.getGuard().acceptReal(aSignal, aModel);
072    }
073
074    @Override
075    public boolean acceptReal( final BigInteger aSignal, final MODEL aModel )
076    {
077        return this.getGuard().acceptReal(aSignal, aModel);
078    }
079
080    @Override
081    public boolean acceptReal( final SealedReal<?> aSignal, final MODEL aModel )
082    {
083        return this.getGuard().acceptReal(aSignal, aModel);
084    }
085
086    @Override
087    public boolean acceptScalar( final boolean aSignal, final MODEL aModel )
088    {
089        return this.getGuard().acceptScalar(aSignal, aModel);
090    }
091
092    @Override
093    public boolean acceptScalar( final byte aSignal, final MODEL aModel )
094    {
095        return this.getGuard().acceptScalar(aSignal, aModel);
096    }
097
098    @Override
099    public boolean acceptScalar( final char aSignal, final MODEL aModel )
100    {
101        return this.getGuard().acceptScalar(aSignal, aModel);
102    }
103
104    @Override
105    public boolean acceptScalar( final double aSignal, final MODEL aModel )
106    {
107        return this.getGuard().acceptScalar(aSignal, aModel);
108    }
109
110    @Override
111    public boolean acceptScalar( final float aSignal, final MODEL aModel )
112    {
113        return this.getGuard().acceptScalar(aSignal, aModel);
114    }
115
116    @Override
117    public boolean acceptScalar( final int aSignal, final MODEL aModel )
118    {
119        return this.getGuard().acceptScalar(aSignal, aModel);
120    }
121
122    @Override
123    public boolean acceptScalar( final long aSignal, final MODEL aModel )
124    {
125        return this.getGuard().acceptScalar(aSignal, aModel);
126    }
127
128    @Override
129    public boolean acceptScalar(
130        final SealedScalar<?> aSignal,
131        final MODEL aModel )
132    {
133        return this.getGuard().acceptScalar(aSignal, aModel);
134    }
135
136    @Override
137    public boolean acceptScalar( final short aSignal, final MODEL aModel )
138    {
139        return this.getGuard().acceptScalar(aSignal, aModel);
140    }
141
142    @Override
143    public boolean acceptText( final CharSequence aSignal, final MODEL aModel )
144    {
145        return this.getGuard().acceptText(aSignal, aModel);
146    }
147
148    @Override
149    public boolean acceptText( final SealedText<?> aSignal, final MODEL aModel )
150    {
151        return this.getGuard().acceptText(aSignal, aModel);
152    }
153
154    @Override
155    public boolean acceptText( final String aSignal, final MODEL aModel )
156    {
157        return this.getGuard().acceptText(aSignal, aModel);
158    }
159
160    public final PrimitiveAction<MODEL> getAction()
161    {
162        return this._theAction;
163    }
164
165    @Override
166    public Logic getChildConjunction()
167    {
168        return this.getGuard().getChildConjunction();
169    }
170
171    public final PrimitiveGuard<MODEL> getGuard()
172    {
173        return this._theGuard;
174    }
175
176    @Override
177    public NullGuard<MODEL> getNullGuardAt( final int anIndex )
178        throws IndexOutOfBoundsException
179    {
180        return this.getGuard().getNullGuardAt(anIndex);
181    }
182
183    @Override
184    public int getNullGuardChildCount()
185    {
186        return this.getGuard().getNullGuardChildCount();
187    }
188
189    @Override
190    public PrimitiveGuard<MODEL> getPrimitiveGuardAt( final int anIndex )
191        throws IndexOutOfBoundsException
192    {
193        return this.getGuard().getPrimitiveGuardAt(anIndex);
194    }
195
196    @Override
197    public int getPrimitiveGuardChildCount()
198    {
199        return this.getGuard().getPrimitiveGuardChildCount();
200    }
201
202    @Override
203    public RealGuard<MODEL> getRealGuardAt( final int anIndex )
204        throws IndexOutOfBoundsException
205    {
206        return this.getGuard().getRealGuardAt(anIndex);
207    }
208
209    @Override
210    public int getRealGuardChildCount()
211    {
212        return this.getGuard().getRealGuardChildCount();
213    }
214
215    @Override
216    public ScalarGuard<MODEL> getScalarGuardAt( final int anIndex )
217        throws IndexOutOfBoundsException
218    {
219        return this.getGuard().getScalarGuardAt(anIndex);
220    }
221
222    @Override
223    public int getScalarGuardChildCount()
224    {
225        return this.getGuard().getScalarGuardChildCount();
226    }
227
228    @Override
229    public TextGuard<MODEL> getTextGuardAt( final int anIndex )
230        throws IndexOutOfBoundsException
231    {
232        return this.getGuard().getTextGuardAt(anIndex);
233    }
234
235    @Override
236    public int getTextGuardChildCount()
237    {
238        return this.getGuard().getTextGuardChildCount();
239    }
240
241    @Override
242    public boolean isCompositeAction()
243    {
244        return this.getAction().isCompositeAction();
245    }
246
247    @Override
248    public boolean isCompositeGuard()
249    {
250        return this.getGuard().isCompositeGuard();
251    }
252
253    @Override
254    public boolean isSimpleAction()
255    {
256        return this.getAction().isCompositeAction();
257    }
258
259    @Override
260    public boolean isSimpleGuard()
261    {
262        return this.getGuard().isCompositeGuard();
263    }
264
265    @Override
266    public ControlIntention reactToNull( final MODEL aModel )
267    {
268        return this.getAction().reactToNull(aModel);
269    }
270
271    @Override
272    public ControlIntention reactToPrimitive(
273        final SealedPrimitive<?> aSignal,
274        final MODEL aModel )
275    {
276        return this.getAction().reactToPrimitive(aSignal, aModel);
277    }
278
279    @Override
280    public ControlIntention reactToReal(
281        final BigDecimal aSignal,
282        final MODEL aModel )
283    {
284        return this.getAction().reactToReal(aSignal, aModel);
285    }
286
287    @Override
288    public ControlIntention reactToReal(
289        final BigInteger aSignal,
290        final MODEL aModel )
291    {
292        return this.getAction().reactToReal(aSignal, aModel);
293    }
294
295    @Override
296    public ControlIntention reactToReal(
297        final SealedReal<?> aSignal,
298        final MODEL aModel )
299    {
300        return this.getAction().reactToReal(aSignal, aModel);
301    }
302
303    @Override
304    public ControlIntention reactToScalar(
305        final boolean aSignal,
306        final MODEL aModel )
307    {
308        return this.getAction().reactToScalar(aSignal, aModel);
309    }
310
311    @Override
312    public ControlIntention reactToScalar(
313        final byte aSignal,
314        final MODEL aModel )
315    {
316        return this.getAction().reactToScalar(aSignal, aModel);
317    }
318
319    @Override
320    public ControlIntention reactToScalar(
321        final char aSignal,
322        final MODEL aModel )
323    {
324        return this.getAction().reactToScalar(aSignal, aModel);
325    }
326
327    @Override
328    public ControlIntention reactToScalar(
329        final double aSignal,
330        final MODEL aModel )
331    {
332        return this.getAction().reactToScalar(aSignal, aModel);
333    }
334
335    @Override
336    public ControlIntention reactToScalar(
337        final float aSignal,
338        final MODEL aModel )
339    {
340        return this.getAction().reactToScalar(aSignal, aModel);
341    }
342
343    @Override
344    public ControlIntention reactToScalar( final int aSignal, final MODEL aModel )
345    {
346        return this.getAction().reactToScalar(aSignal, aModel);
347    }
348
349    @Override
350    public ControlIntention reactToScalar(
351        final long aSignal,
352        final MODEL aModel )
353    {
354        return this.getAction().reactToScalar(aSignal, aModel);
355    }
356
357    @Override
358    public ControlIntention reactToScalar(
359        final SealedScalar<?> aSignal,
360        final MODEL aModel )
361    {
362        return this.getAction().reactToScalar(aSignal, aModel);
363    }
364
365    @Override
366    public ControlIntention reactToScalar(
367        final short aSignal,
368        final MODEL aModel )
369    {
370        return this.getAction().reactToScalar(aSignal, aModel);
371    }
372
373    @Override
374    public ControlIntention reactToText(
375        final CharSequence aSignal,
376        final MODEL aModel )
377    {
378        return this.getAction().reactToText(aSignal, aModel);
379    }
380
381    @Override
382    public ControlIntention reactToText(
383        final SealedText<?> aSignal,
384        final MODEL aModel )
385    {
386        return this.getAction().reactToText(aSignal, aModel);
387    }
388
389    @Override
390    public ControlIntention reactToText(
391        final String aSignal,
392        final MODEL aModel )
393    {
394        return this.getAction().reactToText(aSignal, aModel);
395    }
396
397    @Override
398    public final String toString()
399    {
400        return "[" + this.getGuard() + "] " + this.getAction();
401    }
402}