private void executeCommand()

in server/apps/cli/src/main/java/org/apache/james/cli/ServerCmd.java [251:329]


    private void executeCommand(String[] arguments, CmdType cmdType, PrintStream printStream) throws Exception {
        switch (cmdType) {
            case ADDUSER -> probe.addUser(arguments[1], arguments[2]);
            case REMOVEUSER -> probe.removeUser(arguments[1]);
            case LISTUSERS -> print(probe.listUsers(), printStream);
            case ADDDOMAIN -> probe.addDomain(arguments[1]);
            case REMOVEDOMAIN -> probe.removeDomain(arguments[1]);
            case CONTAINSDOMAIN -> {
                if (probe.containsDomain(arguments[1])) {
                    printStream.println(arguments[1] + " exists");
                } else {
                    printStream.println(arguments[1] + " does not exists");
                }
            }
            case LISTDOMAINS -> print(probe.listDomains(), printStream);
            case ADDDOMAINMAPPING -> probe.addDomainMapping(arguments[1], arguments[2]);
            case REMOVEDOMAINMAPPING -> probe.removeDomainMapping(arguments[1], arguments[2]);
            case LISTDOMAINMAPPINGS -> {
                Mappings domainMappings = probe.listDomainMappings(arguments[1]);
                print(domainMappings.asStrings(), printStream);
            }
            case LISTMAPPINGS -> print(probe.listMappings(), printStream);
            case LISTUSERDOMAINMAPPINGS -> {
                Mappings userDomainMappings = probe.listUserDomainMappings(arguments[1], arguments[2]);
                print(userDomainMappings.asStrings(), printStream);
            }
            case ADDADDRESSMAPPING -> probe.addAddressMapping(arguments[1], arguments[2], arguments[3]);
            case REMOVEADDRESSMAPPING -> probe.removeAddressMapping(arguments[1], arguments[2], arguments[3]);
            case ADDREGEXMAPPING -> probe.addRegexMapping(arguments[1], arguments[2], arguments[3]);
            case REMOVEREGEXMAPPING -> probe.removeRegexMapping(arguments[1], arguments[2], arguments[3]);
            case SETPASSWORD -> probe.setPassword(arguments[1], arguments[2]);
            case COPYMAILBOX -> mailboxProbe.copyMailbox(arguments[1], arguments[2]);
            case DELETEUSERMAILBOXES -> mailboxProbe.deleteUserMailboxesNames(arguments[1]);
            case CREATEMAILBOX -> mailboxProbe.createMailbox(arguments[1], arguments[2], arguments[3]);
            case LISTUSERMAILBOXES -> {
                Collection<String> mailboxes = mailboxProbe.listUserMailboxes(arguments[1]);
                print(mailboxes.toArray(String[]::new), printStream);
            }
            case DELETEMAILBOX -> mailboxProbe.deleteMailbox(arguments[1], arguments[2], arguments[3]);
            case IMPORTEML ->
                mailboxProbe.importEmlFileToMailbox(arguments[1], arguments[2], arguments[3], arguments[4]);
            case GETSTORAGEQUOTA ->
                printStorageQuota(arguments[1], quotaProbe.getStorageQuota(arguments[1]), printStream);
            case GETMESSAGECOUNTQUOTA ->
                printMessageQuota(arguments[1], quotaProbe.getMessageCountQuota(arguments[1]), printStream);
            case GETQUOTAROOT ->
                printStream.println("Quota Root: " + quotaProbe.getQuotaRoot(arguments[1], arguments[2], arguments[3]));
            case GETMAXSTORAGEQUOTA -> printStream.println("Storage space allowed for Quota Root "
                + arguments[1] + ": " + formatStorageValue(quotaProbe.getMaxStorage(arguments[1])));
            case GETMAXMESSAGECOUNTQUOTA -> printStream.println("MailboxMessage count allowed for Quota Root "
                + arguments[1] + ": " + formatMessageValue(quotaProbe.getMaxMessageCount(arguments[1])));
            case SETMAXSTORAGEQUOTA -> quotaProbe.setMaxStorage(arguments[1], parseQuotaSize(arguments[2]));
            case SETMAXMESSAGECOUNTQUOTA -> quotaProbe.setMaxMessageCount(arguments[1], parseQuotaCount(arguments[2]));
            case SETGLOBALMAXSTORAGEQUOTA -> quotaProbe.setGlobalMaxStorage(parseQuotaSize(arguments[1]));
            case SETGLOBALMAXMESSAGECOUNTQUOTA -> quotaProbe.setGlobalMaxMessageCount(parseQuotaCount(arguments[1]));
            case GETGLOBALMAXSTORAGEQUOTA ->
                printStream.println("Global Maximum Storage Quota: " + formatStorageValue(quotaProbe.getGlobalMaxStorage()));
            case GETGLOBALMAXMESSAGECOUNTQUOTA ->
                printStream.println("Global Maximum message count Quota: " + formatMessageValue(quotaProbe.getGlobalMaxMessageCount()));
            case REINDEXMAILBOX -> mailboxProbe.reIndexMailbox(arguments[1], arguments[2], arguments[3]);
            case REINDEXALL -> mailboxProbe.reIndexAll();
            case SETSIEVEQUOTA -> sieveProbe.setSieveQuota(Size.parse(arguments[1]).asBytes());
            case SETSIEVEUSERQUOTA -> sieveProbe.setSieveQuota(arguments[1], Size.parse(arguments[2]).asBytes());
            case GETSIEVEQUOTA -> printStream.println("Storage space allowed for Sieve scripts by default: "
                + formatStorageValue(sieveProbe.getSieveQuota()));
            case GETSIEVEUSERQUOTA -> printStream.println("Storage space allowed for "
                + arguments[1] + " Sieve scripts: " + formatStorageValue(sieveProbe.getSieveQuota(arguments[1])));
            case REMOVESIEVEQUOTA -> sieveProbe.removeSieveQuota();
            case REMOVESIEVEUSERQUOTA -> sieveProbe.removeSieveQuota(arguments[1]);
            case ADDACTIVESIEVESCRIPT ->
                sieveProbe.addActiveSieveScriptFromFile(arguments[1], arguments[2], arguments[3]);
            case ADDDROPLISTENTRY -> dropListProbe.addDropListEntry(arguments[1], arguments[2], arguments[3]);
            case REMOVEDROPLISTENTRY -> dropListProbe.removeDropListEntry(arguments[1], arguments[2], arguments[3]);
            case GETDROPLIST -> print(dropListProbe.getDropList(arguments[1], arguments[2]), printStream);
            case DROPLISTQUERY ->
                print(List.of(dropListProbe.runDropListQuery(arguments[1], arguments[2], arguments[3])), printStream);
            default -> throw new UnrecognizedCommandException(cmdType.getCommand());
        }
    }