1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package Torello.Browser.JsonAST;

import Torello.JSON.ReadJSON;

import Torello.Java.ReadOnly.ROArrayListBuilder;
import Torello.Java.ReadOnly.ReadOnlyList;

import javax.json.JsonArray;
import javax.json.JsonObject;

/**
 * Invokes the {@link PPR} constructor on every instance of a {@link JsonArray}.  The array to 
 * parse is named by the input {@link WhichPPR} parameter.
 */
@Torello.JavaDoc.Annotations.StaticFunctional
@Torello.JavaDoc.Annotations.JDHeaderBackgroundImg(EmbedTagFileID="CONSTRUCTOR_JDHBI")
public class Helper$GetPPRLists
{
    private Helper$GetPPRLists() { }

    static ReadOnlyList<PPR> get(
            final TCE               THIS,
            final JsonObject        jo,
            final WhichPPR          which
        )
    {
        // getJsonArray(jo, propertyName, boolean isOptional, boolean throwOnNull)
        final JsonArray arr = ReadJSON.getJsonArray(jo, which.propName, true, true);

        if (arr == null) return null;

        if (arr.size() == 0) THIS.verifyThrow(
            "This TCE's JSON Definition had an 'array' property named [" + which.propName + "], but " +
            "unfortunately, that array had zero elements."
        );

        final ROArrayListBuilder<PPR> roalb = new ROArrayListBuilder<>(arr.size());

        for (int i=0; i < arr.size(); i++)

            roalb.add(
                new PPR(
                    THIS,
                    arr.getJsonObject(i),
                    which,
                    i
                ));

        // roalb.sort((PPR a, PPR b) -> a.name.compareTo(b.name));
        return roalb.build();
    }

}