コード例 #1
0
 protected static RFDate?GetCollectionDate(string field, FormCollection collection, RFDate?defaultValue = null)
 {
     try
     {
         var strVal = GetCollectionString(field, collection);
         if (!string.IsNullOrWhiteSpace(strVal))
         {
             return(RFDate.Parse(strVal));
         }
     }
     catch (Exception)
     {
     }
     return(defaultValue);
 }
コード例 #2
0
        protected static RFDate?GetJsonDate(string field, JToken obj, bool mandatory = false)
        {
            var v = obj[field] as JValue;

            if (v?.Value != null)
            {
                if (v.Value is DateTime)
                {
                    return((DateTime)v.Value);
                }
                else
                {
                    return(RFDate.Parse(v.Value.ToString()));
                }
            }
            if (mandatory)
            {
                throw new RFLogicException(typeof(RIFFController), "Mandatory field {0} not found.", field);
            }
            return(null);
        }
コード例 #3
0
        public void ExecuteCommand(string input)
        {
            if (!string.IsNullOrWhiteSpace(input))
            {
                var tokens = new RIFF.Interfaces.Formats.CSV.CSVParser(input, ' ').Where(t => !string.IsNullOrWhiteSpace(t)).ToArray();

                switch (tokens[0])
                {
                case "importupdates":
                {
                    if (tokens.Length < 2)
                    {
                        Console.WriteLine("Usage: importupdates,<path>");
                        break;
                    }

                    var c = RFCatalogMaintainer.ImportCatalogUpdates(_context, tokens[1]);
                    Console.WriteLine("Imported {0} documents", c);
                    break;
                }

                case "exportupdates":
                {
                    if (tokens.Length < 3)
                    {
                        Console.WriteLine("Usage: exportupdates,<startDate>,<path>");
                        break;
                    }
                    var startDate = RFDate.Parse(tokens[1], "yyyy-MM-dd");

                    var c = RFCatalogMaintainer.ExportCatalogUpdates(_context, tokens[2], startDate, null, null);
                    Console.WriteLine("Exported {0} documents", c);
                    break;
                }

                case "run":
                case "runsequential":
                {
                    if (tokens.Length == 1)
                    {
                        Console.WriteLine("Usage: run,<fullProcessName>,<graphInstance>,<startDate>,[endDate]");
                        break;
                    }
                    var processName = tokens[1];
                    if (tokens.Length > 2)
                    {
                        var graphInstanceName = tokens[2];
                        var startDate         = RFDate.Parse(tokens[3], "yyyy-MM-dd");
                        var endDate           = startDate;
                        if (tokens.Length > 4)
                        {
                            endDate = RFDate.Parse(tokens[4], "yyyy-MM-dd");
                        }
                        var instructions = new List <RFInstruction>();
                        while (startDate <= endDate)
                        {
                            var graphInstance = new RFGraphInstance
                            {
                                Name      = graphInstanceName,
                                ValueDate = startDate
                            };
                            instructions.Add(new RFGraphProcessInstruction(graphInstance, processName));
                            startDate = startDate.OffsetDays(1);
                        }
                        var ra      = new RFRequestActivity(_context, _config);
                        var tracker = ra.Submit(null, instructions, null);
                        while (!tracker.IsComplete)
                        {
                            Thread.Sleep(100);
                        }
                        Console.WriteLine("Finished: #{0} cycles, #{1} keys, last run {2}.", tracker.FinishedCycles, tracker.KeyCount, tracker.CurrentProcess);
                        foreach (var message in tracker.Messages)
                        {
                            Console.WriteLine("Message: {0}: {1}", message.Key, message.Value);
                        }
                    }
                    else
                    {
                        // non-graph
                        var instruction = new RFParamProcessInstruction(
                            processName, new RFEngineProcessorKeyParam(RFGenericCatalogKey.Create(_config.KeyDomain, "dummy", "dummy", null)));

                        var ra      = new RFRequestActivity(_context, _config);
                        var tracker = ra.Submit(null, new List <RFInstruction> {
                                instruction
                            }, null);
                        while (!tracker.IsComplete)
                        {
                            Thread.Sleep(100);
                        }
                        Console.WriteLine("Finished: #{0} cycles, #{1} keys, last run {2}.", tracker.FinishedCycles, tracker.KeyCount, tracker.CurrentProcess);
                        foreach (var message in tracker.Messages)
                        {
                            Console.WriteLine("Message: {0}: {1}", message.Key, message.Value);
                        }
                    }
                    break;
                }

                case "error":
                {
                    _context.SystemLog.Error(this, "System Log error message");
                    //_context.SystemLog.Exception(this, "System Log exception message", new Exception("Test exception"));
                    break;
                }

                case "version":
                {
                    var runLicense = RFPublicRSA.GetHost(_config.LicenseTokens.Key, _config.LicenseTokens.Value);
                    Console.WriteLine("RIFF Framework {0} | (c) rohatsu software studios limited | www.rohatsu.com", RFCore.sVersion);
                    Console.WriteLine("Licensed to '{0}' ({1})", runLicense.Key, runLicense.Value.ToString(RFCore.sDateFormat));
                    Console.WriteLine("Loaded engine {0} from {1} in environment {2}", _engine?.EngineName, _engine?.Assembly, _engine.Environment);
                    break;
                }

                case "email":
                {
                    if (tokens.Length > 1)
                    {
                        var e = new RFGenericEmail(new RFEmailConfig
                            {
                                Enabled = true,
                                To      = tokens[1]
                            }, string.Format("<html><body>Test email from RIFF System.<p/>Sent on {0} from {1}.</body></html>", DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss \"GMT\"zzz"), Environment.MachineName));
                        e.Send("RIFF Test e-mail");
                    }
                    else
                    {
                        Console.WriteLine("provide email address as parameter");
                    }
                }
                break;

                case "list":
                {
                    Console.WriteLine("== PROCESSES");
                    foreach (var p in _config.Processes.OrderBy(p => p.Key))
                    {
                        Console.WriteLine($"\"{p.Key}\" -> {p.Value.Processor().GetType().Name}");
                    }
                    Console.WriteLine("== GRAPHS");
                    foreach (var g in _config.Graphs.OrderBy(g => g.Key))
                    {
                        foreach (var p in g.Value.Processes.OrderBy(p => p.Key))
                        {
                            Console.WriteLine($"\"{RFGraphDefinition.GetFullName(g.Key, p.Key)}\" -> {p.Value.Processor().GetType().Name}");
                        }
                    }
                }
                break;

                case "scheduler":
                {
                    if (tokens.Length == 1)
                    {
                        Console.WriteLine("Controls task scheduler. Commands: list, reload");
                        break;
                    }
                    _context.RaiseEvent(this, new RFServiceEvent {
                            ServiceName = RFSchedulerService.SERVICE_NAME, ServiceCommand = tokens[1], ServiceParams = tokens.Length > 2 ? tokens[2] : null
                        });
                    break;
                }

                case "rebuildgraph":
                {
                    if (tokens.Length < 4)
                    {
                        Console.WriteLine("Usage: rebuild,<graphNameOrBlank>,<graphInstance>,<startDate>,[endDate]");
                        break;
                    }
                    var graphName         = tokens[1];
                    var graphInstanceName = tokens[2];
                    if (tokens.Length > 3)
                    {
                        var startDate = RFDate.Parse(tokens[3], "yyyy-MM-dd");
                        var endDate   = startDate;
                        if (tokens.Length > 4)
                        {
                            endDate = RFDate.Parse(tokens[4], "yyyy-MM-dd");
                        }
                        var instructions = new List <RFInstruction>();

                        // queue all graph processes
                        foreach (var vd in RFDate.Range(startDate, endDate, d => true))
                        {
                            var instance = new RFGraphInstance
                            {
                                Name      = graphInstanceName,
                                ValueDate = vd
                            };

                            foreach (var g in this._config.Graphs.Values.Where(g => graphName.IsBlank() || g.GraphName.StartsWith(graphName, StringComparison.OrdinalIgnoreCase)))
                            {
                                foreach (var gp in g.Processes.Values)
                                {
                                    var processName = RFGraphDefinition.GetFullName(gp.GraphName, gp.Name);
                                    instructions.Add(new RFGraphProcessInstruction(instance, processName));
                                }
                            }
                        }

                        if (instructions.Any())
                        {
                            var tracker = new RFRequestActivity(_context, _config).Submit(null, instructions, null);
                            while (!tracker.IsComplete)
                            {
                                Thread.Sleep(100);
                            }
                            Console.WriteLine("Finished: #{0} cycles, #{1} keys, last run {2}.", tracker.FinishedCycles, tracker.KeyCount, tracker.CurrentProcess);
                            foreach (var message in tracker.Messages)
                            {
                                Console.WriteLine("Message: {0}: {1}", message.Key, message.Value);
                            }
                        }
                    }
                }
                break;

                case "exit":
                case "quit":
                    _isExiting = true;
                    break;

                default:
                {
                    if (_engineConsole != null)
                    {
                        var queueCommands = new List <string>();
                        if (!_engineConsole.RunCommand(tokens, queueCommands))
                        {
                            Console.WriteLine(String.Format("Unrecognized command '{0}'", tokens[0]));
                        }
                        foreach (var c in queueCommands)
                        {
                            ExecuteCommand(c);
                        }
                    }
                }
                break;
                }
            }
        }
コード例 #4
0
 // Summary: Reads the JSON representation of the object.
 //
 // Parameters: reader: The Newtonsoft.Json.JsonReader to read from.
 //
 // objectType: Type of the object.
 //
 // existingValue: The existing value of object being read.
 //
 // serializer: The calling serializer.
 //
 // Returns: The object value.
 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 {
     return(RFDate.Parse(reader.ReadAsString()));
 }