Exemplo n.º 1
0
        //public Print Find2(string filename, out string error)
        //{
        //    error = null;
        //    if (_trace)
        //        Trace.CurrentTrace.WriteLine("search \"{0}\"", filename);
        //    foreach (RegexValues rv in _printRegexList2.Values)
        //    {
        //        Match match = rv.Match(filename);
        //        if (match.Success)
        //        {
        //            Print print = Get(rv.Name);
        //            print.NewIssue();
        //            NamedValues values = rv.GetValues();
        //            if (_trace)
        //            {
        //                Trace.CurrentTrace.WriteLine("found {0}", print.Name);
        //                values.zTrace();
        //            }
        //            if (!print.TrySetValues(values))
        //            {
        //                error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
        //                continue;
        //            }

        //            if (MatchRegexValues(print, print.NormalizedFilename, filename, out error))
        //                return print;
        //            if (MatchRegexValues(print, print.NormalizedSpecialFilename, filename, out error))
        //                return print;
        //            string filename2 = filename.Substring(0, match.Index) + filename.Substring(match.Index + match.Length);
        //            if (_trace)
        //                Trace.CurrentTrace.WriteLine("search date \"{0}\" (\"{1}\")", filename2, filename);
        //            foreach (RegexValues rv2 in _dateRegexList.Values)
        //            {
        //                match = rv.Match(filename2);
        //                if (match.Success)
        //                {
        //                    values = rv2.GetValues();
        //                    if (date.IsDateValid(values))
        //                    {
        //                        //print.SetValues(values);
        //                        if (!print.TrySetValues(values))
        //                        {
        //                            error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
        //                            continue;
        //                        }
        //                        return print;
        //                    }
        //                }
        //            }
        //            //return print;
        //        }
        //    }
        //    if (_trace)
        //        Trace.CurrentTrace.WriteLine("print not found \"{0}\"", filename);
        //    return null;
        //    //foreach (Print print in _prints.Values)
        //    //{
        //    //    Match match = print.MatchFilename(filename);
        //    //    //if (print.IsMatchFilename(filename))
        //    //    if (match != null && match.Success)
        //    //    {
        //    //        if (_trace)
        //    //            Trace.CurrentTrace.WriteLine("found {0}", print.Name);
        //    //        if (MatchRegexValues(print, print.NormalizedFilename, filename, out error))
        //    //            return print;
        //    //        if (MatchRegexValues(print, print.NormalizedSpecialFilename, filename, out error))
        //    //            return print;
        //    //        string filename2 = filename.Substring(0, match.Index) + filename.Substring(match.Index + match.Length);
        //    //        if (_trace)
        //    //            Trace.CurrentTrace.WriteLine("search date \"{0}\" (\"{1}\")", filename2, filename);
        //    //        //RegexValues rv = _dateRegexList.Find(filename2);
        //    //        foreach (RegexValues rv in _dateRegexList.Values)
        //    //        {
        //    //            match = rv.Match(filename2);
        //    //            if (match.Success)
        //    //            {
        //    //                Dictionary<string, object> values = rv.GetValues();
        //    //                if (date.IsValidDate(values))
        //    //                {
        //    //                    print.SetValues(values);
        //    //                    return print;
        //    //                }
        //    //            }
        //    //        }
        //    //    }
        //    //}
        //    //return null;
        //}

        private bool MatchRegexValues(Print1 print, RegexValues rv, string filename, out string error)
        {
            error = null;
            //Match match = rv.Match_old(filename);
            MatchValues matchValues = rv.Match(filename);

            //if (!match.Success)
            if (!matchValues.Success)
            {
                return(false);
            }
            //NamedValues<ZValue> values = rv.GetValues_old();
            NamedValues <ZValue> values = matchValues.GetValues();

            if (_trace)
            {
                values.zTrace();
            }

            if (!print.TrySetValues(values))
            {
                error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
                return(false);
            }
            return(true);
        }
Exemplo n.º 2
0
        //
        static void Main(string[] args)
        {
            var print1 = new Print1();
            var print2 = new Print2();

            print1.Print();
            print2.Print();
        }
Exemplo n.º 3
0
        public Print1 Find0(string filename, out string error)
        {
            error = null;
            if (_trace)
            {
                Trace.CurrentTrace.WriteLine("search \"{0}\"", filename);
            }
            //FindText_old findText = _printRegexList.Find_old(filename);
            FindText findText = _printRegexList.Find(filename);

            if (!findText.Found)
            {
                if (_trace)
                {
                    Trace.CurrentTrace.WriteLine("print not found \"{0}\"", filename);
                }
                return(null);
            }
            //Print1 print = Get(findText.regexValues.Name);
            Print1 print = Get(findText.matchValues.Name);
            //NamedValues<ZValue> values = findText.regexValues.GetValues_old();
            NamedValues <ZValue> values = findText.matchValues.GetValues();

            if (_trace)
            {
                bool first = true;
                foreach (KeyValuePair <string, ZValue> value in values)
                {
                    if (!first)
                    {
                        Trace.CurrentTrace.Write(", ");
                    }
                    first = false;
                    Trace.CurrentTrace.Write("{0}={1}", value.Key, value.Value);
                }
                Trace.CurrentTrace.WriteLine();
            }
            if (!print.TrySetValues(values))
            {
                error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
                return(null);
            }
            return(print);
        }
Exemplo n.º 4
0
        public Print1 Find(string filename, out string error)
        {
            error = null;
            if (_trace)
            {
                Trace.CurrentTrace.WriteLine("search \"{0}\"", filename);
            }
            foreach (RegexValues rv in _printRegexList.Values)
            {
                //Match match = rv.Match_old(filename);
                MatchValues matchValues = rv.Match(filename);
                //if (match.Success)
                if (matchValues.Success)
                {
                    Print1 print = Get(rv.Name);
                    print.NewIssue();
                    //NamedValues<ZValue> values = rv.GetValues_old();
                    NamedValues <ZValue> values = matchValues.GetValues();
                    if (_trace)
                    {
                        values.zTrace();
                    }
                    if (!print.TrySetValues(values))
                    {
                        error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
                        continue;
                    }
                    return(print);
                }
            }

            if (_trace)
            {
                Trace.CurrentTrace.WriteLine("print not found \"{0}\"", filename);
            }
            return(null);
        }
Exemplo n.º 5
0
        private void init(XElement xelement)
        {
            _directory = xelement.zXPathValue("Directory");

            Dictionary<string, RegexValuesModel> regexModels = new Dictionary<string, RegexValuesModel>();
            // zElements("FilenamesModel/FilenameModel")
            foreach (XElement xe in xelement.zXPathElements("FilenamesModel/FilenameModel"))
            {
                RegexValuesModel rvm = new RegexValuesModel(xe);
                regexModels.Add(rvm.key, rvm);
            }

            _regexModels = new Dictionary<string, RegexValuesModel>();
            // zElements("FilenameModels/FilenameModel")
            foreach (XElement xe in xelement.zXPathElements("FilenameModels/FilenameModel"))
            {
                RegexValuesModel rvm = new RegexValuesModel(xe);
                _regexModels.Add(rvm.key, rvm);
            }
            // zElements("FilenameDates/FilenameDate")
            _dateRegexList = new RegexValuesList(xelement.zXPathElements("FilenameDates/FilenameDate"));
            //if (_trace)
            //    Trace.CurrentTrace.WriteLine("_dateRegexList {0}", _dateRegexList.Count);

            _printRegexList = new RegexValuesList();
            _printRegexList2 = new RegexValuesList();
            _prints = new Dictionary<string, Print1>();
            // zElements("Prints/Print")
            foreach (XElement xe in xelement.zXPathElements("Prints/Print"))
            {
                Print1 print = null;
                switch (xe.zXPathValue("Class"))
                {
                    case "LeMonde":
                        print = new LeMonde(xe, _directory, _regexModels);
                        break;
                    case "LeParisien":
                        print = new LeParisien(xe, _directory, _regexModels);
                        break;
                    case "LeVifExpress":
                        print = new LeVifExpress(xe, _directory, _regexModels);
                        break;
                    default:
                        print = new Print1(xe, _directory, _regexModels);
                        break;
                }
                string name = print.Name;
                _prints.Add(name, print);
                int n = 1;
                // zElements("Filenames/Filename")
                foreach (XElement xe2 in xe.zXPathElements("Filenames/Filename"))
                {
                    string key = name + n++.ToString();
                    //string name = xe2.zExplicitAttributeValue("name");
                    //string model = xe2.zExplicitAttributeValue("model");
                    string model = xe2.zAttribValue("model");
                    if (model != null)
                    {
                        if (!regexModels.ContainsKey(model))
                            throw new PBException("unknow filename model \"{0}\"", model);
                        RegexValuesModel rvm = regexModels[model];
                        //Dictionary<string, string> attribs = (from xa in xe2.Attributes() where xa.Name.ToString().StartsWith("v_") select xa).zAttribs();
                        Dictionary<string, string> attribs = new Dictionary<string, string>();
                        attribs.zAdd(from xa in xe2.Attributes() where xa.Name.ToString().StartsWith("v_") select xa);
                        string pattern = rvm.pattern.zSetTextVariables(attribs, true);
                        //Trace.CurrentTrace.WriteLine("\"{0}\" - \"{1}\"", rvm.pattern, pattern);
                        //string values = xe2.zAttribValue("values");
                        //if (values != null)
                        //{
                        //    if (rvm.values != null && rvm.values != "")
                        //        values = rvm.values + ", " + values;
                        //}
                        //else
                        //    values = rvm.values;
                        string values = rvm.values;
                        if (values != null)
                            values = values.zSetTextVariables(attribs, true);
                        _printRegexList.Add(key, new RegexValues(key, name, pattern, rvm.options, values));
                    }
                    else
                    {
                        string regex = xe2.zExplicitAttribValue("regex");
                        string values = xe2.zExplicitAttribValue("values");
                        string options = xe2.zAttribValue("options");
                        _printRegexList.Add(key, new RegexValues(key, name, regex, options, values));
                    }
                }

                n = 1;
                // zElements("Filenames2/Filename")
                foreach (XElement xe2 in xe.zXPathElements("Filenames2/Filename"))
                {
                    string key = name + n++.ToString();
                    string regex = xe2.zExplicitAttribValue("regex");
                    string values = xe2.zAttribValue("values");
                    string options = xe2.zAttribValue("options");
                    _printRegexList2.Add(key, new RegexValues(key, name, regex, options, values));
                }
            }
        }
Exemplo n.º 6
0
        //public Print Find2(string filename, out string error)
        //{
        //    error = null;
        //    if (_trace)
        //        Trace.CurrentTrace.WriteLine("search \"{0}\"", filename);
        //    foreach (RegexValues rv in _printRegexList2.Values)
        //    {
        //        Match match = rv.Match(filename);
        //        if (match.Success)
        //        {
        //            Print print = Get(rv.Name);
        //            print.NewIssue();
        //            NamedValues values = rv.GetValues();
        //            if (_trace)
        //            {
        //                Trace.CurrentTrace.WriteLine("found {0}", print.Name);
        //                values.zTrace();
        //            }
        //            if (!print.TrySetValues(values))
        //            {
        //                error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
        //                continue;
        //            }

        //            if (MatchRegexValues(print, print.NormalizedFilename, filename, out error))
        //                return print;
        //            if (MatchRegexValues(print, print.NormalizedSpecialFilename, filename, out error))
        //                return print;
        //            string filename2 = filename.Substring(0, match.Index) + filename.Substring(match.Index + match.Length);
        //            if (_trace)
        //                Trace.CurrentTrace.WriteLine("search date \"{0}\" (\"{1}\")", filename2, filename);
        //            foreach (RegexValues rv2 in _dateRegexList.Values)
        //            {
        //                match = rv.Match(filename2);
        //                if (match.Success)
        //                {
        //                    values = rv2.GetValues();
        //                    if (date.IsDateValid(values))
        //                    {
        //                        //print.SetValues(values);
        //                        if (!print.TrySetValues(values))
        //                        {
        //                            error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
        //                            continue;
        //                        }
        //                        return print;
        //                    }
        //                }
        //            }
        //            //return print;
        //        }
        //    }
        //    if (_trace)
        //        Trace.CurrentTrace.WriteLine("print not found \"{0}\"", filename);
        //    return null;
        //    //foreach (Print print in _prints.Values)
        //    //{
        //    //    Match match = print.MatchFilename(filename);
        //    //    //if (print.IsMatchFilename(filename))
        //    //    if (match != null && match.Success)
        //    //    {
        //    //        if (_trace)
        //    //            Trace.CurrentTrace.WriteLine("found {0}", print.Name);
        //    //        if (MatchRegexValues(print, print.NormalizedFilename, filename, out error))
        //    //            return print;
        //    //        if (MatchRegexValues(print, print.NormalizedSpecialFilename, filename, out error))
        //    //            return print;
        //    //        string filename2 = filename.Substring(0, match.Index) + filename.Substring(match.Index + match.Length);
        //    //        if (_trace)
        //    //            Trace.CurrentTrace.WriteLine("search date \"{0}\" (\"{1}\")", filename2, filename);
        //    //        //RegexValues rv = _dateRegexList.Find(filename2);
        //    //        foreach (RegexValues rv in _dateRegexList.Values)
        //    //        {
        //    //            match = rv.Match(filename2);
        //    //            if (match.Success)
        //    //            {
        //    //                Dictionary<string, object> values = rv.GetValues();
        //    //                if (date.IsValidDate(values))
        //    //                {
        //    //                    print.SetValues(values);
        //    //                    return print;
        //    //                }
        //    //            }
        //    //        }
        //    //    }
        //    //}
        //    //return null;
        //}

        private bool MatchRegexValues(Print1 print, RegexValues rv, string filename, out string error)
        {
            error = null;
            //Match match = rv.Match_old(filename);
            MatchValues matchValues = rv.Match(filename);
            //if (!match.Success)
            if (!matchValues.Success)
                return false;
            //NamedValues<ZValue> values = rv.GetValues_old();
            NamedValues<ZValue> values = matchValues.GetValues();

            if (_trace)
                values.zTrace();

            if (!print.TrySetValues(values))
            {
                error = string.Format("find \"{0}\" error \"{1}\"", print.Name, values.Error);
                return false;
            }
            return true;
        }
Exemplo n.º 7
0
        private void init(XElement xelement)
        {
            _directory = xelement.zXPathValue("Directory");

            Dictionary <string, RegexValuesModel> regexModels = new Dictionary <string, RegexValuesModel>();

            // zElements("FilenamesModel/FilenameModel")
            foreach (XElement xe in xelement.zXPathElements("FilenamesModel/FilenameModel"))
            {
                RegexValuesModel rvm = new RegexValuesModel(xe);
                regexModels.Add(rvm.key, rvm);
            }

            _regexModels = new Dictionary <string, RegexValuesModel>();
            // zElements("FilenameModels/FilenameModel")
            foreach (XElement xe in xelement.zXPathElements("FilenameModels/FilenameModel"))
            {
                RegexValuesModel rvm = new RegexValuesModel(xe);
                _regexModels.Add(rvm.key, rvm);
            }
            // zElements("FilenameDates/FilenameDate")
            _dateRegexList = new RegexValuesList(xelement.zXPathElements("FilenameDates/FilenameDate"));
            //if (_trace)
            //    Trace.CurrentTrace.WriteLine("_dateRegexList {0}", _dateRegexList.Count);

            _printRegexList  = new RegexValuesList();
            _printRegexList2 = new RegexValuesList();
            _prints          = new Dictionary <string, Print1>();
            // zElements("Prints/Print")
            foreach (XElement xe in xelement.zXPathElements("Prints/Print"))
            {
                Print1 print = null;
                switch (xe.zXPathValue("Class"))
                {
                case "LeMonde":
                    print = new LeMonde(xe, _directory, _regexModels);
                    break;

                case "LeParisien":
                    print = new LeParisien(xe, _directory, _regexModels);
                    break;

                case "LeVifExpress":
                    print = new LeVifExpress(xe, _directory, _regexModels);
                    break;

                default:
                    print = new Print1(xe, _directory, _regexModels);
                    break;
                }
                string name = print.Name;
                _prints.Add(name, print);
                int n = 1;
                // zElements("Filenames/Filename")
                foreach (XElement xe2 in xe.zXPathElements("Filenames/Filename"))
                {
                    string key = name + n++.ToString();
                    //string name = xe2.zExplicitAttributeValue("name");
                    //string model = xe2.zExplicitAttributeValue("model");
                    string model = xe2.zAttribValue("model");
                    if (model != null)
                    {
                        if (!regexModels.ContainsKey(model))
                        {
                            throw new PBException("unknow filename model \"{0}\"", model);
                        }
                        RegexValuesModel rvm = regexModels[model];
                        //Dictionary<string, string> attribs = (from xa in xe2.Attributes() where xa.Name.ToString().StartsWith("v_") select xa).zAttribs();
                        Dictionary <string, string> attribs = new Dictionary <string, string>();
                        attribs.zAdd(from xa in xe2.Attributes() where xa.Name.ToString().StartsWith("v_") select xa);
                        string pattern = rvm.pattern.zSetTextVariables(attribs, true);
                        //Trace.CurrentTrace.WriteLine("\"{0}\" - \"{1}\"", rvm.pattern, pattern);
                        //string values = xe2.zAttribValue("values");
                        //if (values != null)
                        //{
                        //    if (rvm.values != null && rvm.values != "")
                        //        values = rvm.values + ", " + values;
                        //}
                        //else
                        //    values = rvm.values;
                        string values = rvm.values;
                        if (values != null)
                        {
                            values = values.zSetTextVariables(attribs, true);
                        }
                        _printRegexList.Add(key, new RegexValues(key, name, pattern, rvm.options, values));
                    }
                    else
                    {
                        string regex   = xe2.zExplicitAttribValue("regex");
                        string values  = xe2.zExplicitAttribValue("values");
                        string options = xe2.zAttribValue("options");
                        _printRegexList.Add(key, new RegexValues(key, name, regex, options, values));
                    }
                }

                n = 1;
                // zElements("Filenames2/Filename")
                foreach (XElement xe2 in xe.zXPathElements("Filenames2/Filename"))
                {
                    string key     = name + n++.ToString();
                    string regex   = xe2.zExplicitAttribValue("regex");
                    string values  = xe2.zAttribValue("values");
                    string options = xe2.zAttribValue("options");
                    _printRegexList2.Add(key, new RegexValues(key, name, regex, options, values));
                }
            }
        }