예제 #1
0
        public SampleWorkflow(Sample sample, DataLocker <Sample> locker) : base(sample, locker)
        {
            int id = sample.Id;

            SampleTests.AddFilter(() => e => e.SampleId == id);

            var task = UpdateChildsAsync();

            SetState(sample.Stage);
        }
예제 #2
0
        public SampleWorkflow(Sample sample, DataLocker <Sample> locker) : base(sample, locker)
        {
            var id = sample.Id;

            SampleTests.AddFilter(() => e => e.SampleId == id);

            H <SampleWorkflow> .Initialize(this);

            var task = UpdateChildrenAsync();

            SetState(sample.Stage);
        }
예제 #3
0
        public void Log(LogLevel level, string message, params object[] args)
        {
            string str = args.Length > 0 ? string.Format(message, args) : message;

#if DEBUG
            Trace.WriteLine(str);
#endif

            /*
             * switch(level)
             * {
             * case LogLevel.debug:    logger.Debug(str);
             *          break;
             *
             * case LogLevel.info:     logger.Info(str);
             *          break;
             *
             * case LogLevel.warning:  logger.Warn(str);
             *          break;
             *
             * case LogLevel.error:    logger.Error(str);
             *          break;
             *
             * case LogLevel.fatal:    logger.Fatal(str);
             *          break;
             * }
             */

            using (DataLocker <List <LogEntry> > entries = Entries)
            {
                LogEntry entry = new LogEntry(m_entriesID++, str, level);

                entries.Data.Add(entry);
                if (entries.Data.Count > ENTRIES_LIMIT)
                {
                    entries.Data.RemoveAt(0);
                }

                // LogEvent is fired inside the lock to sync the new entry and the prop "Entries"
                if (LogEvent != null)
                {
                    LogEvent(entry);
                }
            }
        }
예제 #4
0
        private void UpdateLogHandler(bool attach)
        {
            if (m_hasLogHandler == attach)
            {
                return;
            }

            if (attach)
            {
                using (DataLocker <List <LogEntry> > entries = LogsManager.Instance.Entries)
                {
                    m_logsCollection.Clear();

                    foreach (LogEntry entry in entries.Data)
                    {
                        OnLog(entry.Message, false);
                    }

                    BindLogs();

                    LogsManager.Instance.AddHandler(OnLogEvent);
                }

                /*
                 * List<LogItem> logsCollection = new List<LogItem>();
                 *
                 * Random rnd = new Random();
                 * int count = rnd.Next(1, 100);
                 * for(int i = 0; i < count; i++)
                 * {
                 *      logsCollection.Add(new LogItem { Content = i.ToString() });
                 * }
                 *
                 * m_logsView.ItemsSource = logsCollection;
                 */
            }
            else
            {
                LogsManager.Instance.RemoveHandler(OnLogEvent);
            }

            m_hasLogHandler = attach;
        }
예제 #5
0
        public void LockObjectTest()
        {
            try
            {
                var pc   = new ControllerContainer.PartController();
                var part = pc.Select(1);

                var dl = new DataLocker("deadbeef", 1);
                dl.Add(part);

                part.Amount     = 4040.00f;
                part.LastUpdate = DateTime.Now;

                var same = dl.Validate(part);

                Assert.AreNotEqual(same, false);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(0, 1);
                Debug.Write(ex);
            }
        }
예제 #6
0
        private List <string> GetCurrentLog(FormatType formatType = FormatType.HTML, LogTime logTime = LogTime.UTC)
        {
            SimpleDateFormat dateFormatter     = null;
            Date             logCurrenTimeZone = null;
            Calendar         calendar          = null;
            List <string>    logItem           = null;
            long             utcTimeStamp      = 0;

            string log = "";

            calendar = Calendar.Instance;

            dateFormatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");

            if (logTime == LogTime.UTC)
            {
                dateFormatter.TimeZone = Java.Util.TimeZone.GetTimeZone("GMT");
            }

            using (DataLocker <List <LogEntry> > entries = LogsManager.Instance.Entries)
            {
                logItem = new List <string>();

                foreach (LogEntry entry in entries.Data)
                {
                    utcTimeStamp = (entry.Timestamp.Ticks / TimeSpan.TicksPerSecond) - unixEpochTime;

                    calendar.TimeInMillis = utcTimeStamp * 1000;
                    logCurrenTimeZone     = (Date)calendar.Time;

                    switch (formatType)
                    {
                    case FormatType.HTML:
                    {
                        log = "<font color='blue'>" + dateFormatter.Format(logCurrenTimeZone) + "</font> [<font color='";

                        switch (entry.Level)
                        {
                        case LogLevel.debug:
                        {
                            log += "purple";
                        }
                        break;

                        case LogLevel.error:
                        {
                            log += "red";
                        }
                        break;

                        case LogLevel.fatal:
                        {
                            log += "red";
                        }
                        break;

                        case LogLevel.info:
                        {
                            log += "darkgreen";
                        }
                        break;

                        case LogLevel.warning:
                        {
                            log += "orange";
                        }
                        break;

                        default:
                        {
                            log += "black";
                        }
                        break;
                        }

                        log += "'>" + entry.Level + "</font>]: " + entry.Message;
                    }
                    break;

                    case FormatType.PLAIN_TEXT:
                    {
                        log = dateFormatter.Format(logCurrenTimeZone) + " UTC [" + entry.Level + "] " + entry.Message;
                    }
                    break;

                    default:
                    {
                        log = "";
                    }
                    break;
                    }

                    logItem.Add(log);
                }
            }

            return(logItem);
        }