public void Sync(bool pushOnly) { try { SQLiteDBClass db = new SQLiteDBClass(); EDSMClass edsm = new EDSMClass(); edsm.apiKey = EDDiscoveryForm.EDDConfig.CurrentCommander.APIKey; edsm.commanderName = EDDiscoveryForm.EDDConfig.CurrentCommander.Name; //string comments = edsm.GetComments(new DateTime(2015, 1, 1)); List <SystemPosition> log; int ret = edsm.GetLogs(new DateTime(2011, 1, 1), out log); if (log == null) { log = new List <SystemPosition>(); } // Send Unsynced system to EDSM. List <SystemPosition> systems = (from s in mainForm.VisitedSystems where s.vs != null && s.vs.EDSM_sync == false && s.vs.Commander == EDDiscoveryForm.EDDConfig.CurrentCommander.Nr select s).ToList <SystemPosition>(); mainForm.LogLine("EDSM: Sending " + systems.Count.ToString() + " flightlog entries", Color.Black); foreach (var system in systems) { string json = null; if (Exit) { running = false; return; } if (system.vs != null && system.vs.EDSM_sync == false) { // check if it exist in EDSM SystemPosition ps2 = (from c in log where c.Name == system.Name && c.time.Ticks == system.time.Ticks select c).FirstOrDefault <SystemPosition>(); if (ps2 != null) { system.vs.EDSM_sync = true; system.Update(); } else { json = edsm.SetLog(system.Name, system.time); } if (json != null) { JObject msg = (JObject)JObject.Parse(json); int msgnum = msg["msgnum"].Value <int>(); string msgstr = msg["msg"].Value <string>(); if (msgnum == 100 || msgnum == 401 || msgnum == 402 || msgnum == 403) { if (msgnum == 100) { System.Diagnostics.Trace.WriteLine("New"); } system.vs.EDSM_sync = true; system.Update(); } else { mainForm.LogLine("EDSM sync ERROR:" + msgnum.ToString() + ":" + msgstr, Color.Red); System.Diagnostics.Trace.WriteLine("Error sync:" + msgnum.ToString() + " : " + system.Name); break; } } } } TravelLogUnit tlu = null; bool newsystem = false; if (!pushOnly) { // Check for new systems from EDSM int defaultColour = db.GetSettingInt("DefaultMap", Color.Red.ToArgb()); foreach (var system in log) { SystemPosition ps2 = (from c in mainForm.VisitedSystems where c.Name == system.Name && c.time.Ticks == system.time.Ticks select c).FirstOrDefault <SystemPosition>(); if (ps2 == null) // Add to local DB... { if (tlu == null) // If we dontt have a travellogunit yet then create it. { tlu = new TravelLogUnit(); tlu.type = 2; // EDSM tlu.Path = "http://www.edsm.net/api-logs-v1/get-logs"; tlu.Name = "EDSM-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture); tlu.Size = 0; tlu.Add(); // Add to Database } VisitedSystemsClass vs = new VisitedSystemsClass(); vs.Source = tlu.id; vs.Unit = tlu.Name; vs.Name = system.Name; vs.Time = system.time; vs.MapColour = defaultColour; vs.EDSM_sync = true; vs.Add(); // Add to DB; System.Diagnostics.Trace.WriteLine("New from EDSM"); newsystem = true; } } } mainForm.LogLine("EDSM sync Done", Color.Black); if (newsystem) { OnNewEDSMTravelLog(this); } } catch (Exception ex) { System.Diagnostics.Trace.WriteLine("Exception ex:" + ex.Message); mainForm.LogLine("EDSM sync Exception " + ex.Message, Color.Red); } }
public List <SystemPosition> ParseFiles(RichTextBox richTextBox_History, int defaultMapColour) { string datapath; DirectoryInfo dirInfo; datapath = GetNetLogPath(); if (datapath == null) { AppendText(richTextBox_History, "Netlog directory not found!" + Environment.NewLine + "Specify location in settings tab" + Environment.NewLine, Color.Red); return(null); } if (!Directory.Exists(datapath)) // if logfiles directory is not found { if (richTextBox_History != null) { richTextBox_History.Clear(); AppendText(richTextBox_History, "Netlog directory not found!" + Environment.NewLine + "Specify location in settings tab" + Environment.NewLine, Color.Red); //MessageBox.Show("Netlog directory not found!" + Environment.NewLine + "Specify location in settings tab", "EDDiscovery Error", MessageBoxButtons.OK); } return(null); } try { dirInfo = new DirectoryInfo(datapath); } catch (Exception ex) { AppendText(richTextBox_History, "Could not create Directory info: " + ex.Message + Environment.NewLine, Color.Red); return(null); } // Get TravelLogUnits; tlUnits = TravelLogUnit.GetAll(); List <VisitedSystemsClass> vsSystemsList = VisitedSystemsClass.GetAll(ActiveCommander); visitedSystems.Clear(); // Add systems in local DB. if (vsSystemsList != null) { foreach (VisitedSystemsClass vs in vsSystemsList) { if (visitedSystems.Count == 0) { visitedSystems.Add(new SystemPosition(vs)); } else if (!visitedSystems.Last <SystemPosition>().Name.Equals(vs.Name)) // Avoid duplicate if times exist in same system from different files. { visitedSystems.Add(new SystemPosition(vs)); } else { VisitedSystemsClass vs2 = (VisitedSystemsClass)visitedSystems.Last <SystemPosition>().vs; vs.Commander = -2; // Move to dupe user vs.Update(); } } } FileInfo[] allFiles = dirInfo.GetFiles("netLog.*.log", SearchOption.AllDirectories).OrderBy(p => p.Name).ToArray(); NoEvents = true; foreach (FileInfo fi in allFiles) { TravelLogUnit lu = null; bool parsefile = true; if (fi.Name.Equals("netLog.1510280152.01.log")) { parsefile = true; } // Check if we alreade have parse the file and stored in DB. if (tlUnits != null) { lu = (from c in tlUnits where c.Name == fi.Name select c).FirstOrDefault <TravelLogUnit>(); } if (lu != null) { if (lu.Size == fi.Length) // File is already in DB: { parsefile = false; } } else { lu = new TravelLogUnit(); lu.Name = fi.Name; lu.Path = Path.GetDirectoryName(fi.FullName); lu.Size = 0; // Add real size after data is in DB //;(int)fi.Length; lu.type = 1; lu.Add(); } if (parsefile) { int nr = 0; List <SystemPosition> tempVisitedSystems = new List <SystemPosition>(); ParseFile(fi, tempVisitedSystems); foreach (SystemPosition ps in tempVisitedSystems) { SystemPosition ps2; ps2 = (from c in visitedSystems where c.Name == ps.Name && c.time == ps.time select c).FirstOrDefault <SystemPosition>(); if (ps2 == null) { VisitedSystemsClass dbsys = new VisitedSystemsClass(); dbsys.Name = ps.Name; dbsys.Time = ps.time; dbsys.Source = lu.id; dbsys.EDSM_sync = false; dbsys.Unit = fi.Name; dbsys.MapColour = defaultMapColour; dbsys.Commander = ActiveCommander; if (!lu.Beta) // dont store history in DB for beta (YET) { VisitedSystemsClass last = VisitedSystemsClass.GetLast(); if (last == null || !last.Name.Equals(dbsys.Name)) // If same name as last system. Dont Add. otherwise we get a duplet with last from logfile before with different time. { if (!VisitedSystemsClass.Exist(dbsys.Name, dbsys.Time)) { dbsys.Add(); visitedSystems.Add(ps); nr++; } } } } } lu.Size = (int)fi.Length; lu.Update(); AppendText(richTextBox_History, fi.Name + " " + nr.ToString() + " added to local database." + Environment.NewLine, Color.Black); } } NoEvents = false; //var result = visitedSystems.OrderByDescending(a => a.time).ToList<SystemPosition>(); return(visitedSystems); }
private void NetLogMain() { try { m_Watcher = new System.IO.FileSystemWatcher(); if (Directory.Exists(GetNetLogPath())) { m_Watcher.Path = GetNetLogPath() + "\\"; m_Watcher.Filter = "netLog*.log"; m_Watcher.IncludeSubdirectories = true; m_Watcher.NotifyFilter = NotifyFilters.FileName; // | NotifyFilters.Size; m_Watcher.Changed += new FileSystemEventHandler(OnChanged); m_Watcher.Created += new FileSystemEventHandler(OnChanged); m_Watcher.Deleted += new FileSystemEventHandler(OnChanged); m_Watcher.EnableRaisingEvents = true; } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Net log watcher exception : " + ex.Message, "EDDiscovery Error"); System.Diagnostics.Trace.WriteLine("NetlogMAin exception : " + ex.Message); System.Diagnostics.Trace.WriteLine(ex.StackTrace); } List <TravelLogUnit> travelogUnits; // Get TravelLogUnits; travelogUnits = null; TravelLogUnit tlUnit = null; SQLiteDBClass db = new SQLiteDBClass(); int ii = 0; while (!Exit) { try { ii++; Thread.Sleep(2000); EliteDangerous.CheckED(); if (NoEvents == false) { if (lastnfi != null) { FileInfo fi = new FileInfo(lastnfi.FileName); if (fi.Length != lastnfi.fileSize || ii % 5 == 0) { if (tlUnit == null || !tlUnit.Name.Equals(Path.GetFileName(lastnfi.FileName))) // Create / find new travellog unit { travelogUnits = TravelLogUnit.GetAll(); // Check if we alreade have parse the file and stored in DB. if (tlUnit == null) { tlUnit = (from c in travelogUnits where c.Name == fi.Name select c).FirstOrDefault <TravelLogUnit>(); } if (tlUnit == null) { tlUnit = new TravelLogUnit(); tlUnit.Name = fi.Name; tlUnit.Path = Path.GetDirectoryName(fi.FullName); tlUnit.Size = 0; // Add real size after data is in DB //;(int)fi.Length; tlUnit.type = 1; tlUnit.Add(); travelogUnits.Add(tlUnit); } } int nrsystems = visitedSystems.Count; ParseFile(fi, visitedSystems); if (nrsystems < visitedSystems.Count) // Om vi har fler system { System.Diagnostics.Trace.WriteLine("New systems " + nrsystems.ToString() + ":" + visitedSystems.Count.ToString()); for (int nr = nrsystems; nr < visitedSystems.Count; nr++) // Lägg till nya i locala databaslogen { VisitedSystemsClass dbsys = new VisitedSystemsClass(); dbsys.Name = visitedSystems[nr].Name; dbsys.Time = visitedSystems[nr].time; dbsys.Source = tlUnit.id; dbsys.EDSM_sync = false; dbsys.Unit = fi.Name; dbsys.MapColour = db.GetSettingInt("DefaultMap", Color.Red.ToArgb()); dbsys.Unit = fi.Name; dbsys.Commander = 0; if (!tlUnit.Beta) // dont store history in DB for beta (YET) { dbsys.Add(); } visitedSystems[nr].vs = dbsys; } } else { //System.Diagnostics.Trace.WriteLine("No change"); } } } } } catch (Exception ex) { System.Diagnostics.Trace.WriteLine("NetlogMAin exception : " + ex.Message); System.Diagnostics.Trace.WriteLine(ex.StackTrace); } } }
public void Sync() { try { EDSMClass edsm = new EDSMClass(); edsm.apiKey = EDDiscoveryForm.EDDConfig.CurrentCommander.APIKey; edsm.commanderName = EDDiscoveryForm.EDDConfig.CurrentCommander.Name; //string comments = edsm.GetComments(new DateTime(2015, 1, 1)); List <VisitedSystemsClass> log; List <SystemNoteClass> notes; int ret = edsm.GetLogs(new DateTime(2011, 1, 1), out log); int nret = edsm.GetComments(new DateTime(2011, 1, 1), out notes); if (log == null) { log = new List <VisitedSystemsClass>(); } if (_syncTo) { // Send Unsynced system to EDSM. List <VisitedSystemsClass> systems = (from s in mainForm.VisitedSystems where s.EDSM_sync == false && s.Commander == EDDiscoveryForm.EDDConfig.CurrentCommander.Nr select s).ToList <VisitedSystemsClass>(); mainForm.LogLine("EDSM: Sending " + systems.Count.ToString() + " flightlog entries"); foreach (var system in systems) { if (Exit) { running = false; return; } if (system.EDSM_sync == false) { // check if it exist in EDSM VisitedSystemsClass ps2 = (from c in log where c.Name == system.Name && c.Time.Ticks == system.Time.Ticks select c).FirstOrDefault <VisitedSystemsClass>(); if (ps2 != null) { system.EDSM_sync = true; system.Update(); } else { SendTravelLog(edsm, system, mainForm); } } } } TravelLogUnit tlu = null; bool newsystem = false; if (_syncFrom) { // Check for new systems from EDSM foreach (var system in log) { VisitedSystemsClass ps2 = mainForm?.VisitedSystems == null ? null : (from c in mainForm.VisitedSystems where c.Name == system.Name && c.Time.Ticks == system.Time.Ticks select c).FirstOrDefault <VisitedSystemsClass>(); if (ps2 == null) // Add to local DB... { if (tlu == null) // If we dontt have a travellogunit yet then create it. { tlu = new TravelLogUnit(); tlu.type = 2; // EDSM tlu.Path = "https://www.edsm.net/api-logs-v1/get-logs"; tlu.Name = "EDSM-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture); tlu.Size = 0; tlu.Add(); // Add to Database } VisitedSystemsClass vs = new VisitedSystemsClass(); vs.Source = tlu.id; vs.Unit = tlu.Name; vs.Name = system.Name; vs.Time = system.Time; vs.MapColour = _defmapcolour; vs.EDSM_sync = true; vs.Commander = EDDiscoveryForm.EDDConfig.CurrentCommander.Nr; vs.Add(); // Add to DB; System.Diagnostics.Trace.WriteLine("New from EDSM"); newsystem = true; } } // Sync comments from EDSM foreach (var note in notes) { SystemNoteClass dbnote = SystemNoteClass.GetSystemNoteClass(note.Name.ToLower()); if (dbnote != null) // if there.. { if (note.Time > dbnote.Time) { dbnote.Time = note.Time; dbnote.Note = note.Note; dbnote.Update(); } } else { note.Add(); } } } mainForm.LogLine("EDSM sync Done"); if (newsystem) { OnNewEDSMTravelLog(this); } } catch (Exception ex) { System.Diagnostics.Trace.WriteLine("Exception ex:" + ex.Message); mainForm.LogLineHighlight("EDSM sync Exception " + ex.Message); } }