001package Torello.Java.JSON;
002
003
004// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
005// These are the User-Provided Lambda's / Functional-Interfaces
006// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
007
008import java.util.function.IntConsumer;
009import Torello.Java.Function.TriIntCons;
010import java.util.function.ToIntFunction;
011
012import Torello.Java.Function.ShortConsumer;
013import Torello.Java.Function.IntIntShortCons;
014import Torello.Java.Function.ToShortFunction;
015
016import Torello.Java.Function.ByteConsumer;
017import Torello.Java.Function.IntIntByteCons;
018import Torello.Java.Function.ToByteFunction;
019
020import java.util.function.LongConsumer;
021import Torello.Java.Function.IntIntLongCons;
022import java.util.function.ToLongFunction;
023
024import Torello.Java.Function.FloatConsumer;
025import Torello.Java.Function.IntIntFloatCons;
026import Torello.Java.Function.ToFloatFunction;
027
028import java.util.function.DoubleConsumer;
029import Torello.Java.Function.IntIntDoubleCons;
030import java.util.function.ToDoubleFunction;
031
032import Torello.Java.Function.BoolConsumer;
033import Torello.Java.Function.IntIntBoolCons;
034import java.util.function.Predicate;
035
036
037// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
038// The Rest of the imports
039// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
040
041import Torello.JavaDoc.StaticFunctional;
042import Torello.JavaDoc.LinkJavaSource;
043import Torello.JavaDoc.JDHeaderBackgroundImg;
044
045import Torello.JavaDoc.IntoHTMLTable;
046import static Torello.JavaDoc.IntoHTMLTable.Background.GreenDither;
047import static Torello.JavaDoc.IntoHTMLTable.Background.BlueDither;
048
049import Torello.Java.JSON.JFlag;
050
051import javax.json.Json;
052import javax.json.JsonString;
053import javax.json.JsonArray;
054import javax.json.JsonValue;
055
056import java.util.Objects;
057
058import static javax.json.JsonValue.TRUE;
059import static javax.json.JsonValue.FALSE;
060
061import static Torello.Java.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS;
062import static Torello.Java.JSON.BASIC_TYPES.PRIMITIVE;
063
064
065/**
066 * Generate a Pre-Configured {@link SettingsRec} instance which can handle Java-Primitives.
067 * 
068 * <EMBED CLASS=globalDefs DATA-A_AN=A>
069 * <EMBED CLASS='external-html' DATA-FILE-ID=GLASS_FISH_NOTE>
070 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_PRIM_CONS_REC>
071 * <EMBED CLASS='external-html' DATA-FILE-ID=LOOP_OPTIMIZED_NOTE>
072 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_PRIM_CONS_REC>
073 * 
074 * @see Json
075 * @see JsonArray
076 */
077@StaticFunctional
078@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_PRIM_CONS_REC")
079public class RJArrPrimConsumerRec
080{
081    private RJArrPrimConsumerRec() { }
082
083    /**
084     * <EMBED CLASS=defs DATA-A_AN=An DATA-METH_NAME=numeric DATA-PRIM_TYPE=int DATA-DEFVAL="-1">
085     * <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
086     */
087    @IntoHTMLTable(
088        background=GreenDither, 
089        title="Create a SettingsRec Instance for a Primitive-Integer Consumer"
090    )
091    @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER")
092    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
093    public static SettingsRec<Integer, Void> intArr(
094            final int                   defaultValue,
095            final int                   FLAGS,
096            final ToIntFunction<String> optionalUserParser
097        )
098    {
099        return SETTINGS_REC_BUILDER.createForConsumers(
100            defaultValue,
101            FLAGS,
102            (optionalUserParser == null) ? null : optionalUserParser::applyAsInt,
103            BASIC_TYPES.PRIMITIVE_INTEGER()
104        );
105    }
106
107    /**
108     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=short DATA-DEFVAL="-1">
109     * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
110     */
111    @IntoHTMLTable(
112        background=BlueDither,
113        title="Create a SettingsRec Instance for a Primitive Short-Integer Consumer"
114    )
115    @LinkJavaSource(handle="BASIC_TYPES", name="SHORT")
116    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
117    public static SettingsRec<Short, Void> shortArr(
118            final short                     defaultValue,
119            final int                       FLAGS,
120            final ToShortFunction<String>   optionalUserParser
121        )
122    {
123        return SETTINGS_REC_BUILDER.createForConsumers(
124            defaultValue,
125            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
126            (optionalUserParser == null) ? null : optionalUserParser::applyAsShort,
127            BASIC_TYPES.PRIMITIVE_SHORT()
128        );
129    }
130
131    /**
132     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=byte DATA-DEFVAL="-1">
133     * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
134     */
135    @IntoHTMLTable(
136        background=GreenDither,
137        title="Create a SettingsRec Instance for a Primitive-Byte Consumer"
138    )
139    @LinkJavaSource(handle="BASIC_TYPES", name="BYTE")
140    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
141    public static SettingsRec<Byte, Void> byteArr(
142            final byte                      defaultValue,
143            final int                       FLAGS,
144            final ToByteFunction<String>    optionalUserParser
145        )
146    {
147        return SETTINGS_REC_BUILDER.createForConsumers(
148            defaultValue,
149            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
150            (optionalUserParser == null) ? null : optionalUserParser::applyAsByte,
151            BASIC_TYPES.PRIMITIVE_BYTE()
152        );
153    }
154
155    /**
156     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=long DATA-DEFVAL="-1">
157     * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
158     */
159    @IntoHTMLTable(
160        background=BlueDither,
161        title="Create a SettingsRec Instance for a Primitive Long-Integer Consumer"
162    )
163    @LinkJavaSource(handle="BASIC_TYPES", name="LONG")
164    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
165    public static SettingsRec<Long, Void> longArr(
166            final long                      defaultValue,
167            final int                       FLAGS,
168            final ToLongFunction<String>    optionalUserParser
169        )
170    {
171        return SETTINGS_REC_BUILDER.createForConsumers(
172            defaultValue,
173            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
174            (optionalUserParser == null) ? null : optionalUserParser::applyAsLong,
175            BASIC_TYPES.PRIMITIVE_LONG()
176        );
177    }
178
179    /**
180     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=double DATA-DEFVAL="-1.0">
181     * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
182     */
183    @IntoHTMLTable(
184        background=GreenDither,
185        title="Create a SettingsRec Instance for a Primitive-Double Consumer"
186    )
187    @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE")
188    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
189    public static SettingsRec<Double, Void> doubleArr(
190            final double                    defaultValue,
191            final int                       FLAGS,
192            final ToDoubleFunction<String>  optionalUserParser
193        )
194    {
195        return SETTINGS_REC_BUILDER.createForConsumers(
196            defaultValue,
197            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
198            (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble,
199            BASIC_TYPES.PRIMITIVE_DOUBLE()
200        );
201    }
202
203    /**
204     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=float DATA-DEFVAL="-1.0f">
205     * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
206     */
207    @IntoHTMLTable(
208        background=BlueDither, 
209        title="Create a SettingsRec Instance for a Primitive-Float Consumer"
210    )
211    @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT")
212    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
213    public static SettingsRec<Float, Void> floatArr(
214            final float                     defaultValue,
215            final int                       FLAGS,
216            final ToFloatFunction<String>   optionalUserParser
217        )
218    {
219        return SETTINGS_REC_BUILDER.createForConsumers(
220            defaultValue,
221            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
222            (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat,
223            BASIC_TYPES.PRIMITIVE_FLOAT()
224        );
225    }
226
227    /**
228     * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-PRIM_TYPE=boolean DATA-DEFVAL=false>
229     * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
230     */
231    @IntoHTMLTable(
232        background=GreenDither,
233        title="Create a SettingsRec Instance for a Primitive-Boolean Consumer"
234    )
235    @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN")
236    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers", paramCount=4)
237    public static SettingsRec<Boolean, Void> booleanArr(
238            final boolean           defaultValue,
239            final int               FLAGS,
240            final Predicate<String> optionalUserParser
241        )
242    {
243        return SETTINGS_REC_BUILDER.createForConsumers(
244            defaultValue,
245            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
246            (optionalUserParser == null) ? null : optionalUserParser::test,
247            BASIC_TYPES.PRIMITIVE_BOOLEAN()
248        );
249    }
250
251
252
253
254    // ********************************************************************************************
255    // ********************************************************************************************
256    // IntInt (w/ Array-Indices) Primitive-Consumer Variant
257    // ********************************************************************************************
258    // ********************************************************************************************
259
260
261
262
263    /**
264     * <EMBED CLASS=defs DATA-A_AN=An DATA-METH_NAME=numeric DATA-PRIM_TYPE=int DATA-DEFVAL="-1">
265     * <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
266     */
267    @IntoHTMLTable(
268        background=BlueDither,
269        title="Create a SettingsRec Instance for a Consumer of Primitive-Integers, " +
270            "w/ Array-Indices"
271    )
272    @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER")
273    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
274    public static SettingsRec<Integer, Void> intArr2(
275            final int                   defaultValue,
276            final int                   FLAGS,
277            final ToIntFunction<String> optionalUserParser
278        )
279    {
280        return SETTINGS_REC_BUILDER.createForIIConsumers(
281            defaultValue,
282            FLAGS,
283            (optionalUserParser == null) ? null : optionalUserParser::applyAsInt,
284            BASIC_TYPES.PRIMITIVE_INTEGER()
285        );
286    }
287
288    /**
289     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=short DATA-DEFVAL="-1">
290     * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
291     */
292    @IntoHTMLTable(
293        background=GreenDither,
294        title="Create a SettingsRec Instance for a Consumer of Primitive Short-Integers, " +
295            "w/ Array-Indices"
296    )
297    @LinkJavaSource(handle="BASIC_TYPES", name="SHORT")
298    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
299    public static SettingsRec<Short, Void> shortArr2(
300            final short                     defaultValue,
301            final int                       FLAGS,
302            final ToShortFunction<String>   optionalUserParser
303        )
304    {
305        return SETTINGS_REC_BUILDER.createForIIConsumers(
306            defaultValue,
307            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
308            (optionalUserParser == null) ? null : optionalUserParser::applyAsShort,
309            BASIC_TYPES.PRIMITIVE_SHORT()
310        );
311    }
312
313    /**
314     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=byte DATA-DEFVAL="-1">
315     * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
316     */
317    @IntoHTMLTable(
318        background=BlueDither,
319        title="Create a SettingsRec Instance for a Consumer of Primitive-Bytes, " +
320            "w/ Array-Indices"
321    )
322    @LinkJavaSource(handle="BASIC_TYPES", name="BYTE")
323    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
324    public static SettingsRec<Byte, Void> byteArr2(
325            final byte                      defaultValue,
326            final int                       FLAGS,
327            final ToByteFunction<String>    optionalUserParser
328        )
329    {
330        return SETTINGS_REC_BUILDER.createForIIConsumers(
331            defaultValue,
332            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
333            (optionalUserParser == null) ? null : optionalUserParser::applyAsByte,
334            BASIC_TYPES.PRIMITIVE_BYTE()
335        );
336    }
337
338    /**
339     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=long DATA-DEFVAL="-1">
340     * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
341     */
342    @IntoHTMLTable(
343        background=GreenDither,
344        title="Create a SettingsRec Instance for a Consumer of Primitive Long-Integers, " +
345            "w/ Array-Indices"
346    )
347    @LinkJavaSource(handle="BASIC_TYPES", name="LONG")
348    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
349    public static SettingsRec<Long, Void> longArr2(
350            final long                      defaultValue,
351            final int                       FLAGS,
352            final ToLongFunction<String>    optionalUserParser
353        )
354    {
355        return SETTINGS_REC_BUILDER.createForIIConsumers(
356            defaultValue,
357            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
358            (optionalUserParser == null) ? null : optionalUserParser::applyAsLong,
359            BASIC_TYPES.PRIMITIVE_LONG()
360        );
361    }
362
363    /**
364     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=double DATA-DEFVAL="-1.0">
365     * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
366     */
367    @IntoHTMLTable(
368        background=BlueDither,
369        title="Create a SettingsRec Instance for a Consumer of Primitive-Doubles, " +
370            "w/ Array-Indices"
371    )
372    @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE")
373    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
374    public static SettingsRec<Double, Void> doubleArr2(
375            final double                    defaultValue,
376            final int                       FLAGS,
377            final ToDoubleFunction<String>  optionalUserParser
378        )
379    {
380        return SETTINGS_REC_BUILDER.createForIIConsumers(
381            defaultValue,
382            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
383            (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble,
384            BASIC_TYPES.PRIMITIVE_DOUBLE()
385        );
386    }
387
388    /**
389     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=float DATA-DEFVAL="-1.0f">
390     * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
391     */
392    @IntoHTMLTable(
393        background=GreenDither,
394        title="Create a SettingsRec Instance for a Consumer of Primitive-Floats, " +
395            "w/ Array-Indices"
396    )
397    @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT")
398    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
399    public static SettingsRec<Float, Void> floatArr2(
400            final float                     defaultValue,
401            final int                       FLAGS,
402            final ToFloatFunction<String>   optionalUserParser
403        )
404    {
405        return SETTINGS_REC_BUILDER.createForIIConsumers(
406            defaultValue,
407            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
408            (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat,
409            BASIC_TYPES.PRIMITIVE_FLOAT()
410        );
411    }
412
413    /**
414     * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-PRIM_TYPE=boolean DATA-DEFVAL=false>
415     * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
416     */
417    @IntoHTMLTable(
418        background=BlueDither,
419        title="Create a SettingsRec Instance for a Consumer of Primitive-Booleans, " +
420            "w/ Array-Indices"
421    )
422    @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN")
423    @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers", paramCount=4)
424    public static SettingsRec<Boolean, Void> booleanArr2(
425            final boolean               defaultValue,
426            final int                   FLAGS,
427            final Predicate<String>     optionalUserParser
428        )
429    {
430        return SETTINGS_REC_BUILDER.createForIIConsumers(
431            defaultValue,
432            FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
433            (optionalUserParser == null) ? null : optionalUserParser::test,
434            BASIC_TYPES.PRIMITIVE_BOOLEAN()
435        );
436    }
437
438
439}