public static SolverResult Run(string source, AnalysisType?forceAnalysisType = null, bool dryRun = false) { var solver = new ProblemSolver(forceAnalysisType, dryRun); var syntaxTree = CSharpSyntaxTree.ParseText(source); /* В Roslyn фаза ValueContentAnalysis не выполняет предикатный анализ для выражений parameters[0]. * Экспериментально выяснилось, что для выражения parameters[0] == true предикатный анализ срабатывает. * * В результате в первом случае (parameters[0] && !parameters[0]) не свертывается в false, и наоборот, * для (parameters[0] == true && !parameters[0] == true) произойдет свертка в значение false. * Здесь мы модифицируем исходное синтаксическое дерево, добавляя сравнение == true. * * При динамическом выполнtении кода избыточное сравнение будет удалено оптимизациями кодегенератора. */ var rewriter = new ParameterAccessExpandToBooleanComparisonRewriter(); syntaxTree = rewriter.Visit(syntaxTree.GetRoot()).SyntaxTree; var compilation = Compiler.Compile(syntaxTree); if (!compilation.Success) { return(new SolverResult { Success = false, CompilationFailures = compilation.Diagnostics .Select(diagnostic => $"{diagnostic.Id}: {diagnostic.GetMessage()}") }); } var result = solver.PerformAnalysis(syntaxTree, compilation); return(result); }
/// <summary> /// Initializes a new instance of the <see cref="PointInTimeGridBasedSchema" /> class. /// </summary> /// <param name="Id">Id.</param> /// <param name="Type">Type.</param> /// <param name="AnalysisGrids">AnalysisGrids.</param> /// <param name="Surfaces">Surfaces.</param> /// <param name="Sky">Sky.</param> /// <param name="AnalysisType">AnalysisType.</param> /// <param name="RadParameters">RadParameters.</param> public PointInTimeGridBasedSchema(IdEnum?Id = default(IdEnum?), TypeEnum?Type = default(TypeEnum?), List <AnalysisGridSchema> AnalysisGrids = default(List <AnalysisGridSchema>), List <HBSurfaceSchema> Surfaces = default(List <HBSurfaceSchema>), SkySchema Sky = default(SkySchema), AnalysisType?AnalysisType = default(AnalysisType?), RadianceParameters RadParameters = default(RadianceParameters)) { this.Id = Id; this.Type = Type; this.AnalysisGrids = AnalysisGrids; this.Surfaces = Surfaces; this.Sky = Sky; this.AnalysisType = AnalysisType; this.RadParameters = RadParameters; }
/// <summary> /// Initializes a new instance of the <see cref="ThreePhaselGridBasedSchema" /> class. /// </summary> /// <param name="Id">Id.</param> /// <param name="Type">Type.</param> /// <param name="SkyMtx">SkyMtx.</param> /// <param name="AnalysisGrids">AnalysisGrids.</param> /// <param name="Surfaces">Surfaces.</param> /// <param name="AnalysisType">AnalysisType.</param> /// <param name="ViewMtxParameters">ViewMtxParameters.</param> /// <param name="DaylightMtxParameters">DaylightMtxParameters.</param> public ThreePhaselGridBasedSchema(IdEnum?Id = default(IdEnum?), TypeEnum?Type = default(TypeEnum?), SkyMtxSchema SkyMtx = default(SkyMtxSchema), List <AnalysisGridSchema> AnalysisGrids = default(List <AnalysisGridSchema>), List <HBSurfaceSchema> Surfaces = default(List <HBSurfaceSchema>), AnalysisType?AnalysisType = default(AnalysisType?), RadianceParameters ViewMtxParameters = default(RadianceParameters), RadianceParameters DaylightMtxParameters = default(RadianceParameters)) { this.Id = Id; this.Type = Type; this.SkyMtx = SkyMtx; this.AnalysisGrids = AnalysisGrids; this.Surfaces = Surfaces; this.AnalysisType = AnalysisType; this.ViewMtxParameters = ViewMtxParameters; this.DaylightMtxParameters = DaylightMtxParameters; }
protected void Page_Load(object sender, EventArgs e) { if (string.IsNullOrEmpty(Guid)) return; if (ReportCriteria == null) return; if (Tile == null) return; if (Tile.TileParms.GetParm("AnalysisType") == null) return; AnalysisType = (AnalysisType)Tile.TileParms.GetParm("AnalysisType"); Level = Tile.TileParms.GetParm("Level").ToString(); FormID = Tile.TileParms.GetParm("FormID").ToString(); LoadReport(); }
protected void Page_Load(object sender, EventArgs e) { if (string.IsNullOrEmpty(Guid)) return; if (ReportCriteria == null) return; if (Tile == null) return; if (Tile.TileParms.GetParm("AnalysisType") == null) return; // TFS 1123 : Check the content is locked or unlocked for specific Test ID if (Request.QueryString["testID"] != null) { int testID = Convert.ToInt32(Request.QueryString["testID"]); DataRow row = Thinkgate.Base.Classes.Assessment.GetAssessmentSchedule(testID); if (row != null) { string contentLock; string content = row["CONTENT"].ToString(); if (content == AssessmentScheduleStatus.Disabled.ToString()) { _isContentLocked = true; } else if (content == AssessmentScheduleStatus.Enabled.ToString()) { _isContentLocked = false; } else if (row["CONTENT"].ToString().Split(' ')[0] == AssessmentScheduleStatus.Enabled.ToString()) { contentLock = row["CONTENT"].ToString(); DateTime dateFrom = DateTime.MinValue; DateTime dateTo = DateTime.MaxValue; if (contentLock.IndexOf(" - ") > -1) //Enabled 10/15/2013 - 10/31/2013 { dateFrom = Convert.ToDateTime(contentLock.ToString().Split(' ')[1].Trim()); dateTo = Convert.ToDateTime(contentLock.ToString().Split(' ')[3].Trim()); } else if (contentLock.IndexOf("Starting") > -1) //Enabled Starting 10/15/2013 { dateFrom = Convert.ToDateTime(contentLock.ToString().Split(' ')[2]); } else if (contentLock.IndexOf("Until") > -1) //Enabled Until 10/15/2013 { dateTo = Convert.ToDateTime(contentLock.ToString().Split(' ')[2]); } if (dateFrom <= DateTime.Today && DateTime.Today <= dateTo) { _isContentLocked = false; } else { _isContentLocked = true; } } } } // populate our array properties colAryMC = new int[] {colIdxA, colIdxB, colIdxC, colIdxD,colIdxE}; colAryTF = new int[] {colIdxTrue, colIdxFalse}; colAryRW = new int[] {colIdxRight, colIdxWrong}; colAryRubric = new int[] {colIdxRubricType, colIdxPt0, colIdxPt1, colIdxPt2, colIdxPt3, colIdxPt4, colIdxPt5, colIdxPt6, colIdxPt7, colIdxPt8, colIdxPt9, colIdxPt10}; colAryUnanswered = new int[] {colIdxUnanswered}; AnalysisType = (AnalysisType)Tile.TileParms.GetParm("AnalysisType"); Level = Tile.TileParms.GetParm("Level").ToString(); FormID = Tile.TileParms.GetParm("FormID").ToString(); LoadReport(); loadColIdxArrays(); }
private DataSet GetDataTable() { if (ItemAnalysisData == null) { //Do switch here on report type if (!AnalysisType.HasValue) AnalysisType = Reports.AnalysisType.ItemAnalysis; var dev = System.Configuration.ConfigurationManager.AppSettings.Get("Environment") == "Dev" ? true : false; var userPage = dev ? 119 : 60528; var year = Thinkgate.Base.Classes.AppSettings.Demo_Year; if (string.IsNullOrEmpty(Request.QueryString["cid"]) || string.IsNullOrEmpty(Request.QueryString["testID"])) { SessionObject.RedirectMessage = "Either the course or test ID could not be found."; Response.Redirect("~/PortalSelection.aspx"); } var selectedClass = Standpoint.Core.Utilities.DataIntegrity.ConvertToInt(Request.QueryString["cid"]); var selectedTest = Standpoint.Core.Utilities.DataIntegrity.ConvertToInt(Request.QueryString["testID"]); var criteriaOverrides = ReportCriteria.GetCriteriaOverrideString(); var rawDataSet = new DataSet(); switch (AnalysisType) { case Reports.AnalysisType.ItemAnalysis: rawDataSet = Thinkgate.Base.Classes.Reports.GetItemAnaylsisData(year, selectedTest, Level, selectedClass, userPage, _permissions, "", "", "", 0, "", "@@Product=none@@@@RR=none" + criteriaOverrides + "1test=yes@@@@PT=1@@@@FormID=" + FormID.ToString() + "@@", FormID); break; case Reports.AnalysisType.StandardAnalysis: rawDataSet = Thinkgate.Base.Classes.Reports.GetStandardAnaylsisData(year, selectedTest, "Class", selectedClass, userPage, _permissions, "", "", "", 0, selectedClass.ToString(), "@@Product=none@@@@RR=none" + criteriaOverrides + "1test=yes@@@@PT=1@@", FormID, "SS"); break; } ItemAnalysisData.Tables.Add(Standpoint.Core.Classes.Encryption.EncryptDataTableColumn(rawDataSet.Tables[0].Copy(), "Question", "xID")); ItemAnalysisData.Tables.Add(rawDataSet.Tables[1].Copy()); } return ItemAnalysisData; }
protected void Page_Load(object sender, EventArgs e) { if (Tile == null) return; if (Tile.TileParms.GetParm("AnalysisType") == null) return; if (Request.QueryString["selectedReport"] != null && !String.IsNullOrEmpty(Request.QueryString["selectedReport"])) { SessionObject sessionObject = (SessionObject)Session["SessionObject"]; ThinkgateEventSource.Log.LoggedUserReportAccess(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "->" + MethodBase.GetCurrentMethod().Name, sessionObject.LoggedInUser.UserName + " has accessed '" + Request.QueryString["selectedReport"].ToString() + "' report", Request.QueryString["selectedReport"].ToString(), sessionObject.LoggedInUser.UserName); if (Request.QueryString["selectedReport"].ToString().ToLower() == "item analysis") { // TFS 1123 : Check the content is locked or unlocked for specific Test ID if (Request.QueryString["testID"] != null) { int testID = Convert.ToInt32(Request.QueryString["testID"]); DataRow row = Thinkgate.Base.Classes.Assessment.GetAssessmentSchedule(testID); if (row != null) { string contentLock; string content = row["CONTENT"].ToString(); if (content == AssessmentScheduleStatus.Disabled.ToString()) { _isContentLocked = true; } else if (content == AssessmentScheduleStatus.Enabled.ToString()) { _isContentLocked = false; } else if (row["CONTENT"].ToString().Split(' ')[0] == AssessmentScheduleStatus.Enabled.ToString()) { contentLock = row["CONTENT"].ToString(); DateTime dateFrom = DateTime.MinValue; DateTime dateTo = DateTime.MaxValue; if (contentLock.IndexOf(" - ") > -1) //Enabled 10/15/2013 - 10/31/2013 { dateFrom = Convert.ToDateTime(contentLock.ToString().Split(' ')[1].Trim()); dateTo = Convert.ToDateTime(contentLock.ToString().Split(' ')[3].Trim()); } else if (contentLock.IndexOf("Starting") > -1) //Enabled Starting 10/15/2013 { dateFrom = Convert.ToDateTime(contentLock.ToString().Split(' ')[2]); } else if (contentLock.IndexOf("Until") > -1) //Enabled Until 10/15/2013 { dateTo = Convert.ToDateTime(contentLock.ToString().Split(' ')[2]); } if (dateFrom <= DateTime.Today && DateTime.Today <= dateTo) { _isContentLocked = false; } else { _isContentLocked = true; } } } } } } AnalysisType = (AnalysisType)Tile.TileParms.GetParm("AnalysisType"); analysisReportType.Value = AnalysisType.ToString(); LoadCriteria(); LoadReport(); LoadForms(); //btnFormSelection.Attributes.Add("dropdownListID", ctxForm.ClientID); }
private DataSet GetDataTable() { //Do switch here on report type if (!AnalysisType.HasValue) AnalysisType = Reports.AnalysisType.ItemAnalysis; var dev = System.Configuration.ConfigurationManager.AppSettings.Get("Environment") == "Dev" ? true : false; //var userPage = dev ? 119 : 60528; var userPage = SessionObject.LoggedInUser.Page; var year = Thinkgate.Base.Classes.AppSettings.Demo_Year; if (string.IsNullOrEmpty(Guid)) { SessionObject.RedirectMessage = "Report criteria could not be found in session. No GUID."; Response.Redirect("~/PortalSelection.aspx"); return null; } var reportCriteria = (Criteria)Session["Criteria_" + Guid]; var selectedTest = Standpoint.Core.Utilities.DataIntegrity.ConvertToInt(reportCriteria.GetAssessmentCriterion().ReportStringVal); var level = Request.QueryString["level"] ?? "Class"; var selectedLevelCriterion = reportCriteria.GetLevelCriterion(level); var selectedLevelID = selectedLevelCriterion != null ? DataIntegrity.ConvertToInt(selectedLevelCriterion.ReportStringVal) : Cryptography.DecryptionToInt(Request.QueryString["levelID"], SessionObject.LoggedInUser.CipherKey); var selectedClass = (level == "Class") ? selectedLevelID.ToString() : ""; var criteriaOverrides = (reportCriteria).GetCriteriaOverrideString(); var itemAnalysisData = new DataSet(); levelValue.Value = level; levelIDValue.Value = selectedLevelID.ToString(); switch (AnalysisType) { case Reports.AnalysisType.ItemAnalysis: var itemAnalaysisDataSet = Thinkgate.Base.Classes.Reports.GetItemAnaylsisData(year, selectedTest, level, selectedLevelID, userPage, _permissions, "", "", "", 0, selectedClass, "@@Product=none@@@@RR=none" + criteriaOverrides + "1test=yes@@@@PT=1@@@@FormID=" + FormID.ToString() + "@@", FormID.ToString()); itemAnalysisData.Tables.Add(Standpoint.Core.Classes.Encryption.EncryptDataTableColumn(itemAnalaysisDataSet.Tables[0].Copy(), "Question", "xID").Copy()); itemAnalysisData.Tables.Add(itemAnalaysisDataSet.Tables[1].Copy()); break; case Reports.AnalysisType.StandardAnalysis: var standardAnalaysisDataSet = Thinkgate.Base.Classes.Reports.GetStandardAnaylsisData(year, selectedTest, level, selectedLevelID, userPage, _permissions, "", "", "", 0, selectedClass, "@@Product=none@@@@RR=none" + criteriaOverrides + "1test=yes@@@@PT=1@@@@FormID=" + FormID.ToString() + "@@", FormID.ToString(), "SS"); itemAnalysisData.Tables.Add(Standpoint.Core.Classes.Encryption.EncryptDataTableColumn(standardAnalaysisDataSet.Tables[0].Copy(), "StandardID", "xID")); itemAnalysisData.Tables.Add(standardAnalaysisDataSet.Tables[1].Copy()); break; } Session["ItemAnalysisData_" + AnalysisType + "_" + Guid] = itemAnalysisData; return itemAnalysisData; }
private ProblemSolver(AnalysisType?forceAnalysisType, bool dryRun) { _forceAnalysisType = forceAnalysisType; _dryRun = dryRun; }