public static void loadReferenceCvn() { string FileName = Path.Combine(Application.StartupPath, "XML", "Reference-CVN.xml"); if (!File.Exists(FileName)) { return; } referenceCvnList = new List <referenceCvn>(); System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(List <referenceCvn>)); System.IO.StreamReader file = new System.IO.StreamReader(FileName); referenceCvnList = (List <referenceCvn>)reader.Deserialize(file); file.Close(); foreach (referenceCvn refCvn in referenceCvnList) { for (int i = 0; i < StockCVN.Count; i++) { if (StockCVN[i].PN == refCvn.PN) { CVN C1 = StockCVN[i]; C1.ReferenceCvn = refCvn.CVN; StockCVN.RemoveAt(i); StockCVN.Insert(i, C1); } } } }
private void btnImportCSV_Click(object sender, EventArgs e) { string FileName = SelectFile("CSV files (*.csv)|*.csv|All files (*.*)|*.*"); if (FileName.Length == 0) { return; } StreamReader sr = new StreamReader(FileName); string line; while ((line = sr.ReadLine()) != null) { string[] lineparts = line.Split(';'); if (lineparts.Length == 2) { CVN C1 = new CVN(); C1.PN = lineparts[0]; C1.cvn = lineparts[1]; bool isinlist = false; for (int i = 0; i < StockCVN.Count; i++) { if (StockCVN[i].PN == C1.PN) { isinlist = true; if (StockCVN[i].cvn != C1.cvn) { //Update, is not correct CVN Logger("Updating PN: " + C1.PN + " Old: " + StockCVN[i].cvn + ", new: " + C1.cvn); C1.SegmentNr = StockCVN[i].SegmentNr; C1.Ver = StockCVN[i].Ver; C1.XmlFile = StockCVN[i].XmlFile; StockCVN.RemoveAt(i); StockCVN.Insert(i, C1); } } } if (!isinlist) { StockCVN.Add(C1); } } } sr.Close(); LoadStockCVN(); }
public static string CheckStockCVN(string PN, string Ver, string SegNr, string cvn, bool AddToList) { string retVal = "[n/a]"; for (int c = 0; c < StockCVN.Count; c++) { //if (StockCVN[c].XmlFile == Path.GetFileName(XMLFile) && StockCVN[c].PN == PN && StockCVN[c].Ver == Ver && StockCVN[c].SegmentNr == SegNr && StockCVN[c].cvn == cvn) if (StockCVN[c].PN == PN && StockCVN[c].Ver == Ver && StockCVN[c].SegmentNr == SegNr) { if (Path.GetFileName(XMLFile) != StockCVN[c].XmlFile && StockCVN[c].AlternateXML == null) { CVN c1 = StockCVN[c]; c1.AlternateXML = Path.GetFileName(XMLFile); StockCVN.RemoveAt(c); StockCVN.Insert(c, c1); } if (StockCVN[c].cvn == cvn) { retVal = "[stock]"; break; } else { retVal = "[modded]"; break; //return "[modded]"; } } } if (retVal == "[n/a]") { //Check if it's in referencelist bool cvnMismatch = false; uint refC = 0; uint cvnInt = 0; if (!HexToUint(cvn, out cvnInt)) { throw new Exception("Can't convert from HEX: " + cvn); } string refString = ""; for (int r = 0; r < referenceCvnList.Count; r++) { if (PN == referenceCvnList[r].PN) { refString = referenceCvnList[r].CVN; cvnMismatch = true; //Found from referencelist, match not found YET if (!HexToUint(referenceCvnList[r].CVN, out refC)) { throw new Exception("Can't convert from HEX: " + referenceCvnList[r].CVN); } if (refC == cvnInt) { Debug.WriteLine("PN: " + PN + " CVN found from Referencelist: " + referenceCvnList[r].CVN); cvnMismatch = false; //Found from referencelist, no mismatch } ushort refShort; if (!HexToUshort(referenceCvnList[r].CVN, out refShort)) { throw new Exception("Can't convert from HEX: " + referenceCvnList[r].CVN); } if (SwapBytes(refShort) == cvnInt) { Debug.WriteLine("PN: " + PN + " byteswapped CVN found from Referencelist: " + referenceCvnList[r].CVN); cvnMismatch = false; //Found from referencelist, no mismatch } break; } } if (cvnMismatch) //Found from referencelist, have mismatch { bool isInBadCvnList = false; AddToList = false; //Don't add to CVN list if add to mismatch CVN if (BadCvnList == null) { BadCvnList = new List <CVN>(); } for (int i = 0; i < BadCvnList.Count; i++) { if (BadCvnList[i].PN == PN && BadCvnList[i].cvn == cvn) { isInBadCvnList = true; Debug.WriteLine("PN: " + PN + ", CVN: " + cvn + " is already in badCvnList"); break; } } if (!isInBadCvnList) { Debug.WriteLine("Adding PN: " + PN + ", CVN: " + cvn + " to badCvnList"); CVN C1 = new CVN(); C1.cvn = cvn; C1.PN = PN; C1.SegmentNr = SegNr; C1.Ver = Ver; C1.XmlFile = Path.GetFileName(XMLFile); C1.ReferenceCvn = refString.TrimStart('0'); BadCvnList.Add(C1); } } } if (AddToList && retVal != "[stock]") { bool IsinCVNlist = false; if (ListCVN == null) { ListCVN = new List <CVN>(); } for (int c = 0; c < ListCVN.Count; c++) { //if (ListCVN[c].XmlFile == Path.GetFileName(XMLFile) && ListCVN[c].PN == PN && ListCVN[c].Ver == Ver && ListCVN[c].SegmentNr == SegNr && ListCVN[c].cvn == cvn) if (ListCVN[c].PN == PN && ListCVN[c].Ver == Ver && ListCVN[c].SegmentNr == SegNr && ListCVN[c].cvn == cvn) { Debug.WriteLine("Already in CVN list: " + cvn); IsinCVNlist = true; break; } } if (!IsinCVNlist) { CVN C1 = new CVN(); C1.cvn = cvn; C1.PN = PN; C1.SegmentNr = SegNr; C1.Ver = Ver; C1.XmlFile = Path.GetFileName(XMLFile); for (int r = 0; r < referenceCvnList.Count; r++) { if (referenceCvnList[r].PN == C1.PN) { C1.ReferenceCvn = referenceCvnList[r].CVN.TrimStart('0'); break; } } ListCVN.Add(C1); } } return(retVal); }