Example #1
0
        // This part orders the results (for each different groupBy value) by department code and course number:
        private void alphabetize(SORTTYPE groupBy)
        {
            if (courses.Count > 1 && groupBy != SORTTYPE.COURSECODE) // Only needs to sort if there is more than one result, and if sorting by course code, it's already alphabetized
            {
                int           start        = 0;
                List <Course> sortedSubset = new List <Course>();

                for (int i = 0; i < courses.Count; i++)
                {
                    if (i == courses.Count - 1 || !attributesAreEqual(groupBy, i, i + 1))
                    {
                        sortedSubset = courses.GetRange(start, i - start + 1).OrderBy(a => a.getCourseID()).ToList(); // Sort subset by department/course number (alphabetical order)

                        for (int k = start; k < i + 1; k++)                                                           // Copies the sorted subset back into the main list
                        {
                            courses[k] = sortedSubset[k - start];
                        }

                        if (i != courses.Count - 1)  // If it isn't the last element
                        {
                            start = i + 1;
                        }
                    }
                }
            }
        }
Example #2
0
 internal void OrderBy <T>(Expression <T> predicate, SORTTYPE type)
 {
     try
     {
         var result = _translateQuery.Translate(predicate, ClauseType.OrderBy);
         _sqlBuilder.OrderBy(TranslateToNativeColumn(result.CommandText), type);
     }
     catch (Exception e)
     {
         this._dbError.Code = ErrorCode.InvalidOperation;
         this._dbError.Text = e.Message;
     }
 }
Example #3
0
        //returns false if sorttype variables are equal, false if not. This is used in the alphabetize method.
        private bool attributesAreEqual(SORTTYPE type, int index1, int index2)
        {
            switch (type)
            {
            case SORTTYPE.BUILDING:
                return(courses[index1].getBuilding().Equals(courses[index2].getBuilding()));

            case SORTTYPE.CAPACITY:
                return(courses[index1].getCapacity().Equals(courses[index2].getCapacity()));

            case SORTTYPE.COURSECODE:
                return(courses[index1].getCourseCode().Equals(courses[index2].getCourseCode()));

            case SORTTYPE.COURSENAME:
                return(courses[index1].getLongName().Equals(courses[index2].getLongName()));

            case SORTTYPE.CREDITS:
                return(courses[index1].getCredits().Equals(courses[index2].getCredits()));

            case SORTTYPE.DAY:
                return(courses[index1].getDay().Equals(courses[index2].getDay()));

            case SORTTYPE.ENDTIME:
                return(courses[index1].getTime().Item2.Equals(courses[index2].getTime().Item2));

            case SORTTYPE.ENROLLMENT:
                return(courses[index1].getEnrollment().Equals(courses[index2].getEnrollment()));

            case SORTTYPE.PROBABILITY:
                return(courses[index1].getProbabilityInt().Equals(courses[index2].getProbabilityInt()));

            case SORTTYPE.PROFESSOR:
                return(courses[index1].getProf().Equals(courses[index2].getProf()));

            case SORTTYPE.RELEVANCY:
                return(relevance[courses[index1].getCourseID()].Equals(relevance[courses[index2].getCourseID()]));

            case SORTTYPE.RMP:
                return(courses[index1].getProf().rmp.Equals(courses[index2].getProf().rmp));

            case SORTTYPE.STARTTIME:
                return(courses[index1].getTime().Item1.Equals(courses[index2].getTime().Item1));

            default:
                return(true);
            }
        }
Example #4
0
        internal void OrderBy(string commandText, SORTTYPE sort)
        {
            string text = string.Format("{0} {1}", commandText, Enum.GetName(typeof(SORTTYPE), sort));

            AppenSqlText(ClauseType.OrderBy, text);
        }
Example #5
0
        // Sorts the search results. Contains cases to designate what the list of courses is to be
        // sorted by (building, capacity, etc.) as well as whether it is ascending or descendng
        public void SortCourses(SORTTYPE sortBy, bool ascending)
        {
            switch (sortBy)
            {
            case SORTTYPE.BUILDING:
                courses = courses.OrderBy(x => (int)x.getBuilding()).ToList();
                break;

            case SORTTYPE.CAPACITY:
                courses = courses.OrderBy(x => x.getCapacity()).ToList();
                break;

            case SORTTYPE.COURSECODE:
                courses = courses.OrderBy(x => x.getCourseID()).ToList();      // Assumes course database is ordered alphabetically by course code. x.getCourseCode() could also work with some changes.
                break;

            case SORTTYPE.COURSENAME:
                courses = courses.OrderBy(x => x.getLongName()).ToList();
                break;

            case SORTTYPE.CREDITS:
                courses = courses.OrderBy(x => x.getCredits()).ToList();
                break;

            case SORTTYPE.DAY:
                courses = courses.OrderBy(x => getSortableValueForDay(x.getDay())).ToList();
                break;

            case SORTTYPE.ENDTIME:
                courses = courses.OrderBy(x => x.getTime().Item2).ToList();
                break;

            case SORTTYPE.ENROLLMENT:
                courses = courses.OrderBy(x => x.getEnrollment()).ToList();
                break;

            case SORTTYPE.PROBABILITY:
                courses = courses.OrderBy(x => x.getProbabilityInt()).ToList();
                break;

            case SORTTYPE.PROFESSOR:
                courses = courses.OrderBy(x => x.getProf().last + x.getProf().first).ToList();
                break;

            case SORTTYPE.RMP:
                courses = courses.OrderBy(x => x.getProf().rmp).ToList();
                break;

            case SORTTYPE.RELEVANCY:
                courses = courses.OrderBy(x => relevance[x.getCourseID()]).ToList();
                break;

            case SORTTYPE.STARTTIME:
                courses = courses.OrderBy(x => x.getTime().Item1).ToList();
                break;

            default:
                break;
            }

            if (!ascending)
            {
                courses.Reverse(); // Simple, right?
            }
            alphabetize(sortBy);   // Alphabetizes the results by course code without disrupting the primary sorting order
        }