/// <summary> /// Build a set of all specific results /// </summary> /// <returns>Set of results</returns> public ResultSet BuildAllResults() { var results = new ResultSet(); if (!IsValid()) { return(results); } List <ResultCreator> creators = new List <ResultCreator>(); ResultParams parameters; ResultID resultID; string[] lcNames = db.getResultLoadCaseNames(); string[] scNames = db.getResultSubCaseNames(); string[] resNames = db.getResultTypeNames(); // TODO: Remove nesting and design a normal class of results foreach (string lcName in lcNames) { foreach (string scName in scNames) { foreach (string resName in resNames) { resultID = ResultID.CreateByNames(lcName, scName, resName); parameters.ID = resultID; parameters.TypeName = "FRPResult"; parameters.Data = db.getResultCopy(lcName, scName, resName); var creator = ResultCreator.GetResultCreatorByParams(parameters); creators.Add(creator); } } } int idx = 0; foreach (var creator in creators) { var result = creator.BuildResult(); results.Add(idx, result); idx++; } return(results); }
/// <summary> /// Returns the specific creator of the result using the data contained in the passed parameters /// </summary> /// <param name="parameters">Result parameters</param> /// <returns>A specific instance of the result creator</returns> public static ResultCreator GetResultCreatorByParams(ResultParams parameters) { ResultCreator creator = null; var type = parameters.TypeName; // TODO: Hide the implementation of selecting a specific creator, so that the registration of a specific type occurs somewhere in a separate place if (type == "FRPResult") { creator = new ExternalResultCreator(parameters); } else { throw new ArgumentOutOfRangeException("Unknown type of result"); } // TODO: Insert new type of results return(creator); }