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