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 static Torello.JavaDoc.Entity.CONSTRUCTOR; 012 013import static Torello.Java.JSON.BASIC_TYPES.BOXED; 014 015import java.util.stream.Stream; 016 017import java.util.function.Function; 018 019import javax.json.Json; 020import javax.json.JsonArray; 021 022// Needed for Java-Doc Links 023import javax.json.JsonValue; 024import javax.json.JsonString; 025 026 027/** 028 * Utilities for parsing Json Array's and sending the parsed values into a Java Strea 029 * of Boxed-Primitives. 030 * 031 * <EMBED CLASS='globalDefs' DATA-A_AN=A> 032 * <EMBED CLASS='external-html' DATA-FILE-ID=GLASS_FISH_NOTE> 033 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_BOXED_STRM> 034 * <EMBED CLASS='external-html' DATA-FILE-ID=JSON_BINDING_NOTE> 035 * <EMBED CLASS='external-html' DATA-FILE-ID=LOOP_OPTIMIZED_NOTE> 036 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_BOXED_STRM> 037 * 038 * @see Json 039 * @see JsonArray 040 */ 041@StaticFunctional 042@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_BOXED_STRM") 043public class RJArrIntoBoxedStream 044{ 045 private RJArrIntoBoxedStream() { } 046 047 048 // ******************************************************************************************** 049 // ******************************************************************************************** 050 // Stream Generators 051 // ******************************************************************************************** 052 // ******************************************************************************************** 053 054 055 /** 056 * <EMBED CLASS=defs DATA-TYPE=Integer DATA-DEFVAL=0 DATA-TYPE_LC=int DATA-METH_NAME=numeric 057 * DATA-A_AN=An> 058 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 059 */ 060 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of Boxed-Integers") 061 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 062 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 063 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 064 public static Stream<Integer> intArr( 065 final JsonArray ja, 066 final int defaultValue, 067 final int FLAGS, 068 final Function<String, Integer> optionalUserParser 069 ) 070 { 071 return ProcessJsonArray.numericToJava( 072 ja, 073 SETTINGS_REC_BUILDER.createForStreams( 074 defaultValue, FLAGS, optionalUserParser, 075 BASIC_TYPES.BOXED_INTEGER(), 076 STREAM_BUILDER.normalStream() 077 )); 078 } 079 080 /** 081 * <EMBED CLASS=defs DATA-TYPE=Short DATA-DEFVAL=0 DATA-TYPE_LC=short DATA-METH_NAME=numeric> 082 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 083 */ 084 @IntoHTMLTable(background=BlueDither, title="Generate a Java Stream of Boxed Short-Integers") 085 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 086 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 087 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 088 public static Stream<Short> shortArr( 089 final JsonArray ja, 090 final short defaultValue, 091 final int FLAGS, 092 final Function<String, Short> optionalUserParser 093 ) 094 { 095 return ProcessJsonArray.numericToJava( 096 ja, 097 SETTINGS_REC_BUILDER.createForStreams( 098 defaultValue, FLAGS, optionalUserParser, 099 BASIC_TYPES.BOXED_SHORT(), 100 STREAM_BUILDER.normalStream() 101 )); 102 } 103 104 /** 105 * <EMBED CLASS=defs DATA-TYPE=Byte DATA-DEFVAL=0 DATA-TYPE_LC=byte DATA-METH_NAME=numeric> 106 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 107 */ 108 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of Boxed-Bytes") 109 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 110 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 111 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 112 public static Stream<Byte> byteArr( 113 final JsonArray ja, 114 final byte defaultValue, 115 final int FLAGS, 116 final Function<String, Byte> optionalUserParser 117 ) 118 { 119 return ProcessJsonArray.numericToJava( 120 ja, 121 SETTINGS_REC_BUILDER.createForStreams( 122 defaultValue, FLAGS, optionalUserParser, 123 BASIC_TYPES.BOXED_BYTE(), 124 STREAM_BUILDER.normalStream() 125 )); 126 } 127 128 /** 129 * <EMBED CLASS=defs DATA-TYPE=Long DATA-DEFVAL=0 DATA-TYPE_LC=long DATA-METH_NAME=numeric> 130 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 131 */ 132 @IntoHTMLTable(background=BlueDither, title="Generate a Java Stream of Boxed Long-Integers") 133 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 134 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 135 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 136 public static Stream<Long> longArr( 137 final JsonArray ja, 138 final long defaultValue, 139 final int FLAGS, 140 final Function<String, Long> optionalUserParser 141 ) 142 { 143 return ProcessJsonArray.numericToJava( 144 ja, 145 SETTINGS_REC_BUILDER.createForStreams( 146 defaultValue, FLAGS, optionalUserParser, 147 BASIC_TYPES.BOXED_LONG(), 148 STREAM_BUILDER.normalStream() 149 )); 150 } 151 152 /** 153 * <EMBED CLASS=defs DATA-TYPE=Double DATA-DEFVAL=0 DATA-TYPE_LC=double DATA-METH_NAME=numeric> 154 * <EMBED CLASS='external-html' DATA-DEFVAL=0 DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 155 */ 156 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of Boxed-Doubles") 157 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 158 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 159 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 160 public static Stream<Double> doubleArr( 161 final JsonArray ja, 162 final double defaultValue, 163 final int FLAGS, 164 final Function<String, Double> optionalUserParser 165 ) 166 { 167 return ProcessJsonArray.numericToJava( 168 ja, 169 SETTINGS_REC_BUILDER.createForStreams( 170 defaultValue, FLAGS, optionalUserParser, 171 BASIC_TYPES.BOXED_DOUBLE(), 172 STREAM_BUILDER.normalStream() 173 )); 174 } 175 176 /** 177 * <EMBED CLASS=defs DATA-TYPE=Float DATA-DEFVAL=0 DATA-TYPE_LC=float DATA-METH_NAME=numeric> 178 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 179 */ 180 @IntoHTMLTable(background=BlueDither, title="Generate a Java Stream of Boxed-Floats") 181 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 182 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 183 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 184 public static Stream<Float> floatArr( 185 final JsonArray ja, 186 final float defaultValue, 187 final int FLAGS, 188 final Function<String, Float> optionalUserParser 189 ) 190 { 191 return ProcessJsonArray.numericToJava( 192 ja, 193 SETTINGS_REC_BUILDER.createForStreams( 194 defaultValue, FLAGS, optionalUserParser, 195 BASIC_TYPES.BOXED_FLOAT(), 196 STREAM_BUILDER.normalStream() 197 )); 198 } 199 200 /** 201 * <EMBED CLASS=defs DATA-TYPE=Boolean DATA-DEFVAL=true DATA-TYPE_LC=boolean DATA-METH_NAME=boolean> 202 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 203 */ 204 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of Boxed-Booleans") 205 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 206 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 207 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 208 public static Stream<Boolean> booleanArr( 209 final JsonArray ja, 210 final boolean defaultValue, 211 final int FLAGS, 212 final Function<String, Boolean> optionalUserParser 213 ) 214 { 215 return ProcessJsonArray.booleanToJava( 216 ja, 217 SETTINGS_REC_BUILDER.createForStreams( 218 defaultValue, FLAGS, optionalUserParser, 219 BASIC_TYPES.BOXED_BOOLEAN(), 220 STREAM_BUILDER.normalStream() 221 )); 222 } 223 224 /** 225 * <EMBED CLASS=defs DATA-TYPE=Number DATA-DEFVAL=0 DATA-TYPE_LC=number DATA-METH_NAME=numeric> 226 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_STRM> 227 */ 228 @IntoHTMLTable(background=BlueDither, title="Generate a Java Stream of Best-Fit Boxed-Numbers") 229 @LinkJavaSource(handle="BASIC_TYPES", name="NUMBER_REC") 230 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 231 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 232 public static Stream<Number> numberArr( 233 final JsonArray ja, 234 final Number defaultValue, 235 final int FLAGS, 236 final Function<String, Number> optionalUserParser 237 ) 238 { 239 return ProcessJsonArray.numericToJava( 240 ja, 241 SETTINGS_REC_BUILDER.createForStreams( 242 defaultValue, FLAGS, optionalUserParser, 243 BASIC_TYPES.NUMBER_REC(), 244 STREAM_BUILDER.normalStream() 245 )); 246 } 247 248 249 // ******************************************************************************************** 250 // ******************************************************************************************** 251 // SettingsRec Generators 252 // ******************************************************************************************** 253 // ******************************************************************************************** 254 255 256 /** 257 * <EMBED CLASS=defs DATA-TYPE=Integer DATA-TYPE_LC=int DATA-DEFVAL=0 DATA-METH_NAME=numeric 258 * DATA-A_AN=An> 259 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 260 */ 261 @IntoHTMLTable(background=GreenDither, 262 title="Generate a Settings-Record for a Stream of Boxed-Integers") 263 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 264 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 265 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 266 public static SettingsRec<Integer, Stream<Integer>> intRec( 267 final int defaultValue, 268 final int FLAGS, 269 final Function<String, Integer> optionalUserParser 270 ) 271 { 272 return SETTINGS_REC_BUILDER.createForStreams( 273 defaultValue, FLAGS, optionalUserParser, 274 BASIC_TYPES.BOXED_INTEGER(), 275 STREAM_BUILDER.normalStream() 276 ); 277 } 278 279 /** 280 * <EMBED CLASS=defs DATA-TYPE=Short DATA-TYPE_LC=short DATA-DEFVAL=0 DATA-METH_NAME=numeric> 281 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 282 */ 283 @IntoHTMLTable(background=BlueDither, 284 title="Generate a Settings-Record for a Stream of Boxed Short-Integers") 285 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 286 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 287 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 288 public static SettingsRec<Short, Stream<Short>> shortRec( 289 final short defaultValue, 290 final int FLAGS, 291 final Function<String, Short> optionalUserParser 292 ) 293 { 294 return SETTINGS_REC_BUILDER.createForStreams( 295 defaultValue, FLAGS, optionalUserParser, 296 BASIC_TYPES.BOXED_SHORT(), 297 STREAM_BUILDER.normalStream() 298 ); 299 } 300 301 /** 302 * <EMBED CLASS=defs DATA-TYPE=Byte DATA-TYPE_LC=byte DATA-DEFVAL=0 DATA-METH_NAME=numeric> 303 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 304 */ 305 @IntoHTMLTable(background=GreenDither, 306 title="Generate a Settings-Record for a Stream of Boxed-Bytes") 307 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 308 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 309 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 310 public static SettingsRec<Byte, Stream<Byte>> byteRec( 311 final byte defaultValue, 312 final int FLAGS, 313 final Function<String, Byte> optionalUserParser 314 ) 315 { 316 return SETTINGS_REC_BUILDER.createForStreams( 317 defaultValue, FLAGS, optionalUserParser, 318 BASIC_TYPES.BOXED_BYTE(), 319 STREAM_BUILDER.normalStream() 320 ); 321 } 322 323 /** 324 * <EMBED CLASS=defs DATA-TYPE=Long DATA-TYPE_LC=long DATA-DEFVAL=0 DATA-METH_NAME=numeric> 325 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 326 */ 327 @IntoHTMLTable(background=BlueDither, 328 title="Generate a Settings-Record for a Stream of Boxed Long-Integers") 329 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 330 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 331 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 332 public static SettingsRec<Long, Stream<Long>> longRec( 333 final long defaultValue, 334 final int FLAGS, 335 final Function<String, Long> optionalUserParser 336 ) 337 { 338 return SETTINGS_REC_BUILDER.createForStreams( 339 defaultValue, FLAGS, optionalUserParser, 340 BASIC_TYPES.BOXED_LONG(), 341 STREAM_BUILDER.normalStream() 342 ); 343 } 344 345 /** 346 * <EMBED CLASS=defs DATA-TYPE=Double DATA-TYPE_LC=double DATA-DEFVAL=0 DATA-METH_NAME=numeric> 347 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 348 */ 349 @IntoHTMLTable(background=GreenDither, 350 title="Generate a Settings-Record for a Stream of Boxed-Doubles") 351 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 352 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 353 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 354 public static SettingsRec<Double, Stream<Double>> doubleRec( 355 final double defaultValue, 356 final int FLAGS, 357 final Function<String, Double> optionalUserParser 358 ) 359 { 360 return SETTINGS_REC_BUILDER.createForStreams( 361 defaultValue, FLAGS, optionalUserParser, 362 BASIC_TYPES.BOXED_DOUBLE(), 363 STREAM_BUILDER.normalStream() 364 ); 365 } 366 367 /** 368 * <EMBED CLASS=defs DATA-TYPE=Float DATA-TYPE_LC=float DATA-DEFVAL=0 DATA-METH_NAME=numeric> 369 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 370 */ 371 @IntoHTMLTable(background=BlueDither, 372 title="Generate a Settings-Record for a Stream of Boxed-Floats") 373 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 374 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 375 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 376 public static SettingsRec<Float, Stream<Float>> floatRec( 377 final float defaultValue, 378 final int FLAGS, 379 final Function<String, Float> optionalUserParser 380 ) 381 { 382 return SETTINGS_REC_BUILDER.createForStreams( 383 defaultValue, FLAGS, optionalUserParser, 384 BASIC_TYPES.BOXED_FLOAT(), 385 STREAM_BUILDER.normalStream() 386 ); 387 } 388 389 /** 390 * <EMBED CLASS=defs DATA-TYPE=Boolean DATA-TYPE_LC=boolean DATA-METH_NAME=boolean> 391 * <EMBED CLASS=defs DATA-DEFVAL=true> 392 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 393 */ 394 @IntoHTMLTable(background=GreenDither, 395 title="Generate a Settings-Record for a Stream of Boxed-Booleans") 396 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 397 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 398 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 399 public static SettingsRec<Boolean, Stream<Boolean>> booleanRec( 400 final boolean defaultValue, 401 final int FLAGS, 402 final Function<String, Boolean> optionalUserParser 403 ) 404 { 405 return SETTINGS_REC_BUILDER.createForStreams( 406 defaultValue, FLAGS, optionalUserParser, 407 BASIC_TYPES.BOXED_BOOLEAN(), 408 STREAM_BUILDER.normalStream() 409 ); 410 } 411 412 /** 413 * <EMBED CLASS=defs DATA-TYPE=Number DATA-TYPE_LC=number DATA-DEFVAL=0 DATA-METH_NAME=numeric> 414 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_BOX_STREAM_REC> 415 */ 416 @IntoHTMLTable(background=BlueDither, 417 title="Generate a Settings-Record for a Stream of Best-Fit Boxed-Numbers") 418 @LinkJavaSource(handle="BASIC_TYPES", name="NUMBER_REC") 419 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 420 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 421 public static SettingsRec<Number, Stream<Number>> numberRec( 422 final Number defaultValue, 423 final int FLAGS, 424 final Function<String, Number> optionalUserParser 425 ) 426 { 427 return SETTINGS_REC_BUILDER.createForStreams( 428 defaultValue, FLAGS, optionalUserParser, 429 BASIC_TYPES.NUMBER_REC(), 430 STREAM_BUILDER.normalStream() 431 ); 432 } 433}