public static void RefreshScript(STATIONNAME StationName) { StationScript stationScript = GetStationScript(StationName); if (stationScript != null) { stationScript.RemoveAllScript(); } else { stationScript = new StationScript(StationName); ScriptStation.Add(stationScript); } String LastestScript = GetLastestFile("\\\\192.168.2.110\\ftp\\Script\\" + StationName); if (ExtractScriptData(LastestScript, StationName, scriptConfigure, false)) { SendScriptToStation(StationName); } else { DisplayScript("", StationName); } }
private static FILESTATE IsTheSameScript(String FilePathStr, List <ScriptStructureNew> NewScriptCollection, STATIONNAME StationName, List <ScriptConfigure> scriptConfigures) { StationScript ThisStation = GetStationScript(StationName); if (ThisStation != null) { if (ThisStation.LastestScriptFileName != FilePathStr) { return(FILESTATE.NOTSAME); } if (scriptConfigure != null) { ScriptConfigure tempScript = scriptConfigure.FirstOrDefault(Item => Item.config_name == StationName.ToString()); if (tempScript != null) { if (tempScript.config_status == false) { Console.WriteLine(StationName + " | RE-SENDING NOT SEND TO STATION -- FILE STATE (" + tempScript.config_status + ")"); return(FILESTATE.RESEND); } } } if (NewScriptCollection.Count() != ThisStation.ScriptCollection.Count() && ThisStation.ScriptCollection.Count() > 0) { Console.WriteLine(StationName + " | COUNT: " + NewScriptCollection.Count() + " == " + ThisStation.ScriptCollection.Count()); return(FILESTATE.COMMANDCHANGE); } if (ThisStation.LastestScriptFileName == FilePathStr) { return(FILESTATE.SAME); } for (int i = 0; i < NewScriptCollection.Count(); i++) { if (NewScriptCollection[i].ScriptID != ThisStation.ScriptCollection[i].ScriptID) { Console.WriteLine(StationName + " | NOT SAME -- SCRIPT ID (" + NewScriptCollection[i].ScriptID + " != " + ThisStation.ScriptCollection[i].ScriptID); return(FILESTATE.DIFFID); } if (NewScriptCollection[i].ScriptState == SCRIPTSTATE.WAITINGSERVER.ToString() || NewScriptCollection[i].ScriptState == SCRIPTSTATE.SENDINGTOSTATION.ToString()) { Console.WriteLine(StationName + " | RE-SENDING NOT SEND TO STATION -- STATE (" + NewScriptCollection[i].ScriptState + ")"); return(FILESTATE.RESEND); } } //Console.WriteLine("SAME FILE ALERT"); } else { return(FILESTATE.NOTSAME); } return(FILESTATE.SAME); }
private static void initialConfig() { if (scriptConfigure != null) { foreach (ScriptConfigure config in scriptConfigure) { StationScript stationScript = new StationScript(TTCSHelper.StationStrConveter(config.config_name)); stationScript.LastestScriptFileName = config.config_value; ScriptStation.Add(stationScript); } } }
public static void DisplayScript(String Message, STATIONNAME StationName) { if (_ScriptMonitoring != null) { StationScript ThisStation = GetStationScript(StationName); MethodInfo MInfo = _ScriptMonitoring.GetType().GetMethod("AddScript"); MInfo.Invoke(_ScriptMonitoring, new Object[] { ThisStation.ScriptCollection }); if (Message != "") { DisplayScriptMessage(Message); } } }
public static void SendScriptToStation(STATIONNAME ScriptStationName) { if (ScriptStationName != STATIONNAME.NULL) { String Message = null; StationHandler StationCommunication = AstroData.GetStationObject(ScriptStationName); StationScript StationScript = GetStationScript(ScriptStationName); DBScheduleEngine.UpdateFailSchedule(ScriptStationName); //DBScheduleEngine.DropSchedule(ScriptStationName); Console.WriteLine("Preparing Station Script before sending."); foreach (ScriptStructureNew Script in StationScript.ScriptCollection) { //if (Script.ScriptState != SCRIPTSTATE.CANCELED.ToString()) //{ // Script.ScriptState = SCRIPTSTATE.SENDINGTOSTATION.ToString(); // DBScheduleEngine.UpdateSchedule(Script); //} //else //{ // Console.WriteLine("CANCEL"); //} Script.ScriptState = SCRIPTSTATE.SENDINGTOSTATION.ToString(); DBScheduleEngine.UpdateSchedule(Script); } Console.WriteLine("Sending Script to " + ScriptStationName + " ..."); if (StationCommunication.NewScriptInformation(StationScript.GetScript(), out Message)) { //DBScheduleEngine.DropSchedule(ScriptStationName); /* * foreach (ScriptStructureNew Script in StationScript.ScriptCollection) * { * Script.ScriptState = SCRIPTSTATE.WAITINGSTATION.ToString(); * DBScheduleEngine.UpdateSchedule(Script); * } */ } DisplayScriptMessage(Message); } }
public static void NewScriptChecker(String ScriptServerAddress, String LoginUser, String LoginPassword) { String ScriptPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\script_config.json"; if (!File.Exists(ScriptPath)) { File.Create(ScriptPath).Dispose(); } using (StreamReader r = new StreamReader(ScriptPath)) { String jsonString = r.ReadToEnd(); scriptConfigure = JsonConvert.DeserializeObject <List <ScriptConfigure> >(jsonString); initialConfig(); } System.Net.NetworkCredential readCredentials = new NetworkCredential(@"AstroNET", "P@ssw0rd"); Task ScriptTask = Task.Run(async() => { while (true) { foreach (STATIONNAME StationName in Enum.GetValues(typeof(STATIONNAME))) { if (StationName != STATIONNAME.NULL && StationName != STATIONNAME.ASTROSERVER) { StationHandler ThisStation = AstroData.GetStationObject(StationName); if (ThisStation != null) { if (!ThisStation.IsStationConnected) { continue; } if (ThisStation.ServerCallBackObject == null) { continue; } if (ThisStation.IsSendingScriptToStation) { continue; } StationScript stationScript = GetStationScript(StationName); if (stationScript == null) { stationScript = new StationScript(StationName); ScriptStation.Add(stationScript); } using (new NetworkConnection("\\\\192.168.2.110\\FTP", readCredentials)) { String LastestScript = GetLastestFile("\\\\192.168.2.110\\FTP\\Script\\" + StationName); if (LastestScript != null) { //Console.WriteLine("Script Task: " + LastestScript); STATIONNAME ScriptStationName = StationName; if (ExtractScriptData(LastestScript, StationName, scriptConfigure, true)) { Console.WriteLine("Extracted Script... : " + LastestScript); ThisStation.IsSendingScriptToStation = true; SendScriptToStation(StationName); } } } } //Console.WriteLine(StationName); } } using (StreamWriter sw = new StreamWriter(ScriptConfig)) { //Console.WriteLine(scriptConfigure.Count); String DataJson = JsonConvert.SerializeObject(scriptConfigure); sw.WriteLine(DataJson); } await Task.Delay(1000); } }); }
private static Boolean ExtractScriptData(String FileName, STATIONNAME StationName, List <ScriptConfigure> scriptConfigures, bool checkSameScript) { Boolean IsScriptOK = false; //StationName = STATIONNAME.NULL; String FilePathStr = FileName; if (File.Exists(FilePathStr)) { try { using (FileStream fs = new FileStream(FilePathStr, FileMode.Open, FileAccess.Read, FileShare.None)) { using (StreamReader r = new StreamReader(fs)) { //Console.WriteLine("Reading... " + FilePathStr); String jsonString = r.ReadToEnd(); if (jsonString.Length > 0) { try { List <ScriptStructureNew> NewScriptCollection = JsonConvert.DeserializeObject <List <ScriptStructureNew> >(jsonString); if (NewScriptCollection.Count > 0) { String TempFileNameStr = FilePathStr.Split('\\').Last(); TempFileNameStr = TempFileNameStr.Replace(".txt", ""); FILESTATE FileState = IsTheSameScript(TempFileNameStr, NewScriptCollection, StationName, scriptConfigures); if (FileState != FILESTATE.SAME || !checkSameScript) { bool IsMustInsertToDB = true; Console.WriteLine("Extracting Script... : " + FilePathStr); StationScript scriptTemp = ScriptStation.FirstOrDefault(Item => Item.StationName == StationName); scriptTemp.LastestScriptFileName = TempFileNameStr; if (scriptConfigure == null) { scriptConfigure = new List <ScriptConfigure>(); scriptConfigure.Add(new ScriptConfigure(StationName.ToString(), TempFileNameStr, false, true)); } else if (scriptTemp == null) { scriptConfigure.Add(new ScriptConfigure(StationName.ToString(), TempFileNameStr, false, true)); } else { ScriptConfigure tempScript = scriptConfigure.FirstOrDefault(Item => Item.config_name == StationName.ToString()); if (tempScript != null) { if (tempScript.config_isaddtodb == true) { IsMustInsertToDB = false; } else { tempScript.config_isaddtodb = true; } tempScript.config_value = TempFileNameStr; tempScript.config_status = false; } else { scriptConfigure.Add(new ScriptConfigure(StationName.ToString(), TempFileNameStr, false, true)); } } if (FileState == FILESTATE.NOTSAME) { IsMustInsertToDB = true; } //DBScheduleEngine.DropSchedule(StationName); //Console.WriteLine(IsMustInsertToDB); String Message = ""; Console.WriteLine("Verifying Script... : " + FilePathStr); if (VerifyScript(StationName, NewScriptCollection, out Message)) { Console.WriteLine("Clear Fail Script to Database... : " + FilePathStr); DBScheduleEngine.CancleFailSchedule(StationName); Console.WriteLine("Insert Script to Database... (DB: " + IsMustInsertToDB + ") : " + FilePathStr); foreach (ScriptStructureNew Script in NewScriptCollection) { //DUMMY ONLY //Script.TargetID = "XXXXXX"; if (IsMustInsertToDB) { String _id = DBScheduleEngine.InsertSchedule(Script); if (_id != null) { Script._id = _id; } } else { String _id = DBScheduleEngine.GetId(Script); Script._id = _id; //Console.WriteLine("OLD ID: " + _id); } //if (Script.ScriptState != SCRIPTSTATE.CANCELED.ToString()) //{ // Script.ScriptState = SCRIPTSTATE.WAITINGSERVER.ToString(); //} } Console.WriteLine("Add Script to Object... : " + FilePathStr); StationName = TTCSHelper.StationStrConveter(NewScriptCollection.FirstOrDefault().StationName); StationScript ThisStationTemp = GetStationScript(StationName); if (ThisStationTemp == null) { ThisStationTemp = new StationScript(StationName); ScriptStation.Add(ThisStationTemp); } else { ThisStationTemp.RemoveAllScript(); } ThisStationTemp.AddScript(NewScriptCollection); DisplayScript(Message, StationName); IsScriptOK = true; fs.Close(); } else { fs.Close(); DisplayScriptMessage(Message); Console.WriteLine("Verifying command failed, Deleted."); Console.WriteLine(Message); File.Delete(@FilePathStr); } } } else { //Console.WriteLine("No Data Received, Deleted."); } } catch (JsonReaderException ex) { fs.Close(); try { Console.WriteLine("File isn't jSon, Deleted."); File.Delete(@FilePathStr); } catch (Exception x) { Console.WriteLine(x.Message); } } catch (Exception ex2) { fs.Close(); Console.WriteLine(ex2.Message); File.Delete(@FilePathStr); } } else { fs.Close(); try { Console.WriteLine("File size <= 0 byte, Deleted."); File.Delete(@FilePathStr); } catch (Exception x) { Console.WriteLine(x); } } } } } catch (Exception z) { Console.WriteLine(z); } } return(IsScriptOK); }
private static StationScript GetStationScript(STATIONNAME StationName) { StationScript ThisStation = ScriptStation.FirstOrDefault(Item => Item.StationName == StationName); return(ThisStation); }