private void printJson()

in src/main/java/org/apache/sling/event/impl/jobs/console/InventoryPlugin.java [296:494]


    private void printJson(final PrintWriter pw) {
        pw.println("{");
        Statistics s = this.jobManager.getStatistics();
        pw.println("  \"statistics\" : {");
        pw.printf("    \"startTime\" : %s,%n", s.getStartTime());
        pw.printf("    \"startTimeText\" : \"%s\",%n", formatDate(s.getStartTime()));
        pw.printf("    \"lastActivatedJobTime\" : %s,%n", s.getLastActivatedJobTime());
        pw.printf("    \"lastActivatedJobTimeText\" : \"%s\",%n", formatDate(s.getLastActivatedJobTime()));
        pw.printf("    \"lastFinishedJobTime\" : %s,%n", s.getLastFinishedJobTime());
        pw.printf("    \"lastFinishedJobTimeText\" : \"%s\",%n", formatDate(s.getLastFinishedJobTime()));
        pw.printf("    \"numberOfQueuedJobs\" : %s,%n", s.getNumberOfQueuedJobs());
        pw.printf("    \"numberOfActiveJobs\" : %s,%n", s.getNumberOfActiveJobs());
        pw.printf("    \"numberOfJobs\" : %s,%n", s.getNumberOfJobs());
        pw.printf("    \"numberOfFinishedJobs\" : %s,%n", s.getNumberOfFinishedJobs());
        pw.printf("    \"numberOfFailedJobs\" : %s,%n", s.getNumberOfFailedJobs());
        pw.printf("    \"numberOfCancelledJobs\" : %s,%n", s.getNumberOfCancelledJobs());
        pw.printf("    \"numberOfProcessedJobs\" : %s,%n", s.getNumberOfProcessedJobs());
        pw.printf("    \"averageProcessingTime\" : %s,%n", s.getAverageProcessingTime());
        pw.printf("    \"averageProcessingTimeText\" : \"%s\",%n", formatTime(s.getAverageProcessingTime()));
        pw.printf("    \"averageWaitingTime\" : %s,%n", s.getAverageWaitingTime());
        pw.printf("    \"averageWaitingTimeText\" : \"%s\"%n", formatTime(s.getAverageWaitingTime()));
        pw.print("  }");

        final TopologyCapabilities cap = this.configuration.getTopologyCapabilities();
        if ( cap != null ) {
            pw.println(",");
            pw.println("  \"capabilities\" : [");
            final Map<String, List<InstanceDescription>> instanceCaps = cap.getInstanceCapabilities();
            final Iterator<Map.Entry<String, List<InstanceDescription>>> iter = instanceCaps.entrySet().iterator();
            while ( iter.hasNext() ) {
                final Map.Entry<String, List<InstanceDescription>> entry = iter.next();
                final List<String> instances = new ArrayList<>();
                for(final InstanceDescription id : entry.getValue()) {
                    if ( id.isLocal() ) {
                        instances.add("local");
                    } else {
                        instances.add(id.getSlingId());
                    }
                }
                pw.println("    {");
                pw.printf("       \"topic\" : \"%s\",%n", entry.getKey());
                pw.printf("       \"instances\" : %s%n", formatArrayAsJson(instances.toArray(new String[instances.size()])));
                if ( iter.hasNext() ) {
                    pw.println("    },");
                } else {
                    pw.println("    }");
                }
            }
            pw.print("  ]");
        }

        boolean first = true;
        final Collection<ScheduledJobInfo> infos = this.jobManager.getScheduledJobs();
        for(final ScheduledJobInfo info : infos) {
            pw.println(",");
            if ( first ) {
                pw.println("  \"scheduledJobs\" : [");
                first = false;
            }

            pw.println("    {");
            pw.printf("      \"jobTopic\" : \"%s\",%n", info.getJobTopic());
            pw.println("      \"schedules\" : [");
            boolean internalFirst = true;
            for(final ScheduleInfo si : info.getSchedules() ) {
                if ( !internalFirst ) {
                    pw.println(", ");
                }
                internalFirst = false;
                pw.println("        {");
                switch ( si.getType() ) {
                    case YEARLY :
                        pw.printf("          \"type\" : \"%s\",%n", "YEARLY");
                        pw.printf("          \"schedule\" : \"%s %s : %s:%s\"%n", si.getMonthOfYear(),
                                si.getDayOfMonth(), si.getHourOfDay(), si.getMinuteOfHour());
                        break;
                    case MONTHLY :
                        pw.printf("          \"type\" : \"%s\",%n", "MONTHLY");
                        pw.printf("          \"schedule\" : \"%s : %s:%s\"%n", si.getDayOfMonth(), si.getHourOfDay(),
                                si.getMinuteOfHour());
                        break;
                    case WEEKLY :
                        pw.printf("          \"type\" : \"%s\",%n", "WEEKLY");
                        pw.printf("          \"schedule\" : \"%s : %s:%s\"%n", si.getDayOfWeek(), si.getHourOfDay(),
                                si.getMinuteOfHour());
                        break;
                    case DAILY :
                        pw.printf("          \"type\" : \"%s\",%n", "DAILY");
                        pw.printf("          \"schedule\" : \"%s:%s\"%n", si.getHourOfDay(), si.getMinuteOfHour());
                        break;
                    case HOURLY :
                        pw.printf("          \"type\" : \"%s\",%n", "HOURLY");
                        pw.printf("          \"schedule\" : \"%s\"%n", si.getMinuteOfHour());
                        break;
                    case CRON :
                        pw.printf("          \"type\" : \"%s\",%n", "CRON");
                        pw.printf("          \"schedule\" : \"%s\"%n", si.getExpression());
                        break;
                    default :
                        pw.printf("          \"type\" : \"%s\",%n", "AT");
                        pw.printf("          \"schedule\" : \"%s\"%n", si.getAt());
                }
                pw.print("        }");
            }

            pw.println("      ]");
            pw.println("    }");
        }
        if ( !first ) {
            pw.print("  ]");
        }

        first = true;
        for(final Queue q : this.jobManager.getQueues()) {
            pw.println(",");
            if ( first ) {
                pw.println("  \"queues\" : [");
                first = false;
            }
            pw.println("    {");
            pw.printf("      \"name\" : \"%s\",%n", q.getName());
            pw.printf("      \"suspended\" : %s,%n", q.isSuspended());

            s = q.getStatistics();
            pw.println("      \"statistics\" : {");
            pw.printf("        \"startTime\" : %s,%n", s.getStartTime());
            pw.printf("        \"startTimeText\" : \"%s\",%n", formatDate(s.getStartTime()));
            pw.printf("        \"lastActivatedJobTime\" : %s,%n", s.getLastActivatedJobTime());
            pw.printf("        \"lastActivatedJobTimeText\" : \"%s\",%n", formatDate(s.getLastActivatedJobTime()));
            pw.printf("        \"lastFinishedJobTime\" : %s,%n", s.getLastFinishedJobTime());
            pw.printf("        \"lastFinishedJobTimeText\" : \"%s\",%n", formatDate(s.getLastFinishedJobTime()));
            pw.printf("        \"numberOfQueuedJobs\" : %s,%n", s.getNumberOfQueuedJobs());
            pw.printf("        \"numberOfActiveJobs\" : %s,%n", s.getNumberOfActiveJobs());
            pw.printf("        \"numberOfJobs\" : %s,%n", s.getNumberOfJobs());
            pw.printf("        \"numberOfFinishedJobs\" : %s,%n", s.getNumberOfFinishedJobs());
            pw.printf("        \"numberOfFailedJobs\" : %s,%n", s.getNumberOfFailedJobs());
            pw.printf("        \"numberOfCancelledJobs\" : %s,%n", s.getNumberOfCancelledJobs());
            pw.printf("        \"numberOfProcessedJobs\" : %s,%n", s.getNumberOfProcessedJobs());
            pw.printf("        \"averageProcessingTime\" : %s,%n", s.getAverageProcessingTime());
            pw.printf("        \"averageProcessingTimeText\" : \"%s\",%n", formatTime(s.getAverageProcessingTime()));
            pw.printf("        \"averageWaitingTime\" : %s,%n", s.getAverageWaitingTime());
            pw.printf("        \"averageWaitingTimeText\" : \"%s\"%n", formatTime(s.getAverageWaitingTime()));
            pw.print("      },");

            final QueueConfiguration c = q.getConfiguration();
            pw.printf("      \"stateInfo\" : \"%s\",%n", q.getStateInfo());
            pw.println("      \"configuration\" : {");
            pw.printf("        \"type\" : \"%s\",%n", c.getType());
            pw.printf("        \"topics\" : %s,%n", formatArrayAsJson(c.getTopics()));
            pw.printf("        \"maxParallel\" : %s,%n", c.getMaxParallel());
            pw.printf("        \"maxRetries\" : %s,%n", c.getMaxRetries());
            pw.printf("        \"retryDelayInMs\" : %s,%n", c.getRetryDelayInMs());
            pw.printf("        \"priority\" : \"%s\"%n", c.getThreadPriority());
            pw.println("      }");
            pw.print("    }");
        }
        if ( !first ) {
            pw.print("  ]");
        }

        first = true;
        for(final TopicStatistics ts : this.jobManager.getTopicStatistics()) {
            pw.println(",");
            if ( first ) {
                pw.println("  \"topicStatistics\" : [");
                first = false;
            }
            pw.println("    {");
            pw.printf("      \"topic\" : \"%s\",%n", ts.getTopic());
            pw.printf("      \"lastActivatedJobTime\" : %s,%n", ts.getLastActivatedJobTime());
            pw.printf("      \"lastActivatedJobTimeText\" : \"%s\",%n", formatDate(ts.getLastActivatedJobTime()));
            pw.printf("      \"lastFinishedJobTime\" : %s,%n", ts.getLastFinishedJobTime());
            pw.printf("      \"lastFinishedJobTimeText\" : \"%s\",%n", formatDate(ts.getLastFinishedJobTime()));
            pw.printf("      \"numberOfFinishedJobs\" : %s,%n", ts.getNumberOfFinishedJobs());
            pw.printf("      \"numberOfFailedJobs\" : %s,%n", ts.getNumberOfFailedJobs());
            pw.printf("      \"numberOfCancelledJobs\" : %s,%n", ts.getNumberOfCancelledJobs());
            pw.printf("      \"numberOfProcessedJobs\" : %s,%n", ts.getNumberOfProcessedJobs());
            pw.printf("      \"averageProcessingTime\" : %s,%n", ts.getAverageProcessingTime());
            pw.printf("      \"averageProcessingTimeText\" : \"%s\",%n", formatTime(ts.getAverageProcessingTime()));
            pw.printf("      \"averageWaitingTime\" : %s,%n", ts.getAverageWaitingTime());
            pw.printf("      \"averageWaitingTimeText\" : \"%s\"%n", formatTime(ts.getAverageWaitingTime()));
            pw.print("    }");
        }
        if ( !first ) {
            pw.print("  ]");
        }

        pw.println(",");
        pw.println("  \"configurations\" : [");
        this.printQueueConfigurationJson(pw, this.configuration.getQueueConfigurationManager().getMainQueueConfiguration());
        final InternalQueueConfiguration[] configs = this.configuration.getQueueConfigurationManager().getConfigurations();
        for(final InternalQueueConfiguration c : configs ) {
            pw.println(",");
            this.printQueueConfigurationJson(pw, c);
        }
        pw.println();
        pw.println("  ]");
        pw.println("}");
    }