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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package Torello.Java.Build;

import Torello.Java.StrCSV;

import static Torello.Java.C.BGREEN;
import static Torello.Java.C.BYELLOW;
import static Torello.Java.C.BCYAN;
import static Torello.Java.C.RESET;

import java.util.ArrayList;
import java.util.function.Function;

class ErrorCheckSelectedOpts
{
    static void check(final SelectedOptionsRecord sor, final PrintHelpRecord phr)
    {
        checkNickName_CompatibleWith_MainMenuChoice(sor, phr);
    }


    // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    // Error-Case: DO_NOT_DOCUMENT Flag
    // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

    private static void checkNickName_CompatibleWith_MainMenuChoice
        (final SelectedOptionsRecord sor, final PrintHelpRecord phr)
    {
        // If there are no user specified packages, then there is nothing to check!
        // 
        // NOTE: Whenever there are ZERO-ELEMENTS to this list, it is actually just supposed to be
        //       null!  That's the intended behavior.

        if ((sor.userSpecifiedPackages == null) || (sor.userSpecifiedPackages.size() == 0))
            return;

        // The Minor "Faux-Pas" is where a user has requested a Partial-Build **BUT** there is a 
        // Java-Package which has been explicitly requested by Package-Nick-Name - even though
        // that package is also on the User's Do-Not-Document List. 
        // 
        // This error also may occur if the user has explicity requested the Stage-3 Upgrader
        // to run.
        // 
        // NOTE: If the user hasn't selected a "-pbX" or "-3", then this error case is impossible,
        //       and this method may return immediately!
        // 
        // THE-ERROR: Since all "-pb" switches (and the "-3" switch) request the Java-Doc Upgrader
        //            to run, it is against the rules for them to request that an "un-documentable"
        //            package be put through this Menu-Choice
    
        final boolean doNotDocPackages_Disallowed =
                sor.MENU_CHOICE.equals("3")
            ||  sor.MENU_CHOICE.startsWith("pb");

        /*
        System.out.println(
            "doNotDocPackages_Disallowed: " + doNotDocPackages_Disallowed + '\n' +
            "MENU_CHOICE:                 " + sor.MENU_CHOICE
        );
        */

        // The error-case being investigated is impossible, return now.
        if (! doNotDocPackages_Disallowed) return;

        // Keep the list of offending packages here..
        ArrayList<BuildPackage> offendingPackages = new ArrayList<>();

        // Must check the user specified pages.
        for (BuildPackage bp : sor.userSpecifiedPackages)
            if (! bp.mustDocument)
                offendingPackages.add(bp);

        // System.out.println("Offending Packages:\n" + offendingPackages.toString());
        // Torello.Java.Q.BP();

        // This error did not occur, so return without incident...
        if (offendingPackages.size() == 0) return;

        final Function<BuildPackage, String> PRINTER_01 =
            (BuildPackage bp) -> BYELLOW + bp.nickName + RESET;

        final Function<BuildPackage, String> PRINTER_02 =
            (BuildPackage bp) -> "\n\t" + BYELLOW + bp.fullName + RESET;

        phr.print_MainMenu_Options();

        System.out.println(
            "The following package Nick-Names were named, explicitly, at the " +
                "Command-Line:\n\t" +
            StrCSV.toCSV(offendingPackages, PRINTER_01, true, null) + '\n' +
            "\n" +

            "Which correspond to the following Java-Packages:" +
            StrCSV.toCSV(offendingPackages, PRINTER_02, true, null) + '\n' +
            "\n" +

            "However, because these package(s) were marked using the " +
            BCYAN + "DO_NOT_DOCUMENT" + RESET + " BuildPackage-Flag, they " +
                "may not be run through the Stage-3 (Java-Doc Upgrader) Build-Step, or " + 
                "the Stage-5 (Java-Doc Cloud-Synchronization) Build-Step.\n" +
            "\n" + 

            "You have made the follwing Main-Menu Choice: " +
                BGREEN + '"' + sor.MENU_CHOICE + '"' + RESET + "\n" +
            "So, please, either remove these particular packages from your CLI-Command, " +
                "or select an alternate Main-Menu Choice.\n"
        );

        System.exit(1); throw null;
    }
}