public bool Insert(MessageCache value)
        {
            bool result = false;

            MessageCacheHibernate hibernate = new MessageCacheHibernate();
            result = hibernate.Insert(value);

            return result;
        }
        public bool Insert(MessageCache value)
        {
            bool result = false;

            DatabaseHibernate hibernate = new DatabaseHibernate();

            if (value != null)
            {
                string sql = string.Empty;
                List<Parameter> parameters = new List<Parameter>();

                DateTime refreshTime = DateTime.Now;
                refreshTime = refreshTime.AddDays(-100);

                sql = string.Format("delete from e_message_cache where [refresh_time] < #{0}#", refreshTime.ToString("yyyy-MM-dd HH:mm:ss"));
                parameters.Clear();
                result = hibernate.Write(Variable.Link, sql, parameters);

                if (result)
                {
                    sql = string.Format("insert into e_message_cache ({0}) values (:guid, :insert_user_id, :insert_time, :update_user_id, :update_time, :remark, :validity, :ip, :machine, :code, :result, :send_time, :refresh_time)", this.Asterisk(""));
                    parameters.Clear();

                    parameters.Add(new Parameter("guid", DatabaseHibernate.Parameter(DatabaseHibernate.GUID())));
                    parameters.Add(new Parameter("insert_user_id", DatabaseHibernate.Parameter(value.InsertUserId)));
                    parameters.Add(new Parameter("insert_time", DatabaseHibernate.Parameter(value.InsertTime)));
                    parameters.Add(new Parameter("update_user_id", DatabaseHibernate.Parameter(value.UpdateUserId)));
                    parameters.Add(new Parameter("update_time", DatabaseHibernate.Parameter(value.UpdateTime)));
                    parameters.Add(new Parameter("remark", DatabaseHibernate.Parameter(value.Remark)));
                    parameters.Add(new Parameter("validity", DatabaseHibernate.Parameter(value.Validity)));

                    parameters.Add(new Parameter("ip", DatabaseHibernate.Parameter(value.Ip)));
                    parameters.Add(new Parameter("machine_id", DatabaseHibernate.Parameter(value.MachineId)));
                    parameters.Add(new Parameter("code", DatabaseHibernate.Parameter(value.Code)));
                    parameters.Add(new Parameter("result", DatabaseHibernate.Parameter(value.Result)));
                    parameters.Add(new Parameter("send_time", DatabaseHibernate.Parameter(value.SendTime)));
                    parameters.Add(new Parameter("refresh_time", DatabaseHibernate.Parameter(value.RefreshTime)));

                    result = hibernate.Write(Variable.Link, sql, parameters);
                }
            }

            return result;
        }
        public MessageCache Parse(object[] values, List<Machine> machines, List<DetectorType> detectorTypes)
        {
            MessageCache result = new MessageCache();

            try
            {
                result = DatabaseHibernate.ParseModule(result, values) as MessageCache;

                result.Ip = DatabaseHibernate.ParseString(values[7]);
                result.MachineId = DatabaseHibernate.ParseString(values[8]);
                result.Code = DatabaseHibernate.ParseByte(values[9]);
                result.Result = DatabaseHibernate.ParseBoolean(values[10]);
                result.SendTime = DatabaseHibernate.ParseDateTime(values[11]);
                result.RefreshTime = DatabaseHibernate.ParseDateTime(values[12]);

                for (int i = 0; i < machines.Count; i++)
                {
                    if (string.Equals(result.MachineId, machines[i].Guid, StringComparison.CurrentCultureIgnoreCase))
                    {
                        result.Machine = machines[i];
                        break;
                    }
                }

                result.DetectorType = new DetectorType();
                for (int i = 0; i < detectorTypes.Count; i++)
                {
                    if (result.Code == detectorTypes[i].Code)
                    {
                        result.DetectorType = detectorTypes[i];
                        break;
                    }
                }
            }
            catch (Exception exception)
            {
                result = null;
                EnvironmentalMonitor.Support.Resource.Variable.Logger.Log(exception);
            }

            return result;
        }
        public override ProcessResult Process(string ip, InstructionTask instructionTask)
        {
            ProcessResult result = new ProcessResult();
            result.Done = false;
            result.Message = string.Empty;

            if ((instructionTask != null) && (instructionTask.Instructions != null) && (instructionTask.Instructions.Count > 0))
            {
                for (int i = 0; i < instructionTask.Instructions.Count; i++)
                {
                    MessageInstruction instruction = instructionTask.Instructions[i] as MessageInstruction;
                    if (instruction != null)
                    {
                        string userId = this.GetType().Name;
                        DateTime now = DateTime.Now;

                        MessageCache messageCache = new MessageCache();

                        messageCache.InsertUserId = ip;
                        messageCache.InsertTime = now;
                        messageCache.UpdateUserId = userId;
                        messageCache.UpdateTime = now;
                        messageCache.Remark = string.Empty;
                        messageCache.Validity = true;

                        messageCache.Ip = ip;
                        messageCache.Code = instruction.Code;
                        messageCache.Result = instruction.Result;
                        messageCache.SendTime = instruction.SendTime;

                        MachineBusiness machineBusiness = new MachineBusiness();
                        Machine machine = machineBusiness.QueryByIp(ip);
                        if (machine != null)
                        {
                            messageCache.MachineId = machine.Guid;
                        }

                        messageCache.RefreshTime = now;

                        MessageCacheBusiness messageCacheBusiness = new MessageCacheBusiness();
                        result.Done = messageCacheBusiness.Insert(messageCache);
                    }
                }
            }

            return result;
        }