001package Torello.Java.JSON;
002
003import Torello.JavaDoc.LinkJavaSource;
004import Torello.JavaDoc.StaticFunctional;
005import Torello.JavaDoc.JDHeaderBackgroundImg;
006
007import Torello.JavaDoc.IntoHTMLTable;
008import static Torello.JavaDoc.IntoHTMLTable.Background.GreenDither;
009import static Torello.JavaDoc.IntoHTMLTable.Background.BlueDither;
010
011import javax.json.Json;
012import javax.json.JsonArray;
013import javax.json.JsonString;
014import javax.json.JsonValue;
015
016import java.util.Objects;
017
018import Torello.Java.Function.IntIntTConsumer;
019import java.util.function.Consumer;
020import java.util.function.Function;
021
022import Torello.Java.JSON.JFlag;
023
024import static Torello.Java.JSON.BASIC_TYPES.BOXED;
025
026import static javax.json.JsonValue.TRUE;
027import static javax.json.JsonValue.FALSE;
028
029/**
030 * Utilities for parsing Json Array's and sending the parsed values into a Java
031 * Consumer of Boxed-Primitives.
032 * 
033 * <EMBED CLASS='external-html' DATA-FILE-ID=GLASS_FISH_NOTE>
034 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_BOXED_CONS>
035 * <EMBED CLASS='external-html' DATA-FILE-ID=JSON_BINDING_NOTE>
036 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_BOXED_CONS>
037 * 
038 *
039 * @see Json
040 * @see JsonArray
041 */
042@StaticFunctional
043@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_BOXED_CONS")
044public class RJArrIntoBoxedConsumer
045{
046    private RJArrIntoBoxedConsumer() { }
047
048    /**
049     * <EMBED CLASS=defs DATA-TYPE=Integer DATA-TYPE_LC=int DATA-METH_NAME=numeric>
050     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
051     */
052    @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Boxed-Integers")
053    @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER")
054    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
055    public static void intArr(
056            final JsonArray                 ja,
057            final int                       defaultValue,
058            final int                       FLAGS,
059            final Function<String, Integer> optionalUserParser,
060            final Consumer<Integer>         c
061        )
062    {
063        Objects.requireNonNull(c, "Consumer<Integer> parameter 'c' is null");
064
065        ProcessJsonArray.numericToJava(
066            ja,
067            // new SettingsRec<Integer, Void>
068            SETTINGS_REC_BUILDER.createForConsumers
069                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_INTEGER())
070        );
071    }
072
073    /**
074     * <EMBED CLASS=defs DATA-TYPE=Short DATA-TYPE_LC=short DATA-METH_NAME=numeric>
075     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
076     */
077    @IntoHTMLTable(background=BlueDither, title="Java-Consumer which accepts Boxed Short-Integers")
078    @LinkJavaSource(handle="BASIC_TYPES", name="SHORT")
079    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
080    public static void shortArr(
081            final JsonArray                 ja,
082            final short                     defaultValue,
083            final int                       FLAGS,
084            final Function<String, Short>   optionalUserParser,
085            final Consumer<Short>           c
086        )
087    {
088        Objects.requireNonNull(c, "Consumer<Short> parameter 'c' is null");
089
090        ProcessJsonArray.numericToJava(
091            ja,
092            // new SettingsRec<Short, Void>
093            SETTINGS_REC_BUILDER.createForConsumers
094                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_SHORT())
095        );
096    }
097
098    /**
099     * <EMBED CLASS=defs DATA-TYPE=Byte DATA-TYPE_LC=byte DATA-METH_NAME=numeric>
100     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
101     */
102    @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Boxed-Bytes")
103    @LinkJavaSource(handle="BASIC_TYPES", name="BYTE")
104    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
105    public static void byteArr(
106            final JsonArray                 ja,
107            final byte                      defaultValue,
108            final int                       FLAGS,
109            final Function<String, Byte>    optionalUserParser,
110            final Consumer<Byte>            c
111        )
112    {
113        Objects.requireNonNull(c, "Consumer<Byte> parameter 'c' is null");
114
115        ProcessJsonArray.numericToJava(
116            ja,
117            // new SettingsRec<Byte, Void>
118            SETTINGS_REC_BUILDER.createForConsumers
119                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_BYTE())
120        );
121    }
122
123    /**
124     * <EMBED CLASS=defs DATA-TYPE=Long DATA-TYPE_LC=long DATA-METH_NAME=numeric>
125     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
126     */
127    @IntoHTMLTable(background=BlueDither, title="Java-Consumer which accepts Boxed Long-Integers")
128    @LinkJavaSource(handle="BASIC_TYPES", name="LONG")
129    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
130    public static void longArr(
131            final JsonArray                 ja,
132            final long                      defaultValue,
133            final int                       FLAGS,
134            final Function<String, Long>    optionalUserParser,
135            final Consumer<Long>            c
136        )
137    {
138        Objects.requireNonNull(c, "Consumer<Long> parameter 'c' is null");
139
140        ProcessJsonArray.numericToJava(
141            ja,
142            // new SettingsRec<Long, Void>
143            SETTINGS_REC_BUILDER.createForConsumers
144                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_LONG())
145        );
146    }
147
148    /**
149     * <EMBED CLASS=defs DATA-TYPE=Double DATA-TYPE_LC=double DATA-METH_NAME=numeric>
150     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
151     */
152    @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Boxed-Doubles")
153    @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE")
154    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
155    public static void doubleArr(
156            final JsonArray                 ja,
157            final double                    defaultValue,
158            final int                       FLAGS,
159            final Function<String, Double>  optionalUserParser,
160            final Consumer<Double>          c
161        )
162    {
163        Objects.requireNonNull(c, "Consumer<Double> parameter 'c' is null");
164
165        ProcessJsonArray.numericToJava(
166            ja,
167            // new SettingsRec<Double, Void>
168            SETTINGS_REC_BUILDER.createForConsumers
169                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_DOUBLE())
170        );
171    }
172
173    /**
174     * <EMBED CLASS=defs DATA-TYPE=Float DATA-TYPE_LC=float DATA-METH_NAME=numeric>
175     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
176     */
177    @IntoHTMLTable(background=BlueDither, title="Java-Consumer which accepts Boxed-Floats")
178    @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT")
179    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
180    public static void floatArr(
181            final JsonArray                 ja,
182            final float                     defaultValue,
183            final int                       FLAGS,
184            final Function<String, Float>   optionalUserParser,
185            final Consumer<Float>           c
186        )
187    {
188        Objects.requireNonNull(c, "Consumer<Float> parameter 'c' is null");
189
190        ProcessJsonArray.numericToJava(
191            ja,
192            // new SettingsRec<Float, Void>
193            SETTINGS_REC_BUILDER.createForConsumers
194                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_FLOAT())
195        );
196    }
197
198    /**
199     * <EMBED CLASS=defs DATA-TYPE=Boolean DATA-TYPE_LC=boolean DATA-METH_NAME=boolean>
200     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
201     */
202    @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Boxed-Booleans")
203    @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN")
204    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
205    public static void booleanArr(
206            final JsonArray                 ja,
207            final boolean                   defaultValue,
208            final int                       FLAGS,
209            final Function<String, Boolean> optionalUserParser,
210            final Consumer<Boolean>         c
211        )
212    {
213        Objects.requireNonNull(c, "Consumer<Boolean> parameter 'c' is null");
214
215        ProcessJsonArray.booleanToJava(
216            ja,
217            // new SettingsRec<Boolean, Void>
218            SETTINGS_REC_BUILDER.createForConsumers
219                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_BOOLEAN())
220        );
221    }
222
223    /**
224     * <EMBED CLASS=defs DATA-TYPE=Number DATA-TYPE_LC=int DATA-METH_NAME=numeric>
225     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS>
226     */
227    @IntoHTMLTable(
228        background=BlueDither,
229        title="Java-Consumer which accepts Best-Fit Boxed-Numbers"
230    )
231    @LinkJavaSource(handle="BASIC_TYPES", name="NUMBER_REC")
232    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=5)
233    public static void numberArr(
234            final JsonArray                 ja,
235            final Number                    defaultValue,
236            final int                       FLAGS,
237            final Function<String, Number>  optionalUserParser,
238            final Consumer<Number>          c
239        )
240    {
241        Objects.requireNonNull(c, "Consumer<Number> parameter 'c' is null");
242
243        ProcessJsonArray.numericToJava(
244            ja,
245            // new SettingsRec<Number, Void>
246            SETTINGS_REC_BUILDER.createForConsumers
247                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.NUMBER_REC())
248        );
249    }
250
251
252
253
254    // ********************************************************************************************
255    // ********************************************************************************************
256    // IntIntTConsumer Variant
257    // ********************************************************************************************
258    // ********************************************************************************************
259
260
261
262
263    /**
264     * <EMBED CLASS=defs DATA-TYPE=Integer DATA-TYPE_LC=int DATA-METH_NAME=numeric>
265     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
266     */
267    @IntoHTMLTable(
268        background=GreenDither,
269        title="Java-Consumer accepting Boxed-Integers, w/ Array-Indices"
270    )
271    @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER")
272    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
273    public static void intArr2(
274            final JsonArray                 ja,
275            final int                       defaultValue,
276            final int                       FLAGS,
277            final Function<String, Integer> optionalUserParser,
278            final IntIntTConsumer<Integer>  c
279        )
280    {
281        Objects.requireNonNull(c, "IntIntTConsumer<Integer> parameter 'c' is null");
282
283        ProcessJsonArray.numericToJava(
284            ja,
285            // new SettingsRec<Integer, Void>
286            SETTINGS_REC_BUILDER.createForIIConsumers
287                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_INTEGER())
288        );
289    }
290
291    /**
292     * <EMBED CLASS=defs DATA-TYPE=Short DATA-TYPE_LC=short DATA-METH_NAME=numeric>
293     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
294     */
295    @IntoHTMLTable(
296        background=BlueDither,
297        title="Java-Consumer accepting Boxed Short-Integers, w/ Array-Indices"
298    )
299    @LinkJavaSource(handle="BASIC_TYPES", name="SHORT")
300    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
301    public static void shortArr2(
302            final JsonArray                 ja,
303            final short                     defaultValue,
304            final int                       FLAGS,
305            final Function<String, Short>   optionalUserParser,
306            final IntIntTConsumer<Short>    c
307        )
308    {
309        Objects.requireNonNull(c, "IntIntTConsumer<Short> parameter 'c' is null");
310
311        ProcessJsonArray.numericToJava(
312            ja,
313            // new SettingsRec<Short, Void>
314            SETTINGS_REC_BUILDER.createForIIConsumers
315                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_SHORT())
316        );
317    }
318
319    /**
320     * <EMBED CLASS=defs DATA-TYPE=Byte DATA-TYPE_LC=byte DATA-METH_NAME=numeric>
321     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
322     */
323    @IntoHTMLTable(
324        background=GreenDither, 
325        title="Java-Consumer accepting Boxed-Bytes, w/ Array-Indices"
326    )
327    @LinkJavaSource(handle="BASIC_TYPES", name="BYTE")
328    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
329    public static void byteArr2(
330            final JsonArray                 ja,
331            final byte                      defaultValue,
332            final int                       FLAGS,
333            final Function<String, Byte>    optionalUserParser,
334            final IntIntTConsumer<Byte>     c
335        )
336    {
337        Objects.requireNonNull(c, "IntIntTConsumer<Byte> parameter 'c' is null");
338
339        ProcessJsonArray.numericToJava(
340            ja,
341            // new SettingsRec<Byte, Void>
342            SETTINGS_REC_BUILDER.createForIIConsumers
343                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_BYTE())
344        );
345    }
346
347    /**
348     * <EMBED CLASS=defs DATA-TYPE=Long DATA-TYPE_LC=long DATA-METH_NAME=numeric>
349     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
350     */
351    @IntoHTMLTable(
352        background=BlueDither,
353        title="Java-Consumer accepting Boxed Long-Integers, w/ Array-Indices"
354    )
355    @LinkJavaSource(handle="BASIC_TYPES", name="LONG")
356    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
357    public static void longArr2(
358            final JsonArray                 ja,
359            final long                      defaultValue,
360            final int                       FLAGS,
361            final Function<String, Long>    optionalUserParser,
362            final IntIntTConsumer<Long>     c
363        )
364    {
365        Objects.requireNonNull(c, "IntIntTConsumer<Long> parameter 'c' is null");
366
367        ProcessJsonArray.numericToJava(
368            ja,
369            // new SettingsRec<Long, Void>
370            SETTINGS_REC_BUILDER.createForIIConsumers
371                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_LONG())
372        );
373    }
374
375    /**
376     * <EMBED CLASS=defs DATA-TYPE=Double DATA-TYPE_LC=double DATA-METH_NAME=numeric>
377     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
378     */
379    @IntoHTMLTable(
380        background=GreenDither,
381        title="Java-Consumer accepting Boxed-Doubles, w/ Array-Indices"
382    )
383    @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE")
384    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
385    public static void doubleArr2(
386            final JsonArray                 ja,
387            final double                    defaultValue,
388            final int                       FLAGS,
389            final Function<String, Double>  optionalUserParser,
390            final IntIntTConsumer<Double>   c
391        )
392    {
393        Objects.requireNonNull(c, "IntIntTConsumer<Double> parameter 'c' is null");
394
395        ProcessJsonArray.numericToJava(
396            ja,
397            // new SettingsRec<Double, Void>
398            SETTINGS_REC_BUILDER.createForIIConsumers
399                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_DOUBLE())
400        );
401    }
402
403    /**
404     * <EMBED CLASS=defs DATA-TYPE=Float DATA-TYPE_LC=float DATA-METH_NAME=numeric>
405     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
406     */
407    @IntoHTMLTable(
408        background=BlueDither,
409        title="Java-Consumer accepting Boxed-Floats, w/ Array-Indices"
410    )
411    @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT")
412    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
413    public static void floatArr2(
414            final JsonArray                 ja,
415            final float                     defaultValue,
416            final int                       FLAGS,
417            final Function<String, Float>   optionalUserParser,
418            final IntIntTConsumer<Float>    c
419        )
420    {
421        Objects.requireNonNull(c, "IntIntTConsumer<Float> parameter 'c' is null");
422
423        ProcessJsonArray.numericToJava(
424            ja,
425            // new SettingsRec<Float, Void>
426            SETTINGS_REC_BUILDER.createForIIConsumers
427                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_FLOAT())
428        );
429    }
430
431    /**
432     * <EMBED CLASS=defs DATA-TYPE=Boolean DATA-TYPE_LC=boolean DATA-METH_NAME=boolean>
433     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
434     */
435    @IntoHTMLTable(
436        background=GreenDither,
437        title="Java-Consumer accepting Boxed-Booleans, w/ Array-Indices"
438    )
439    @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN")
440    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
441    public static void booleanArr2(
442            final JsonArray                 ja,
443            final boolean                   defaultValue,
444            final int                       FLAGS,
445            final Function<String, Boolean> optionalUserParser,
446            final IntIntTConsumer<Boolean>  c
447        )
448    {
449        Objects.requireNonNull(c, "IntIntTConsumer<Boolean> parameter 'c' is null");
450
451        ProcessJsonArray.booleanToJava(
452            ja,
453            // new SettingsRec<Boolean, Void>
454            SETTINGS_REC_BUILDER.createForIIConsumers
455                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.BOXED_BOOLEAN())
456        );
457    }
458
459    /**
460     * <EMBED CLASS=defs DATA-TYPE=Number DATA-TYPE_LC=number DATA-METH_NAME=numeric>
461     * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_INTO_BOXED_CONS2>
462     */
463    @IntoHTMLTable(
464        background=BlueDither,
465        title="Java-Consumer accepting Best-Fit Boxed-Numbers, w/ Array-Indices"
466    )
467    @LinkJavaSource(handle="BASIC_TYPES", name="NUMBER_REC")
468    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=5)
469    public static void numberArr2(
470            final JsonArray                 ja,
471            final Number                    defaultValue,
472            final int                       FLAGS,
473            final Function<String, Number>  optionalUserParser,
474            final IntIntTConsumer<Number>   c
475        )
476    {
477        Objects.requireNonNull(c, "IntIntTConsumer<Number> parameter 'c' is null");
478
479        ProcessJsonArray.numericToJava(
480            ja,
481            // new SettingsRec<Number, Void>
482            SETTINGS_REC_BUILDER.createForIIConsumers
483                (defaultValue, FLAGS, optionalUserParser, c, BASIC_TYPES.NUMBER_REC())
484        );
485    }
486
487}