mirror of
https://bitbucket.org/anguist/ntpa
synced 2025-10-06 02:51:23 +00:00
208 lines
9.6 KiB
C#
208 lines
9.6 KiB
C#
//
|
|
// Billboard.cs
|
|
//
|
|
// Author:
|
|
// Carsten Sonne Larsen <cs@innolan.dk>
|
|
//
|
|
// Copyright (c) 2013 Carsten Sonne Larsen
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Ntp.Process
|
|
{
|
|
public static class Billboard
|
|
{
|
|
public static string Schedule (IEnumerable<ScheduledJob> jobs)
|
|
{
|
|
StringBuilder builder = new StringBuilder ();
|
|
|
|
builder.AppendLine ("Server time: " + DateTime.Now.ToLongTimeString ());
|
|
builder.AppendLine ();
|
|
|
|
builder.Append ("ID".PadRight (4));
|
|
builder.Append ("Job".PadRight (15));
|
|
builder.Append ("Ini".PadLeft (4));
|
|
builder.Append ("Fix".PadLeft (5));
|
|
builder.Append ("Freq".PadLeft (6));
|
|
builder.Append ("Prio".PadLeft (5));
|
|
builder.Append ("Runs".PadLeft (6));
|
|
builder.Append (" ");
|
|
builder.Append ("Next".PadRight (8));
|
|
builder.AppendLine ();
|
|
|
|
int size = 4 + 15 + 4 + 5 + 6 + 5 + 6 + 3 + 8 + 2;
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
IEnumerable<ScheduledJob> orderedJobs = jobs.OrderBy (j => j.Run);
|
|
|
|
foreach (ScheduledJob job in orderedJobs) {
|
|
builder.Append (job.Job.JobId.ToString ("00").PadRight (4));
|
|
builder.Append (job.Job.Description.Name.Substring (0, job.Job.Description.Name.Length > 15 ? 15 : job.Job.Description.Name.Length).PadRight (15));
|
|
builder.Append ((job.Job.Schedule.InitialRun ? " 1" : " 0").PadLeft (4));
|
|
builder.Append ((job.Job.Schedule.FixedRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append (job.Job.Schedule.Frequency.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (job.Job.Description.Priority.ToString (CultureInfo.InvariantCulture).PadLeft (5));
|
|
builder.Append (job.Job.RunCount.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (" ");
|
|
builder.Append (job.Run.ToLongTimeString ().PadLeft (8));
|
|
builder.AppendLine ();
|
|
}
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
return builder.ToString ();
|
|
}
|
|
|
|
public static string Jobs (IEnumerable<Job> jobs)
|
|
{
|
|
StringBuilder builder = new StringBuilder ();
|
|
|
|
builder.Append ("ID".PadRight (3));
|
|
builder.Append ("Act".PadRight (4));
|
|
builder.Append ("Job".PadRight (15));
|
|
builder.Append ("Que".PadLeft (5));
|
|
builder.Append ("Ini".PadLeft (5));
|
|
builder.Append ("Fix".PadLeft (5));
|
|
builder.Append ("Freq".PadLeft (6));
|
|
builder.Append ("Prio".PadLeft (5));
|
|
builder.Append ("Runs".PadLeft (6));
|
|
builder.Append (" ");
|
|
builder.Append ("Description");
|
|
builder.AppendLine ();
|
|
|
|
int size = 3 + 4 + 15 + 5 + 5 + 5 + 6 + 5 + 6 + 3 + 25;
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
IEnumerable<Job> orderedJobs = jobs.OrderBy (j => j.Description.Priority);
|
|
|
|
foreach (Job job in orderedJobs) {
|
|
builder.Append (job.JobId.ToString ("00").PadRight (3));
|
|
builder.Append (job.Running ? " * " : " ");
|
|
builder.Append (job.Description.Name.Substring (0, job.Description.Name.Length > 15 ? 15 : job.Description.Name.Length).PadRight (15));
|
|
builder.Append ((job.Queued ? " 1" : " 0").PadLeft (5));
|
|
builder.Append ((job.Schedule.InitialRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append ((job.Schedule.FixedRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append (job.Schedule.Frequency.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (job.Description.Priority.ToString (CultureInfo.InvariantCulture).PadLeft (5));
|
|
builder.Append (job.RunCount.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (" ");
|
|
builder.Append (job.Description.JobType);
|
|
builder.AppendLine ();
|
|
}
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
return builder.ToString ();
|
|
}
|
|
|
|
public static string Running (IEnumerable<Job> jobs)
|
|
{
|
|
if (jobs.Where (j => j.Running).Count () == 0) {
|
|
return "No jobs are currently running.";
|
|
}
|
|
|
|
StringBuilder builder = new StringBuilder ();
|
|
|
|
builder.Append ("ID".PadRight (4));
|
|
builder.Append ("Job".PadRight (16));
|
|
builder.Append ("Ini".PadLeft (5));
|
|
builder.Append ("Fix".PadLeft (5));
|
|
builder.Append ("Freq".PadLeft (7));
|
|
builder.Append ("Prio".PadLeft (6));
|
|
builder.Append ("Runs".PadLeft (5));
|
|
builder.Append (" ");
|
|
builder.Append ("State".PadRight (12));
|
|
builder.Append ("Time".PadRight (15));
|
|
builder.AppendLine ();
|
|
|
|
int size = 4 + 16 + 5 + 5 + 7 + 6 + 5 + 3 + 12 + 15 + 2;
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
IEnumerable<Job> orderedJobs = jobs.Where (j => j.Running).OrderBy (j => j.JobId);
|
|
|
|
foreach (Job job in orderedJobs) {
|
|
builder.Append (job.JobId.ToString ("00").PadRight (4));
|
|
builder.Append (job.Description.Name.Substring (0, job.Description.Name.Length > 15 ? 15 : job.Description.Name.Length).PadRight (15));
|
|
builder.Append ((job.Schedule.InitialRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append ((job.Schedule.FixedRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append (job.Schedule.Frequency.ToString (CultureInfo.InvariantCulture).PadLeft (7));
|
|
builder.Append (job.Description.Priority.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (job.RunCount.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (" ");
|
|
builder.Append (job.State.PadRight (12));
|
|
builder.Append (job.Runtime.PadLeft (15).Substring (0, 15));
|
|
builder.AppendLine ();
|
|
}
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
return builder.ToString ();
|
|
}
|
|
|
|
public static string Proc (IEnumerable<Job> jobs)
|
|
{
|
|
StringBuilder builder = new StringBuilder ();
|
|
|
|
builder.Append ("ID".PadRight (4));
|
|
builder.Append ("Job".PadRight (16));
|
|
builder.Append ("Ini".PadLeft (5));
|
|
builder.Append ("Fix".PadLeft (5));
|
|
builder.Append ("Freq".PadLeft (7));
|
|
builder.Append ("Prio".PadLeft (6));
|
|
builder.Append ("Runs".PadLeft (5));
|
|
builder.Append (" ");
|
|
builder.Append ("State".PadRight (12));
|
|
builder.Append ("Time".PadRight (15));
|
|
builder.AppendLine ();
|
|
|
|
int size = 4 + 16 + 5 + 5 + 7 + 6 + 5 + 3 + 12 + 15 + 2;
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
IEnumerable<Job> orderedJobs = jobs.OrderBy (j => j.JobId);
|
|
|
|
foreach (Job job in orderedJobs) {
|
|
builder.Append (job.JobId.ToString ("00").PadRight (4));
|
|
builder.Append (job.Description.Name.Substring (0, job.Description.Name.Length > 15 ? 15 : job.Description.Name.Length).PadRight (15));
|
|
builder.Append ((job.Schedule.InitialRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append ((job.Schedule.FixedRun ? " 1" : " 0").PadLeft (5));
|
|
builder.Append (job.Schedule.Frequency.ToString (CultureInfo.InvariantCulture).PadLeft (7));
|
|
builder.Append (job.Description.Priority.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (job.RunCount.ToString (CultureInfo.InvariantCulture).PadLeft (6));
|
|
builder.Append (" ");
|
|
builder.Append (job.State.PadRight (12));
|
|
builder.Append (job.TotalRuntime.PadLeft (15).Substring (0, 15));
|
|
builder.AppendLine ();
|
|
}
|
|
|
|
builder.AppendLine (String.Empty.PadLeft (size, '-'));
|
|
|
|
return builder.ToString ();
|
|
}
|
|
}
|
|
}
|