protected object Convert2Date(RecWrapper rec, string field, string[] fieldvalues, object data)
 {
     DateTime dt;
     return DateTime.TryParseExact(fieldvalues[0], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt) ? dt.ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture) : string.Empty;
 }
 private bool ProcessLine(DataMappingInfo headerInfo, string line, RecWrapper rec)
 {
     try
     {
         string[] fields;
         Exception error = null;
         if (MappedDataHelper.ProcessLine(headerInfo, line, rec, this, out fields, ref error, new[] { ',' }))
         {
             if (string.IsNullOrEmpty(rec.Datetime))
                 rec.Datetime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);
             return true;
         }
         throw error ?? new Exception("Unknown error in data helper process line");
     }
     catch (Exception e)
     {
         L.Log(LogType.FILE, LogLevel.ERROR, "Error while processing line:[" + line + "]:" + e);
     }
     return false;
 }
        private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                L.Log(LogType.FILE, LogLevel.INFORM, "Begin Processing LastFile(" + lastFile + ") LastRecord(" + lastPosition + ")");
                if (!InitializeInstance())
                    return;

                if (!GetLastFile(false))
                    return;

                PrepareEncoding(ref encoding);

                var recordSent = 0;
                Dictionary<string, int> header = null;
                var svc = GetInstanceService(usingRegistry ? "Security Manager Sender" : "Security Manager Remote Recorder");
                while (recordSent < max_record_send)
                {
                    var fInfo = new FileInfo(Path.Combine(Location, lastFile));
                    if (fInfo.Exists)
                    {
                        using (
                            var inp = new FileStream(fInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
                            )
                        {
                            long position = 0;

                            var headerInfo = GetHeaderInfo(inp, ref header, ref position);
                            if (headerInfo == null)
                            {
                                L.Log(LogType.FILE, LogLevel.WARN, fInfo.FullName + " has no header");
                            }
                            else
                            {
                                WarnForMissingHeaders(fInfo, headerInfo, header);
                                if (position > lastPosition)
                                {
                                    SetReg(Id, position.ToString(CultureInfo.InvariantCulture), string.Empty, fInfo.Name,
                                           string.Empty);
                                    lastPosition = position;
                                }
                                inp.Seek(lastPosition, SeekOrigin.Begin);
                                var line = string.Empty;
                                var reader = new BufferedLineReader(inp);
                                var nl = 0;
                                var rec = new RecWrapper();
                                while (recordSent < max_record_send &&
                                       (line = reader.ReadLine(encoding, ref nl)) != null)
                                {
                                    if (ProcessLine(headerInfo, line, rec))
                                    {
                                        rec.LogName = "DHCPRecorder";
                                        rec.CustomStr9 = headerInfo.Name;
                                        svc.SetData(_dal, _virtualHost, rec.rec);
                                        recordSent++;
                                    }
                                    svc.SetReg(Id, reader.Position.ToString(CultureInfo.InvariantCulture), string.Empty,
                                               fInfo.Name, string.Empty, rec.Datetime);
                                    lastPosition = reader.Position;
                                }
                                if (recordSent == max_record_send)
                                    return;
                            }
                        }
                    }
                    if (isLastFileInLocation)
                        return;
                    if (!GetLastFile(true))
                        return;
                }
            }
            catch (Exception ex)
            {
                L.Log(LogType.FILE, LogLevel.ERROR, "Error in timer handler:" + ex);
            }
            finally
            {
                timer1.Enabled = true;
            }
        }
 protected static object Convert2Int64(RecWrapper record, string field, string[] values, object data)
 {
     var l = 0L;
     return Int64.TryParse(values[0], out l) ? l : 0L;
 }
 private void ClearRecord(RecWrapper rec)
 {
     foreach (var pInfo in typeof(RecWrapper).GetProperties())
     {
         pInfo.SetValue(rec, pInfo.PropertyType.IsValueType ? Activator.CreateInstance(pInfo.PropertyType) : null, null);
     }
 }
 protected static object Convert2Date(RecWrapper record, string field, string[] values, object data)
 {
     DateTime dt;
     var recorder = data as DHCPRecorder;
     if (DateTime.TryParseExact(values[0] + " " + values[1], "M/d/y H:m:s", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)
         || DateTime.TryParseExact(values[0] + " " + values[1], "M/d/yyyy H:m:s", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
         return dt.AddSeconds(recorder == null ? 0 : recorder.zone).ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);
     return string.Empty;
 }
 protected static object Convert2Int32(RecWrapper record, string field, string[] values, object data)
 {
     var i = 0;
     return Int32.TryParse(values[0], out i) ? i : 0;
 }
 protected static object VersionConcat(RecWrapper record, string field, string[] values, object data)
 {
     if (string.IsNullOrEmpty(values[0]))
         return UrlDecode(values[1]);
     if (string.IsNullOrEmpty(values[1]))
         return UrlDecode(values[0]);
     return UrlDecode(values[0] + " " + values[1]);
 }
        protected static object DescriptionSplitter(RecWrapper record, string field, string[] values, object data)
        {
            if (string.IsNullOrEmpty(values[0]))
            {
                record.CustomStr1 = string.Empty;
                return string.Empty;
            }

            var uriStr = UrlDecode(values[0]);
            var parts = uriStr.Split(new[] { ';' }, 2);
            if (parts.Length == 2)
                record.CustomStr1 = StringHelper.MakeSureLength(parts[1], 900);

            return StringHelper.MakeSureLength(parts[0], 900);
        }
 protected static object CustomStr5Splitter(RecWrapper record, string field, string[] values, object data)
 {
     return StringHelper.MakeSureLength(values[0], 900);
 }
        protected static object CustomStr1Splitter(RecWrapper record, string field, string[] values, object data)
        {
            if (string.IsNullOrEmpty(values[0]))
                return values[0];

            var uriStr = UrlDecode(values[0]);
            if (uriStr.Length > 1800)
                record.CustomStr10 = uriStr.Substring(900, 900);
            else if (uriStr.Length > 900)
                record.CustomStr10 = uriStr.Substring(900, uriStr.Length - 900);
            return StringHelper.MakeSureLength(uriStr, 900);
        }
 protected virtual NextInstruction ApplyConstraints(RecWrapper recWrapper)
 {
     if (ConstrainedDataLookup == null)
         return NextInstruction.Do;
     foreach (var constraintCollection in ConstrainedDataLookup)
     {
         var consApplied = constraintCollection.Value.Apply(recWrapper, null);
         if ((consApplied & NextInstruction.Continue) != NextInstruction.Continue)
             return consApplied;
     }
     return NextInstruction.Do;
 }