001package Torello.Java.JSON; 002 003import Torello.JavaDoc.StaticFunctional; 004import Torello.JavaDoc.JDHeaderBackgroundImg; 005 006import Torello.JavaDoc.IntoHTMLTable; 007import static Torello.JavaDoc.IntoHTMLTable.Background.GreenDither; 008import static Torello.JavaDoc.IntoHTMLTable.Background.BlueDither; 009 010import static Torello.Java.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS; 011 012import Torello.JavaDoc.JDHeaderBackgroundImg; 013import Torello.JavaDoc.LinkJavaSource; 014import Torello.JavaDoc.StaticFunctional; 015 016import java.util.stream.IntStream; 017import java.util.stream.LongStream; 018import java.util.stream.DoubleStream; 019 020import java.util.function.ToIntFunction; 021import java.util.function.ToLongFunction; 022import java.util.function.ToDoubleFunction; 023 024import javax.json.Json; 025import javax.json.JsonArray; 026 027/** 028 * Utilities for parsing Json Array's and sending the parsed values into a Java Primitive 029 * Stream. 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_PRIM_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_PRIM_STRM> 037 * 038 * @see Json 039 * @see JsonArray 040 */ 041@StaticFunctional 042@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_PRIM_STRM") 043public class RJArrIntoPrimStream 044{ 045 private RJArrIntoPrimStream() { } 046 047 048 // ******************************************************************************************** 049 // ******************************************************************************************** 050 // Stream Generators 051 // ******************************************************************************************** 052 // ******************************************************************************************** 053 054 055 /** 056 * <EMBED CLASS=defs DATA-TYPE=Integer DATA-TYPE_LC=int DATA-STRM_TYPE=IntStream DATA-A_AN=An> 057 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_STREAM_STRM> 058 */ 059 @IntoHTMLTable(background=GreenDither, title="Generate a Java (Primitive) IntStream") 060 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 061 @LinkJavaSource(handle="STREAM_BUILDER", name="intStream") 062 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 063 public static IntStream intArr( 064 final JsonArray ja, 065 final int defaultValue, 066 final int FLAGS, 067 final ToIntFunction<String> optionalUserParser 068 ) 069 { 070 return ProcessJsonArray.numericToJava( 071 ja, 072 SETTINGS_REC_BUILDER.createForStreams( 073 defaultValue, 074 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 075 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 076 BASIC_TYPES.PRIMITIVE_INTEGER(), 077 STREAM_BUILDER.intStream() 078 )); 079 } 080 081 /** 082 * <EMBED CLASS=defs DATA-TYPE=Long DATA-TYPE_LC=long DATA-STRM_TYPE=LongStream> 083 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_STREAM_STRM> 084 */ 085 @IntoHTMLTable(background=BlueDither, title="Generate a Java (Primitive) LongStream") 086 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 087 @LinkJavaSource(handle="STREAM_BUILDER", name="longStream") 088 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 089 public static LongStream longArr( 090 final JsonArray ja, 091 final long defaultValue, 092 final int FLAGS, 093 final ToLongFunction<String> optionalUserParser 094 ) 095 { 096 return ProcessJsonArray.numericToJava( 097 ja, 098 SETTINGS_REC_BUILDER.createForStreams( 099 defaultValue, 100 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 101 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 102 BASIC_TYPES.PRIMITIVE_LONG(), 103 STREAM_BUILDER.longStream() 104 )); 105 } 106 107 /** 108 * <EMBED CLASS=defs DATA-TYPE=Double DATA-TYPE_LC=double DATA-STRM_TYPE=DoubleStream> 109 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_STREAM_STRM> 110 */ 111 @IntoHTMLTable(background=GreenDither, title="Generate a Java (Primitive) DoubleStream") 112 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 113 @LinkJavaSource(handle="STREAM_BUILDER", name="doubleStream") 114 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 115 public static DoubleStream doubleArr( 116 final JsonArray ja, 117 final double defaultValue, 118 final int FLAGS, 119 final ToDoubleFunction<String> optionalUserParser 120 ) 121 { 122 return ProcessJsonArray.numericToJava( 123 ja, 124 SETTINGS_REC_BUILDER.createForStreams( 125 defaultValue, 126 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 127 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 128 BASIC_TYPES.PRIMITIVE_DOUBLE(), 129 STREAM_BUILDER.doubleStream() 130 )); 131 } 132 133 134 // ******************************************************************************************** 135 // ******************************************************************************************** 136 // SettingsRec Generators 137 // ******************************************************************************************** 138 // ******************************************************************************************** 139 140 141 /** 142 * <EMBED CLASS=defs DATA-TYPE=Integer DATA-TYPE_LC=int DATA-STRM_TYPE=IntStream DATA-A_AN=An> 143 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_STREAM_REC> 144 */ 145 @IntoHTMLTable(background=BlueDither, 146 title="Generate a Java (Primitive) IntStream Configuration-Record") 147 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 148 @LinkJavaSource(handle="STREAM_BUILDER", name="intStream") 149 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 150 public static SettingsRec<Integer, IntStream> intRec( 151 final int defaultValue, 152 final int FLAGS, 153 final ToIntFunction<String> optionalUserParser 154 ) 155 { 156 return SETTINGS_REC_BUILDER.createForStreams( 157 defaultValue, 158 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 159 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 160 BASIC_TYPES.PRIMITIVE_INTEGER(), 161 STREAM_BUILDER.intStream() 162 ); 163 } 164 165 /** 166 * <EMBED CLASS=defs DATA-TYPE=Long DATA-TYPE_LC=long DATA-STRM_TYPE=LongStream> 167 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_STREAM_REC> 168 */ 169 @IntoHTMLTable(background=GreenDither, 170 title="Generate a Java (Primitive) LongStream Configuration-Recod") 171 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 172 @LinkJavaSource(handle="STREAM_BUILDER", name="longStream") 173 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 174 public static SettingsRec<Long, LongStream> longRec( 175 final long defaultValue, 176 final int FLAGS, 177 final ToLongFunction<String> optionalUserParser 178 ) 179 { 180 return SETTINGS_REC_BUILDER.createForStreams( 181 defaultValue, 182 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 183 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 184 BASIC_TYPES.PRIMITIVE_LONG(), 185 STREAM_BUILDER.longStream() 186 ); 187 } 188 189 /** 190 * <EMBED CLASS=defs DATA-TYPE=Double DATA-TYPE_LC=double DATA-STRM_TYPE=DoubleStream> 191 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_STREAM_REC> 192 */ 193 @IntoHTMLTable(background=BlueDither, 194 title="Generate a Java (Primitive) DoubleStream Configuration-Record") 195 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 196 @LinkJavaSource(handle="STREAM_BUILDER", name="doubleStream") 197 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 198 public static SettingsRec<Double, DoubleStream> doubleRec( 199 final double defaultValue, 200 final int FLAGS, 201 final ToDoubleFunction<String> optionalUserParser 202 ) 203 { 204 return SETTINGS_REC_BUILDER.createForStreams( 205 defaultValue, 206 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 207 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 208 BASIC_TYPES.PRIMITIVE_DOUBLE(), 209 STREAM_BUILDER.doubleStream() 210 ); 211 } 212 213}