/// <summary> /// Metoda pro kontrolu validnosti zadaných údajů pro simulaci. Předpokládá se použití na straně serveru. /// </summary> /// <param name="instance">Instance parametrů simulace ke kontrole.</param> /// <returns>Úspěch kontroly.</returns> /// <remarks>Při neplatných údajích dochází k vyhození výjimky<see cref="FaultException<GeneratorServiceFault>"/></remarks> /// <exception cref="FaultException<GeneratorServiceFault>" public static bool CheckSimulationParams(SimulationParams instance) { if (instance == null) { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Non initialiazed simulation parameters."), new FaultReason("SimulationsParams is null.")); } UserIdentity.CheckUserIdentity(instance.User); //kontrola uzivatelske identity if (instance.Senates == null) //test zda jsou zadany nejake senaty { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Non initialiazed list of senates."), new FaultReason("List of Senates is null.")); } instance.Senates.ForEach((x) => Senate.CheckSenate(x));//kontrola konzistence senatu v seznamu if (instance.AlgorithmsToSimulate == null) { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Non initialiazed list of algorithms."), new FaultReason("List of AlgorithmsToSimulate is null.")); } if (instance.IterationsCount < 1)//pocet simulaci musi byt alespon jedna { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault(String.Format("Number of iteration of simulation: {0} is less then 1", instance.IterationsCount)), new FaultReason("No iteration.")); } if (instance.CasesToDistribution < 1)//pocet pripadu k rozdeleni musi byt alespon jedna { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault(String.Format("Cases to distribution: {0} is less then 1", instance.CasesToDistribution)), new FaultReason("No cases to distribution.")); } return(true); }
AlgorithmFactory factory = new AlgorithmFactory();//vytvor factory /// <summary> /// Metoda vrací informace o implementovaných algoritmech rozdělování případů na straně serveru. /// </summary> /// <param name="id">Identifikátor uživatele.</param> /// <returns></returns> public List <AlgorithmInfo> GetImplementedAlgorithmInfo(UserIdentity id) { bool fault = false;//predpokladej ze chyba neni string faultmessage = "UNKNOWN"; try { if (UserIdentity.CheckUserIdentity(id))//over parametry, pokud selze nastava vyjimka { Debug.WriteLine("Server:GetImplementedAlgorithmInfo:UserIdentity " + id.ID); return((from x in factory.Descriptions select new AlgorithmInfo(x.ID.ToString(), x.Name, x.Description)).ToList <AlgorithmInfo>()); } } catch (FaultException <GeneratorServiceFault> ex) //nastane pri vnitrnich problem s validovanim uzivatele { fault = true; //nastala chyba pri validovani faultmessage = ex.Reason.ToString(); //uloz si spravu throw; //vyhod vyjimku znovu } catch (Exception e) //nemelo by nikdy nastat { faultmessage = e.Message; //nejaka neocekavana chyba fault = true; throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Unknown reason."), new FaultReason("Unknown reason.")); //vyhod vyjimku } finally { if (ConfigurationManager.AppSettings["LoggingSimulationService"].ToUpper() == "TRUE")//kdyz je logovani zapnuto { Debug.WriteLine("LOGING:"); if (fault) //kdyz byla chyba { string user = (id != null && id.ID != null) ? id.ID : "UNKNOWN"; //nemusel byt zadan uzivatel Debug.WriteLine("Fault " + user + " : " + faultmessage); MSPGeneratorServicesLog.WriteActionFault(user, "GetAlgorithmInfo", faultmessage); //loguj akci a chybu } else { Debug.WriteLine("Succes"); MSPGeneratorServicesLog.WriteActionSuccess(id.ID, "GetAlgorithmInfo");//loguj akci } } } return(null); }
/// <summary> /// Metoda pro kontrolu validnosti zadaných údajů pro přidělování případů. Předpokládá se použití na straně služby. /// </summary> /// <param name="instance">Instance parametrů přidělení ke kontrole.</param> /// <returns>Úspěch kontroly.</returns> /// <remarks>Při neplatných údajích dochází k vyhození výjimky<see cref="FaultException<GeneratorServiceFault>"/></remarks> /// <exception cref="FaultException<GeneratorServiceFault>" public static bool CheckAssignCaseParams(AssignCaseParams instance) { if (instance == null) { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Non initialiazed simulation parameters."), new FaultReason("SimulationsParams is null.")); } UserIdentity.CheckUserIdentity(instance.User); //kontrola uzivatelske identity if (instance.Senates == null) //test zda jsou zadany nejake senaty { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Non initialiazed list of senates."), new FaultReason("List of Senates is null.")); } instance.Senates.ForEach((x) => Senate.CheckSenate(x));//kontrola konzistence senatu v seznamu if (instance.CaseIdentificator == null) { throw new FaultException <GeneratorServiceFault>(new GeneratorServiceFault("Non initialiazed case identificator."), new FaultReason("Case Identificator is null.")); } return(true); }