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