Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 /// <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;
 }
Ejemplo n.º 3
0
 /// <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;
        }
Ejemplo n.º 9
0
 private ProblemSolver(AnalysisType?forceAnalysisType, bool dryRun)
 {
     _forceAnalysisType = forceAnalysisType;
     _dryRun            = dryRun;
 }