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