//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); }
// static void Main(string[] args) { var print1 = new Print1(); var print2 = new Print2(); print1.Print(); print2.Print(); }
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); }
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); }
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)); } } }
//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; }
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)); } } }