{-# LANGUAGE CPP #-}
module WeekDaze.ProblemConfiguration.ProblemValidationSwitches(
ProblemValidationSwitches(..),
checkAvailabilityOfAnyGroupMemberTag,
checkCapacityOfLocationsForMeetingsTag,
checkCoursesForSynchronousSpecifiedTimesTag,
checkDuplicateMeetingLocationIdsTag,
checkDuplicateOwnLocationIdsTag,
checkForAlternativesToSynchronisedCoursesTag,
checkForDuplicateStudentIdsTag,
checkForIdleStudentsTag,
checkForIdleTeachersTag,
checkForInvalidMeetingTimesTag,
checkForMultipleCoursesPerTeacherPerSynchronisationIdTag,
checkForNonExistentFacilitiesTag,
checkForNonExistentGroupIdsTag,
checkForNonExistentMeetingLocationIdsTag,
checkForNonExistentOwnLocationIdsTag,
checkForOverloadedStudentsTag,
checkForSingletonSynchronisedCoursesTag,
checkForStudentsRequiringMultipleSynchronisedSubjectsTag,
checkForStudentsWithUnrealisableFreePeriodPreferenceTag,
checkForSynchronisedCoursesWithDifferentIdealTimeslotsTag,
checkForSynchronisedCoursesWithDifferentLessonsPerWeekTag,
checkForSynchronisedCoursesWithExcessLessonsPerWeekTag,
checkForSynchronisedCoursesWithExcessSpecifiedTimesTag,
checkForSynchronisedCoursesWithExcessTimeslotRequestsTag,
checkForSynchronisedCoursesWithoutSuitableLocationsTag,
checkForSynchronisedCoursesWithUnavailableSpecifiedDaysTag,
checkForTeachersWithUnrealisableFreePeriodPreferenceTag,
checkIfStudentBodiesExceedTeachersTag,
checkIfStudentBodySizeExceedsCapacityOfAllLocationsTag,
checkIfStudentBodySizeExceedsLocationCapacityTag,
checkIndependenceOfStudentTimeslotsRequestsAndMeetingsTag,
checkIndependenceOfTeacherTimeslotsRequestsAndMeetingsTag,
checkLocationsAvailabilityToSupportCoursesTag,
checkLocationsForSynchronousSpecifiedTimesTag,
checkMeetingLocationsAvailabilityTag,
checkMinimumConsecutiveLessonsTag,
checkNullGroupIdTag,
checkNullLocationCatalogueTag,
checkNullStudentBodyRegisterTag,
checkNullTeacherRegisterTag,
checkOwnLocationsAvailabilityTag,
checkRequiredLessonsPerWeekTag,
checkSimultaneousAvailabilityOfGroupMembersTag,
checkStudentsAvailabilityForMandatoryMeetingsTag,
checkStudentsAvailabilityForSpecifiedTimesTag,
checkStudentsForMultipleLevelsOfSameTopicTag,
checkStudentsForSynchronousMeetingsTag,
checkStudentsLowerWorkloadBoundTag,
checkStudentsUpperWorkloadBoundTag,
checkSubjectExistenceTag,
checkSuitableLocationsForKnowledgeRequirementsTag,
checkTeachersAvailabilityForMandatoryMeetingsTag,
checkTeachersForSynchronousMeetingsTag,
checkTeachersUpperWorkloadBoundTag,
checkTeachingCapacityBySubjectTag,
checkTimeslotIdBoundsTag,
checkTimeslotRequestsTag
) where
import qualified Control.DeepSeq
import qualified Data.Default
import qualified Text.XML.HXT.Arrow.Pickle as HXT
import qualified WeekDaze.Enhanced.EnhancedTuple as Enhanced.EnhancedTuple
import qualified WeekDaze.ProblemConfiguration.ValidationSwitch as ProblemConfiguration.ValidationSwitch
import WeekDaze.Enhanced.EnhancedBool()
#ifdef USE_HDBC
import qualified Database.HDBC
import qualified Data.Maybe
import qualified WeekDaze.Database.Selector as Database.Selector
instance Database.Selector.Selector ProblemValidationSwitches where
fromDatabase connection projectIdSql = let
tableName :: Database.Selector.TableName
tableName = Database.Selector.tablePrefix ++ tag
in do
switchesRows <- map (
map $ Data.Maybe.fromMaybe ProblemConfiguration.ValidationSwitch.defaultCheck . either (
error . showString "WeekDaze.ProblemConfiguration.ProblemValidationSwitches.fromDatabase:\tfailed to parse the value for a switch read from the database; " . show
) id . Database.HDBC.safeFromSql
) `fmap` Database.Selector.select connection [
checkAvailabilityOfAnyGroupMemberTag,
checkCapacityOfLocationsForMeetingsTag,
checkCoursesForSynchronousSpecifiedTimesTag,
checkDuplicateMeetingLocationIdsTag,
checkForAlternativesToSynchronisedCoursesTag,
checkForIdleStudentsTag,
checkForIdleTeachersTag,
checkForMultipleCoursesPerTeacherPerSynchronisationIdTag,
checkForNonExistentFacilitiesTag,
checkForOverloadedStudentsTag,
checkForSingletonSynchronisedCoursesTag,
checkForStudentsRequiringMultipleSynchronisedSubjectsTag,
checkForStudentsWithUnrealisableFreePeriodPreferenceTag,
checkForSynchronisedCoursesWithDifferentIdealTimeslotsTag,
checkForSynchronisedCoursesWithDifferentLessonsPerWeekTag,
checkForSynchronisedCoursesWithExcessLessonsPerWeekTag,
checkForSynchronisedCoursesWithExcessSpecifiedTimesTag,
checkForSynchronisedCoursesWithExcessTimeslotRequestsTag,
checkForSynchronisedCoursesWithoutSuitableLocationsTag,
checkForSynchronisedCoursesWithUnavailableSpecifiedDaysTag,
checkForTeachersWithUnrealisableFreePeriodPreferenceTag,
checkIfStudentBodiesExceedTeachersTag,
checkIfStudentBodySizeExceedsCapacityOfAllLocationsTag,
checkIfStudentBodySizeExceedsLocationCapacityTag,
checkIndependenceOfStudentTimeslotsRequestsAndMeetingsTag,
checkIndependenceOfTeacherTimeslotsRequestsAndMeetingsTag,
checkLocationsAvailabilityToSupportCoursesTag,
checkLocationsForSynchronousSpecifiedTimesTag,
checkMeetingLocationsAvailabilityTag,
checkNullLocationCatalogueTag,
checkNullStudentBodyRegisterTag,
checkNullTeacherRegisterTag,
checkOwnLocationsAvailabilityTag,
checkRequiredLessonsPerWeekTag,
checkSimultaneousAvailabilityOfGroupMembersTag,
checkStudentsAvailabilityForMandatoryMeetingsTag,
checkStudentsAvailabilityForSpecifiedTimesTag,
checkStudentsForSynchronousMeetingsTag,
checkStudentsLowerWorkloadBoundTag,
checkStudentsUpperWorkloadBoundTag,
checkSuitableLocationsForKnowledgeRequirementsTag,
checkTeachersAvailabilityForMandatoryMeetingsTag,
checkTeachersForSynchronousMeetingsTag,
checkTeachersUpperWorkloadBoundTag,
checkTeachingCapacityBySubjectTag
] [tableName] [(Database.Selector.projectIdColumnName, projectIdSql)]
return $ case switchesRows of
[] -> Data.Default.def
[switchesRow] -> case switchesRow of
[
checkAvailabilityOfAnyGroupMember,
checkCapacityOfLocationsForMeetings,
checkCoursesForSynchronousSpecifiedTimes,
checkDuplicateMeetingLocationIds,
checkForAlternativesToSynchronisedCourses,
checkForIdleStudents,
checkForIdleTeachers,
checkForMultipleCoursesPerTeacherPerSynchronisationId,
checkForNonExistentFacilities,
checkForOverloadedStudents,
checkForSingletonSynchronisedCourses,
checkForStudentsRequiringMultipleSynchronisedSubjects,
checkForStudentsWithUnrealisableFreePeriodPreference,
checkForSynchronisedCoursesWithDifferentIdealTimeslots,
checkForSynchronisedCoursesWithDifferentLessonsPerWeek,
checkForSynchronisedCoursesWithExcessLessonsPerWeek,
checkForSynchronisedCoursesWithExcessSpecifiedTimes,
checkForSynchronisedCoursesWithExcessTimeslotRequests,
checkForSynchronisedCoursesWithoutSuitableLocations,
checkForSynchronisedCoursesWithUnavailableSpecifiedDays,
checkForTeachersWithUnrealisableFreePeriodPreference,
checkIfStudentBodiesExceedTeachers,
checkIfStudentBodySizeExceedsCapacityOfAllLocations,
checkIfStudentBodySizeExceedsLocationCapacity,
checkIndependenceOfStudentTimeslotsRequestsAndMeetings,
checkIndependenceOfTeacherTimeslotsRequestsAndMeetings,
checkLocationsAvailabilityToSupportCourses,
checkLocationsForSynchronousSpecifiedTimes,
checkMeetingLocationsAvailability,
checkNullLocationCatalogue,
checkNullStudentBodyRegister,
checkNullTeacherRegister,
checkOwnLocationsAvailability,
checkRequiredLessonsPerWeek,
checkSimultaneousAvailabilityOfGroupMembers,
checkStudentsAvailabilityForMandatoryMeetings,
checkStudentsAvailabilityForSpecifiedTimes,
checkStudentsForSynchronousMeetings,
checkStudentsLowerWorkloadBound,
checkStudentsUpperWorkloadBound,
checkSuitableLocationsForKnowledgeRequirements,
checkTeachersAvailabilityForMandatoryMeetings,
checkTeachersForSynchronousMeetings,
checkTeachersUpperWorkloadBound,
checkTeachingCapacityBySubject
] -> Data.Default.def {
getCheckAvailabilityOfAnyGroupMember = checkAvailabilityOfAnyGroupMember,
getCheckCapacityOfLocationsForMeetings = checkCapacityOfLocationsForMeetings,
getCheckCoursesForSynchronousSpecifiedTimes = checkCoursesForSynchronousSpecifiedTimes,
getCheckDuplicateMeetingLocationIds = checkDuplicateMeetingLocationIds,
getCheckForAlternativesToSynchronisedCourses = checkForAlternativesToSynchronisedCourses,
getCheckForIdleStudents = checkForIdleStudents,
getCheckForIdleTeachers = checkForIdleTeachers,
getCheckForMultipleCoursesPerTeacherPerSynchronisationId = checkForMultipleCoursesPerTeacherPerSynchronisationId,
getCheckForNonExistentFacilities = checkForNonExistentFacilities,
getCheckForOverloadedStudents = checkForOverloadedStudents,
getCheckForSingletonSynchronisedCourses = checkForSingletonSynchronisedCourses,
getCheckForStudentsRequiringMultipleSynchronisedSubjects = checkForStudentsRequiringMultipleSynchronisedSubjects,
getCheckForStudentsWithUnrealisableFreePeriodPreference = checkForStudentsWithUnrealisableFreePeriodPreference,
getCheckForSynchronisedCoursesWithDifferentIdealTimeslots = checkForSynchronisedCoursesWithDifferentIdealTimeslots,
getCheckForSynchronisedCoursesWithDifferentLessonsPerWeek = checkForSynchronisedCoursesWithDifferentLessonsPerWeek,
getCheckForSynchronisedCoursesWithExcessLessonsPerWeek = checkForSynchronisedCoursesWithExcessLessonsPerWeek,
getCheckForSynchronisedCoursesWithExcessSpecifiedTimes = checkForSynchronisedCoursesWithExcessSpecifiedTimes,
getCheckForSynchronisedCoursesWithExcessTimeslotRequests = checkForSynchronisedCoursesWithExcessTimeslotRequests,
getCheckForSynchronisedCoursesWithoutSuitableLocations = checkForSynchronisedCoursesWithoutSuitableLocations,
getCheckForSynchronisedCoursesWithUnavailableSpecifiedDays = checkForSynchronisedCoursesWithUnavailableSpecifiedDays,
getCheckForTeachersWithUnrealisableFreePeriodPreference = checkForTeachersWithUnrealisableFreePeriodPreference,
getCheckIfStudentBodiesExceedTeachers = checkIfStudentBodiesExceedTeachers,
getCheckIfStudentBodySizeExceedsCapacityOfAllLocations = checkIfStudentBodySizeExceedsCapacityOfAllLocations,
getCheckIfStudentBodySizeExceedsLocationCapacity = checkIfStudentBodySizeExceedsLocationCapacity,
getCheckIndependenceOfStudentTimeslotsRequestsAndMeetings = checkIndependenceOfStudentTimeslotsRequestsAndMeetings,
getCheckIndependenceOfTeacherTimeslotsRequestsAndMeetings = checkIndependenceOfTeacherTimeslotsRequestsAndMeetings,
getCheckLocationsAvailabilityToSupportCourses = checkLocationsAvailabilityToSupportCourses,
getCheckLocationsForSynchronousSpecifiedTimes = checkLocationsForSynchronousSpecifiedTimes,
getCheckMeetingLocationsAvailability = checkMeetingLocationsAvailability,
getCheckNullLocationCatalogue = checkNullLocationCatalogue,
getCheckNullStudentBodyRegister = checkNullStudentBodyRegister,
getCheckNullTeacherRegister = checkNullTeacherRegister,
getCheckOwnLocationsAvailability = checkOwnLocationsAvailability,
getCheckRequiredLessonsPerWeek = checkRequiredLessonsPerWeek,
getCheckSimultaneousAvailabilityOfGroupMembers = checkSimultaneousAvailabilityOfGroupMembers,
getCheckStudentsAvailabilityForMandatoryMeetings = checkStudentsAvailabilityForMandatoryMeetings,
getCheckStudentsAvailabilityForSpecifiedTimes = checkStudentsAvailabilityForSpecifiedTimes,
getCheckStudentsForSynchronousMeetings = checkStudentsForSynchronousMeetings,
getCheckStudentsLowerWorkloadBound = checkStudentsLowerWorkloadBound,
getCheckStudentsUpperWorkloadBound = checkStudentsUpperWorkloadBound,
getCheckSuitableLocationsForKnowledgeRequirements = checkSuitableLocationsForKnowledgeRequirements,
getCheckTeachersAvailabilityForMandatoryMeetings = checkTeachersAvailabilityForMandatoryMeetings,
getCheckTeachersForSynchronousMeetings = checkTeachersForSynchronousMeetings,
getCheckTeachersUpperWorkloadBound = checkTeachersUpperWorkloadBound,
getCheckTeachingCapacityBySubject = checkTeachingCapacityBySubject
}
_ -> error $ "WeekDaze.ProblemConfiguration.ProblemValidationSwitches.fromDatabase:\tunexpected number of columns=" ++ show (length switchesRow) ++ " in row of table " ++ show tableName ++ "."
_ -> error $ "WeekDaze.ProblemConfiguration.ProblemValidationSwitches.fromDatabase:\tunexpected number of rows=" ++ show (length switchesRows) ++ " selected from table " ++ show tableName ++ "."
#endif /* USE_HDBC */
tag :: String
tag = "problemValidationSwitches"
checkAvailabilityOfAnyGroupMemberTag :: String
checkAvailabilityOfAnyGroupMemberTag = "checkAvailabilityOfAnyGroupMember"
checkCapacityOfLocationsForMeetingsTag :: String
checkCapacityOfLocationsForMeetingsTag = "checkCapacityOfLocationsForMeetings"
checkCoursesForSynchronousSpecifiedTimesTag :: String
checkCoursesForSynchronousSpecifiedTimesTag = "checkCoursesForSynchronousSpecifiedTimes"
checkDuplicateMeetingLocationIdsTag :: String
checkDuplicateMeetingLocationIdsTag = "checkDuplicateMeetingLocationIds"
checkDuplicateOwnLocationIdsTag :: String
checkDuplicateOwnLocationIdsTag = "checkDuplicateOwnLocationIds"
checkForAlternativesToSynchronisedCoursesTag :: String
checkForAlternativesToSynchronisedCoursesTag = "checkForAlternativesToSynchronisedCourses"
checkForDuplicateStudentIdsTag :: String
checkForDuplicateStudentIdsTag = "checkForDuplicateStudentIds"
checkForIdleStudentsTag :: String
checkForIdleStudentsTag = "checkForIdleStudents"
checkForIdleTeachersTag :: String
checkForIdleTeachersTag = "checkForIdleTeachers"
checkForInvalidMeetingTimesTag :: String
checkForInvalidMeetingTimesTag = "checkForInvalidMeetingTimes"
checkForMultipleCoursesPerTeacherPerSynchronisationIdTag :: String
checkForMultipleCoursesPerTeacherPerSynchronisationIdTag = "checkForMultipleCoursesPerTeacherPerSynchronisationId"
checkForNonExistentFacilitiesTag :: String
checkForNonExistentFacilitiesTag = "checkForNonExistentFacilities"
checkForNonExistentGroupIdsTag :: String
checkForNonExistentGroupIdsTag = "checkForNonExistentGroupIds"
checkForNonExistentMeetingLocationIdsTag :: String
checkForNonExistentMeetingLocationIdsTag = "checkForNonExistentMeetingLocationIds"
checkForNonExistentOwnLocationIdsTag :: String
checkForNonExistentOwnLocationIdsTag = "checkForNonExistentOwnLocationIds"
checkForOverloadedStudentsTag :: String
checkForOverloadedStudentsTag = "checkForOverloadedStudents"
checkForSingletonSynchronisedCoursesTag :: String
checkForSingletonSynchronisedCoursesTag = "checkForSingletonSynchronisedCourses"
checkForStudentsRequiringMultipleSynchronisedSubjectsTag :: String
checkForStudentsRequiringMultipleSynchronisedSubjectsTag = "checkForStudentsRequiringMultipleSynchronisedSubjects"
checkForStudentsWithUnrealisableFreePeriodPreferenceTag :: String
checkForStudentsWithUnrealisableFreePeriodPreferenceTag = "checkForStudentsWithUnrealisableFreePeriodPreference"
checkForSynchronisedCoursesWithDifferentIdealTimeslotsTag :: String
checkForSynchronisedCoursesWithDifferentIdealTimeslotsTag = "checkForSynchronisedCoursesWithDifferentIdealTimeslots"
checkForSynchronisedCoursesWithDifferentLessonsPerWeekTag :: String
checkForSynchronisedCoursesWithDifferentLessonsPerWeekTag = "checkForSynchronisedCoursesWithDifferentLessonsPerWeek"
checkForSynchronisedCoursesWithExcessLessonsPerWeekTag :: String
checkForSynchronisedCoursesWithExcessLessonsPerWeekTag = "checkForSynchronisedCoursesWithExcessLessonsPerWeek"
checkForSynchronisedCoursesWithExcessSpecifiedTimesTag :: String
checkForSynchronisedCoursesWithExcessSpecifiedTimesTag = "checkForSynchronisedCoursesWithExcessSpecifiedTimes"
checkForSynchronisedCoursesWithExcessTimeslotRequestsTag :: String
checkForSynchronisedCoursesWithExcessTimeslotRequestsTag = "checkForSynchronisedCoursesWithExcessTimeslotRequests"
checkForSynchronisedCoursesWithoutSuitableLocationsTag :: String
checkForSynchronisedCoursesWithoutSuitableLocationsTag = "checkForSynchronisedCoursesWithoutSuitableLocations"
checkForSynchronisedCoursesWithUnavailableSpecifiedDaysTag :: String
checkForSynchronisedCoursesWithUnavailableSpecifiedDaysTag = "checkForSynchronisedCoursesWithUnavailableSpecifiedDays"
checkForTeachersWithUnrealisableFreePeriodPreferenceTag :: String
checkForTeachersWithUnrealisableFreePeriodPreferenceTag = "checkForTeachersWithUnrealisableFreePeriodPreference"
checkIfStudentBodiesExceedTeachersTag :: String
checkIfStudentBodiesExceedTeachersTag = "checkIfStudentBodiesExceedTeachers"
checkIfStudentBodySizeExceedsCapacityOfAllLocationsTag :: String
checkIfStudentBodySizeExceedsCapacityOfAllLocationsTag = "checkIfStudentBodySizeExceedsCapacityOfAllLocations"
checkIfStudentBodySizeExceedsLocationCapacityTag :: String
checkIfStudentBodySizeExceedsLocationCapacityTag = "checkIfStudentBodySizeExceedsLocationCapacity"
checkIndependenceOfStudentTimeslotsRequestsAndMeetingsTag :: String
checkIndependenceOfStudentTimeslotsRequestsAndMeetingsTag = "checkIndependenceOfStudentTimeslotsRequestsAndMeetings"
checkIndependenceOfTeacherTimeslotsRequestsAndMeetingsTag :: String
checkIndependenceOfTeacherTimeslotsRequestsAndMeetingsTag = "checkIndependenceOfTeacherTimeslotsRequestsAndMeetings"
checkLocationsAvailabilityToSupportCoursesTag :: String
checkLocationsAvailabilityToSupportCoursesTag = "checkLocationsAvailabilityToSupportCourses"
checkLocationsForSynchronousSpecifiedTimesTag :: String
checkLocationsForSynchronousSpecifiedTimesTag = "checkLocationsForSynchronousSpecifiedTimes"
checkMeetingLocationsAvailabilityTag :: String
checkMeetingLocationsAvailabilityTag = "checkMeetingLocationsAvailability"
checkMinimumConsecutiveLessonsTag :: String
checkMinimumConsecutiveLessonsTag = "checkMinimumConsecutiveLessons"
checkNullGroupIdTag :: String
checkNullGroupIdTag = "checkNullGroupId"
checkNullLocationCatalogueTag :: String
checkNullLocationCatalogueTag = "checkNullLocationCatalogue"
checkNullStudentBodyRegisterTag :: String
checkNullStudentBodyRegisterTag = "checkNullStudentBodyRegister"
checkNullTeacherRegisterTag :: String
checkNullTeacherRegisterTag = "checkNullTeacherRegister"
checkOwnLocationsAvailabilityTag :: String
checkOwnLocationsAvailabilityTag = "checkOwnLocationsAvailability"
checkRequiredLessonsPerWeekTag :: String
checkRequiredLessonsPerWeekTag = "checkRequiredLessonsPerWeek"
checkSimultaneousAvailabilityOfGroupMembersTag :: String
checkSimultaneousAvailabilityOfGroupMembersTag = "checkSimultaneousAvailabilityOfGroupMembers"
checkStudentsAvailabilityForMandatoryMeetingsTag :: String
checkStudentsAvailabilityForMandatoryMeetingsTag = "checkStudentsAvailabilityForMandatoryMeetings"
checkStudentsAvailabilityForSpecifiedTimesTag :: String
checkStudentsAvailabilityForSpecifiedTimesTag = "checkStudentsAvailabilityForSpecifiedTimes"
checkStudentsForMultipleLevelsOfSameTopicTag :: String
checkStudentsForMultipleLevelsOfSameTopicTag = "checkStudentsForMultipleLevelsOfSameTopic"
checkStudentsForSynchronousMeetingsTag :: String
checkStudentsForSynchronousMeetingsTag = "checkStudentsForSynchronousMeetings"
checkStudentsLowerWorkloadBoundTag :: String
checkStudentsLowerWorkloadBoundTag = "checkStudentsLowerWorkloadBound"
checkStudentsUpperWorkloadBoundTag :: String
checkStudentsUpperWorkloadBoundTag = "checkStudentsUpperWorkloadBound"
checkSubjectExistenceTag :: String
checkSubjectExistenceTag = "checkSubjectExistence"
checkSuitableLocationsForKnowledgeRequirementsTag :: String
checkSuitableLocationsForKnowledgeRequirementsTag = "checkSuitableLocationsForKnowledgeRequirements"
checkTeachersAvailabilityForMandatoryMeetingsTag :: String
checkTeachersAvailabilityForMandatoryMeetingsTag = "checkTeachersAvailabilityForMandatoryMeetings"
checkTeachersForSynchronousMeetingsTag :: String
checkTeachersForSynchronousMeetingsTag = "checkTeachersForSynchronousMeetings"
checkTeachersUpperWorkloadBoundTag :: String
checkTeachersUpperWorkloadBoundTag = "checkTeachersUpperWorkloadBound"
checkTeachingCapacityBySubjectTag :: String
checkTeachingCapacityBySubjectTag = "checkTeachingCapacityBySubject"
checkTimeslotIdBoundsTag :: String
checkTimeslotIdBoundsTag = "checkTimeslotIdBounds"
checkTimeslotRequestsTag :: String
checkTimeslotRequestsTag = "checkTimeslotRequests"
data ProblemValidationSwitches = MkProblemValidationSwitches {
getCheckAvailabilityOfAnyGroupMember :: ProblemConfiguration.ValidationSwitch.Check,
getCheckCapacityOfLocationsForMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckCoursesForSynchronousSpecifiedTimes :: ProblemConfiguration.ValidationSwitch.Check,
getCheckDuplicateMeetingLocationIds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckDuplicateOwnLocationIds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForAlternativesToSynchronisedCourses :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForDuplicateStudentIds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForIdleStudents :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForIdleTeachers :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForInvalidMeetingTimes :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForMultipleCoursesPerTeacherPerSynchronisationId :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForNonExistentFacilities :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForNonExistentGroupIds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForNonExistentMeetingLocationIds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForNonExistentOwnLocationIds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForOverloadedStudents :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSingletonSynchronisedCourses :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForStudentsRequiringMultipleSynchronisedSubjects :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForStudentsWithUnrealisableFreePeriodPreference :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithDifferentIdealTimeslots :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithDifferentLessonsPerWeek :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithExcessLessonsPerWeek :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithExcessSpecifiedTimes :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithExcessTimeslotRequests :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithoutSuitableLocations :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForSynchronisedCoursesWithUnavailableSpecifiedDays :: ProblemConfiguration.ValidationSwitch.Check,
getCheckForTeachersWithUnrealisableFreePeriodPreference :: ProblemConfiguration.ValidationSwitch.Check,
getCheckIfStudentBodiesExceedTeachers :: ProblemConfiguration.ValidationSwitch.Check,
getCheckIfStudentBodySizeExceedsCapacityOfAllLocations :: ProblemConfiguration.ValidationSwitch.Check,
getCheckIfStudentBodySizeExceedsLocationCapacity :: ProblemConfiguration.ValidationSwitch.Check,
getCheckIndependenceOfStudentTimeslotsRequestsAndMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckIndependenceOfTeacherTimeslotsRequestsAndMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckLocationsAvailabilityToSupportCourses :: ProblemConfiguration.ValidationSwitch.Check,
getCheckLocationsForSynchronousSpecifiedTimes :: ProblemConfiguration.ValidationSwitch.Check,
getCheckMeetingLocationsAvailability :: ProblemConfiguration.ValidationSwitch.Check,
getCheckMinimumConsecutiveLessons :: ProblemConfiguration.ValidationSwitch.Check,
getCheckNullGroupId :: ProblemConfiguration.ValidationSwitch.Check,
getCheckNullLocationCatalogue :: ProblemConfiguration.ValidationSwitch.Check,
getCheckNullStudentBodyRegister :: ProblemConfiguration.ValidationSwitch.Check,
getCheckNullTeacherRegister :: ProblemConfiguration.ValidationSwitch.Check,
getCheckOwnLocationsAvailability :: ProblemConfiguration.ValidationSwitch.Check,
getCheckRequiredLessonsPerWeek :: ProblemConfiguration.ValidationSwitch.Check,
getCheckSimultaneousAvailabilityOfGroupMembers :: ProblemConfiguration.ValidationSwitch.Check,
getCheckStudentsAvailabilityForMandatoryMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckStudentsAvailabilityForSpecifiedTimes :: ProblemConfiguration.ValidationSwitch.Check,
getCheckStudentsForMultipleLevelsOfSameTopic :: ProblemConfiguration.ValidationSwitch.Check,
getCheckStudentsForSynchronousMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckStudentsLowerWorkloadBound :: ProblemConfiguration.ValidationSwitch.Check,
getCheckStudentsUpperWorkloadBound :: ProblemConfiguration.ValidationSwitch.Check,
getCheckSubjectExistence :: ProblemConfiguration.ValidationSwitch.Check,
getCheckSuitableLocationsForKnowledgeRequirements :: ProblemConfiguration.ValidationSwitch.Check,
getCheckTeachersAvailabilityForMandatoryMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckTeachersForSynchronousMeetings :: ProblemConfiguration.ValidationSwitch.Check,
getCheckTeachersUpperWorkloadBound :: ProblemConfiguration.ValidationSwitch.Check,
getCheckTeachingCapacityBySubject :: ProblemConfiguration.ValidationSwitch.Check,
getCheckTimeslotIdBounds :: ProblemConfiguration.ValidationSwitch.Check,
getCheckTimeslotRequests :: ProblemConfiguration.ValidationSwitch.Check
} deriving (Eq, Show)
instance HXT.XmlPickler ProblemValidationSwitches where
xpickle = HXT.xpElem tag . HXT.xpWrap (
\(
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56
) -> MkProblemValidationSwitches a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 a28 a29 a30 a31 a32 a33 a34 a35 a36 a37 a38 a39 a40 a41 a42 a43 a44 a45 a46 a47 a48 a49 a50 a51 a52 a53 a54 a55 a56,
\MkProblemValidationSwitches {
getCheckAvailabilityOfAnyGroupMember = checkAvailabilityOfAnyGroupMember,
getCheckCapacityOfLocationsForMeetings = checkCapacityOfLocationsForMeetings,
getCheckCoursesForSynchronousSpecifiedTimes = checkCoursesForSynchronousSpecifiedTimes,
getCheckDuplicateMeetingLocationIds = checkDuplicateMeetingLocationIds,
getCheckDuplicateOwnLocationIds = checkDuplicateOwnLocationIds,
getCheckForAlternativesToSynchronisedCourses = checkForAlternativesToSynchronisedCourses,
getCheckForDuplicateStudentIds = checkForDuplicateStudentIds,
getCheckForIdleStudents = checkForIdleStudents,
getCheckForIdleTeachers = checkForIdleTeachers,
getCheckForInvalidMeetingTimes = checkForInvalidMeetingTimes,
getCheckForMultipleCoursesPerTeacherPerSynchronisationId = checkForMultipleCoursesPerTeacherPerSynchronisationId,
getCheckForNonExistentFacilities = checkForNonExistentFacilities,
getCheckForNonExistentGroupIds = checkForNonExistentGroupIds,
getCheckForNonExistentMeetingLocationIds = checkForNonExistentMeetingLocationIds,
getCheckForNonExistentOwnLocationIds = checkForNonExistentOwnLocationIds,
getCheckForOverloadedStudents = checkForOverloadedStudents,
getCheckForSingletonSynchronisedCourses = checkForSingletonSynchronisedCourses,
getCheckForStudentsRequiringMultipleSynchronisedSubjects = checkForStudentsRequiringMultipleSynchronisedSubjects,
getCheckForStudentsWithUnrealisableFreePeriodPreference = checkForStudentsWithUnrealisableFreePeriodPreference,
getCheckForSynchronisedCoursesWithDifferentIdealTimeslots = checkForSynchronisedCoursesWithDifferentIdealTimeslots,
getCheckForSynchronisedCoursesWithDifferentLessonsPerWeek = checkForSynchronisedCoursesWithDifferentLessonsPerWeek,
getCheckForSynchronisedCoursesWithExcessLessonsPerWeek = checkForSynchronisedCoursesWithExcessLessonsPerWeek,
getCheckForSynchronisedCoursesWithExcessSpecifiedTimes = checkForSynchronisedCoursesWithExcessSpecifiedTimes,
getCheckForSynchronisedCoursesWithExcessTimeslotRequests = checkForSynchronisedCoursesWithExcessTimeslotRequests,
getCheckForSynchronisedCoursesWithoutSuitableLocations = checkForSynchronisedCoursesWithoutSuitableLocations,
getCheckForSynchronisedCoursesWithUnavailableSpecifiedDays = checkForSynchronisedCoursesWithUnavailableSpecifiedDays,
getCheckForTeachersWithUnrealisableFreePeriodPreference = checkForTeachersWithUnrealisableFreePeriodPreference,
getCheckIfStudentBodiesExceedTeachers = checkIfStudentBodiesExceedTeachers,
getCheckIfStudentBodySizeExceedsCapacityOfAllLocations = checkIfStudentBodySizeExceedsCapacityOfAllLocations,
getCheckIfStudentBodySizeExceedsLocationCapacity = checkIfStudentBodySizeExceedsLocationCapacity,
getCheckIndependenceOfStudentTimeslotsRequestsAndMeetings = checkIndependenceOfStudentTimeslotsRequestsAndMeetings,
getCheckIndependenceOfTeacherTimeslotsRequestsAndMeetings = checkIndependenceOfTeacherTimeslotsRequestsAndMeetings,
getCheckLocationsAvailabilityToSupportCourses = checkLocationsAvailabilityToSupportCourses,
getCheckLocationsForSynchronousSpecifiedTimes = checkLocationsForSynchronousSpecifiedTimes,
getCheckMeetingLocationsAvailability = checkMeetingLocationsAvailability,
getCheckMinimumConsecutiveLessons = checkMinimumConsecutiveLessons,
getCheckNullGroupId = checkNullGroupId,
getCheckNullLocationCatalogue = checkNullLocationCatalogue,
getCheckNullStudentBodyRegister = checkNullStudentBodyRegister,
getCheckNullTeacherRegister = checkNullTeacherRegister,
getCheckOwnLocationsAvailability = checkOwnLocationsAvailability,
getCheckRequiredLessonsPerWeek = checkRequiredLessonsPerWeek,
getCheckSimultaneousAvailabilityOfGroupMembers = checkSimultaneousAvailabilityOfGroupMembers,
getCheckStudentsAvailabilityForMandatoryMeetings = checkStudentsAvailabilityForMandatoryMeetings,
getCheckStudentsAvailabilityForSpecifiedTimes = checkStudentsAvailabilityForSpecifiedTimes,
getCheckStudentsForMultipleLevelsOfSameTopic = checkStudentsForMultipleLevelsOfSameTopic,
getCheckStudentsForSynchronousMeetings = checkStudentsForSynchronousMeetings,
getCheckStudentsLowerWorkloadBound = checkStudentsLowerWorkloadBound,
getCheckStudentsUpperWorkloadBound = checkStudentsUpperWorkloadBound,
getCheckSubjectExistence = checkSubjectExistence,
getCheckSuitableLocationsForKnowledgeRequirements = checkSuitableLocationsForKnowledgeRequirements,
getCheckTeachersAvailabilityForMandatoryMeetings = checkTeachersAvailabilityForMandatoryMeetings,
getCheckTeachersForSynchronousMeetings = checkTeachersForSynchronousMeetings,
getCheckTeachersUpperWorkloadBound = checkTeachersUpperWorkloadBound,
getCheckTeachingCapacityBySubject = checkTeachingCapacityBySubject,
getCheckTimeslotIdBounds = checkTimeslotIdBounds,
getCheckTimeslotRequests = checkTimeslotRequests
} -> (
checkAvailabilityOfAnyGroupMember,
checkCapacityOfLocationsForMeetings,
checkCoursesForSynchronousSpecifiedTimes,
checkDuplicateMeetingLocationIds,
checkDuplicateOwnLocationIds,
checkForAlternativesToSynchronisedCourses,
checkForDuplicateStudentIds,
checkForIdleStudents,
checkForIdleTeachers,
checkForInvalidMeetingTimes,
checkForMultipleCoursesPerTeacherPerSynchronisationId,
checkForNonExistentFacilities,
checkForNonExistentGroupIds,
checkForNonExistentMeetingLocationIds,
checkForNonExistentOwnLocationIds,
checkForOverloadedStudents,
checkForSingletonSynchronisedCourses,
checkForStudentsRequiringMultipleSynchronisedSubjects,
checkForStudentsWithUnrealisableFreePeriodPreference,
checkForSynchronisedCoursesWithDifferentIdealTimeslots,
checkForSynchronisedCoursesWithDifferentLessonsPerWeek,
checkForSynchronisedCoursesWithExcessLessonsPerWeek,
checkForSynchronisedCoursesWithExcessSpecifiedTimes,
checkForSynchronisedCoursesWithExcessTimeslotRequests,
checkForSynchronisedCoursesWithoutSuitableLocations,
checkForSynchronisedCoursesWithUnavailableSpecifiedDays,
checkForTeachersWithUnrealisableFreePeriodPreference,
checkIfStudentBodiesExceedTeachers,
checkIfStudentBodySizeExceedsCapacityOfAllLocations,
checkIfStudentBodySizeExceedsLocationCapacity,
checkIndependenceOfStudentTimeslotsRequestsAndMeetings,
checkIndependenceOfTeacherTimeslotsRequestsAndMeetings,
checkLocationsAvailabilityToSupportCourses,
checkLocationsForSynchronousSpecifiedTimes,
checkMeetingLocationsAvailability,
checkMinimumConsecutiveLessons,
checkNullGroupId,
checkNullLocationCatalogue,
checkNullStudentBodyRegister,
checkNullTeacherRegister,
checkOwnLocationsAvailability,
checkRequiredLessonsPerWeek,
checkSimultaneousAvailabilityOfGroupMembers,
checkStudentsAvailabilityForMandatoryMeetings,
checkStudentsAvailabilityForSpecifiedTimes,
checkStudentsForMultipleLevelsOfSameTopic,
checkStudentsForSynchronousMeetings,
checkStudentsLowerWorkloadBound,
checkStudentsUpperWorkloadBound,
checkSubjectExistence,
checkSuitableLocationsForKnowledgeRequirements,
checkTeachersAvailabilityForMandatoryMeetings,
checkTeachersForSynchronousMeetings,
checkTeachersUpperWorkloadBound,
checkTeachingCapacityBySubject,
checkTimeslotIdBounds,
checkTimeslotRequests
)
) $ Enhanced.EnhancedTuple.xp57Tuple (
getCheckAvailabilityOfAnyGroupMember def `HXT.xpDefault` HXT.xpAttr checkAvailabilityOfAnyGroupMemberTag HXT.xpickle
) (
getCheckCapacityOfLocationsForMeetings def `HXT.xpDefault` HXT.xpAttr checkCapacityOfLocationsForMeetingsTag HXT.xpickle
) (
getCheckCoursesForSynchronousSpecifiedTimes def `HXT.xpDefault` HXT.xpAttr checkCoursesForSynchronousSpecifiedTimesTag HXT.xpickle
) (
getCheckDuplicateMeetingLocationIds def `HXT.xpDefault` HXT.xpAttr checkDuplicateMeetingLocationIdsTag HXT.xpickle
) (
getCheckDuplicateOwnLocationIds def `HXT.xpDefault` HXT.xpAttr checkDuplicateOwnLocationIdsTag HXT.xpickle
) (
getCheckForAlternativesToSynchronisedCourses def `HXT.xpDefault` HXT.xpAttr checkForAlternativesToSynchronisedCoursesTag HXT.xpickle
) (
getCheckForDuplicateStudentIds def `HXT.xpDefault` HXT.xpAttr checkForDuplicateStudentIdsTag HXT.xpickle
) (
getCheckForIdleStudents def `HXT.xpDefault` HXT.xpAttr checkForIdleStudentsTag HXT.xpickle
) (
getCheckForIdleTeachers def `HXT.xpDefault` HXT.xpAttr checkForIdleTeachersTag HXT.xpickle
) (
getCheckForInvalidMeetingTimes def `HXT.xpDefault` HXT.xpAttr checkForInvalidMeetingTimesTag HXT.xpickle
) (
getCheckForMultipleCoursesPerTeacherPerSynchronisationId def `HXT.xpDefault` HXT.xpAttr checkForMultipleCoursesPerTeacherPerSynchronisationIdTag HXT.xpickle
) (
getCheckForNonExistentFacilities def `HXT.xpDefault` HXT.xpAttr checkForNonExistentFacilitiesTag HXT.xpickle
) (
getCheckForNonExistentGroupIds def `HXT.xpDefault` HXT.xpAttr checkForNonExistentGroupIdsTag HXT.xpickle
) (
getCheckForNonExistentMeetingLocationIds def `HXT.xpDefault` HXT.xpAttr checkForNonExistentMeetingLocationIdsTag HXT.xpickle
) (
getCheckForNonExistentOwnLocationIds def `HXT.xpDefault` HXT.xpAttr checkForNonExistentOwnLocationIdsTag HXT.xpickle
) (
getCheckForOverloadedStudents def `HXT.xpDefault` HXT.xpAttr checkForOverloadedStudentsTag HXT.xpickle
) (
getCheckForSingletonSynchronisedCourses def `HXT.xpDefault` HXT.xpAttr checkForSingletonSynchronisedCoursesTag HXT.xpickle
) (
getCheckForStudentsRequiringMultipleSynchronisedSubjects def `HXT.xpDefault` HXT.xpAttr checkForStudentsRequiringMultipleSynchronisedSubjectsTag HXT.xpickle
) (
getCheckForStudentsWithUnrealisableFreePeriodPreference def `HXT.xpDefault` HXT.xpAttr checkForStudentsWithUnrealisableFreePeriodPreferenceTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithDifferentIdealTimeslots def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithDifferentIdealTimeslotsTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithDifferentLessonsPerWeek def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithDifferentLessonsPerWeekTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithExcessLessonsPerWeek def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithExcessLessonsPerWeekTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithExcessSpecifiedTimes def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithExcessSpecifiedTimesTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithExcessTimeslotRequests def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithExcessTimeslotRequestsTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithoutSuitableLocations def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithoutSuitableLocationsTag HXT.xpickle
) (
getCheckForSynchronisedCoursesWithUnavailableSpecifiedDays def `HXT.xpDefault` HXT.xpAttr checkForSynchronisedCoursesWithUnavailableSpecifiedDaysTag HXT.xpickle
) (
getCheckForTeachersWithUnrealisableFreePeriodPreference def `HXT.xpDefault` HXT.xpAttr checkForTeachersWithUnrealisableFreePeriodPreferenceTag HXT.xpickle
) (
getCheckIfStudentBodiesExceedTeachers def `HXT.xpDefault` HXT.xpAttr checkIfStudentBodiesExceedTeachersTag HXT.xpickle
) (
getCheckIfStudentBodySizeExceedsCapacityOfAllLocations def `HXT.xpDefault` HXT.xpAttr checkIfStudentBodySizeExceedsCapacityOfAllLocationsTag HXT.xpickle
) (
getCheckIfStudentBodySizeExceedsLocationCapacity def `HXT.xpDefault` HXT.xpAttr checkIfStudentBodySizeExceedsLocationCapacityTag HXT.xpickle
) (
getCheckIndependenceOfStudentTimeslotsRequestsAndMeetings def `HXT.xpDefault` HXT.xpAttr checkIndependenceOfStudentTimeslotsRequestsAndMeetingsTag HXT.xpickle
) (
getCheckIndependenceOfTeacherTimeslotsRequestsAndMeetings def `HXT.xpDefault` HXT.xpAttr checkIndependenceOfTeacherTimeslotsRequestsAndMeetingsTag HXT.xpickle
) (
getCheckLocationsAvailabilityToSupportCourses def `HXT.xpDefault` HXT.xpAttr checkLocationsAvailabilityToSupportCoursesTag HXT.xpickle
) (
getCheckLocationsForSynchronousSpecifiedTimes def `HXT.xpDefault` HXT.xpAttr checkLocationsForSynchronousSpecifiedTimesTag HXT.xpickle
) (
getCheckMeetingLocationsAvailability def `HXT.xpDefault` HXT.xpAttr checkMeetingLocationsAvailabilityTag HXT.xpickle
) (
getCheckMinimumConsecutiveLessons def `HXT.xpDefault` HXT.xpAttr checkMinimumConsecutiveLessonsTag HXT.xpickle
) (
getCheckNullGroupId def `HXT.xpDefault` HXT.xpAttr checkNullGroupIdTag HXT.xpickle
) (
getCheckNullLocationCatalogue def `HXT.xpDefault` HXT.xpAttr checkNullLocationCatalogueTag HXT.xpickle
) (
getCheckNullStudentBodyRegister def `HXT.xpDefault` HXT.xpAttr checkNullStudentBodyRegisterTag HXT.xpickle
) (
getCheckNullTeacherRegister def `HXT.xpDefault` HXT.xpAttr checkNullTeacherRegisterTag HXT.xpickle
) (
getCheckOwnLocationsAvailability def `HXT.xpDefault` HXT.xpAttr checkOwnLocationsAvailabilityTag HXT.xpickle
) (
getCheckRequiredLessonsPerWeek def `HXT.xpDefault` HXT.xpAttr checkRequiredLessonsPerWeekTag HXT.xpickle
) (
getCheckSimultaneousAvailabilityOfGroupMembers def `HXT.xpDefault` HXT.xpAttr checkSimultaneousAvailabilityOfGroupMembersTag HXT.xpickle
) (
getCheckStudentsAvailabilityForMandatoryMeetings def `HXT.xpDefault` HXT.xpAttr checkStudentsAvailabilityForMandatoryMeetingsTag HXT.xpickle
) (
getCheckStudentsAvailabilityForSpecifiedTimes def `HXT.xpDefault` HXT.xpAttr checkStudentsAvailabilityForSpecifiedTimesTag HXT.xpickle
) (
getCheckStudentsForMultipleLevelsOfSameTopic def `HXT.xpDefault` HXT.xpAttr checkStudentsForMultipleLevelsOfSameTopicTag HXT.xpickle
) (
getCheckStudentsForSynchronousMeetings def `HXT.xpDefault` HXT.xpAttr checkStudentsForSynchronousMeetingsTag HXT.xpickle
) (
getCheckStudentsLowerWorkloadBound def `HXT.xpDefault` HXT.xpAttr checkStudentsLowerWorkloadBoundTag HXT.xpickle
) (
getCheckStudentsUpperWorkloadBound def `HXT.xpDefault` HXT.xpAttr checkStudentsUpperWorkloadBoundTag HXT.xpickle
) (
getCheckSubjectExistence def `HXT.xpDefault` HXT.xpAttr checkSubjectExistenceTag HXT.xpickle
) (
getCheckSuitableLocationsForKnowledgeRequirements def `HXT.xpDefault` HXT.xpAttr checkSuitableLocationsForKnowledgeRequirementsTag HXT.xpickle
) (
getCheckTeachersAvailabilityForMandatoryMeetings def `HXT.xpDefault` HXT.xpAttr checkTeachersAvailabilityForMandatoryMeetingsTag HXT.xpickle
) (
getCheckTeachersForSynchronousMeetings def `HXT.xpDefault` HXT.xpAttr checkTeachersForSynchronousMeetingsTag HXT.xpickle
) (
getCheckTeachersUpperWorkloadBound def `HXT.xpDefault` HXT.xpAttr checkTeachersUpperWorkloadBoundTag HXT.xpickle
) (
getCheckTeachingCapacityBySubject def `HXT.xpDefault` HXT.xpAttr checkTeachingCapacityBySubjectTag HXT.xpickle
) (
getCheckTimeslotIdBounds def `HXT.xpDefault` HXT.xpAttr checkTimeslotIdBoundsTag HXT.xpickle
) (
getCheckTimeslotRequests def `HXT.xpDefault` HXT.xpAttr checkTimeslotRequestsTag HXT.xpickle
) where
def :: ProblemValidationSwitches
def = Data.Default.def
instance Data.Default.Default ProblemValidationSwitches where
def = MkProblemValidationSwitches {
getCheckAvailabilityOfAnyGroupMember = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckCapacityOfLocationsForMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckCoursesForSynchronousSpecifiedTimes = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckDuplicateMeetingLocationIds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckDuplicateOwnLocationIds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForAlternativesToSynchronisedCourses = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForDuplicateStudentIds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForIdleStudents = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForIdleTeachers = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForInvalidMeetingTimes = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForMultipleCoursesPerTeacherPerSynchronisationId = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForNonExistentFacilities = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForNonExistentGroupIds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForNonExistentMeetingLocationIds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForNonExistentOwnLocationIds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForOverloadedStudents = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSingletonSynchronisedCourses = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForStudentsRequiringMultipleSynchronisedSubjects = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForStudentsWithUnrealisableFreePeriodPreference = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithDifferentIdealTimeslots = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithDifferentLessonsPerWeek = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithExcessLessonsPerWeek = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithExcessSpecifiedTimes = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithExcessTimeslotRequests = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithoutSuitableLocations = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForSynchronisedCoursesWithUnavailableSpecifiedDays = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckForTeachersWithUnrealisableFreePeriodPreference = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckIfStudentBodiesExceedTeachers = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckIfStudentBodySizeExceedsCapacityOfAllLocations = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckIfStudentBodySizeExceedsLocationCapacity = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckIndependenceOfStudentTimeslotsRequestsAndMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckIndependenceOfTeacherTimeslotsRequestsAndMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckLocationsAvailabilityToSupportCourses = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckLocationsForSynchronousSpecifiedTimes = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckMeetingLocationsAvailability = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckMinimumConsecutiveLessons = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckNullGroupId = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckNullLocationCatalogue = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckNullStudentBodyRegister = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckNullTeacherRegister = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckOwnLocationsAvailability = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckRequiredLessonsPerWeek = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckSimultaneousAvailabilityOfGroupMembers = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckStudentsAvailabilityForMandatoryMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckStudentsAvailabilityForSpecifiedTimes = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckStudentsForMultipleLevelsOfSameTopic = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckStudentsForSynchronousMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckStudentsLowerWorkloadBound = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckStudentsUpperWorkloadBound = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckSubjectExistence = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckSuitableLocationsForKnowledgeRequirements = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckTeachersAvailabilityForMandatoryMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckTeachersForSynchronousMeetings = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckTeachersUpperWorkloadBound = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckTeachingCapacityBySubject = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckTimeslotIdBounds = ProblemConfiguration.ValidationSwitch.defaultCheck,
getCheckTimeslotRequests = ProblemConfiguration.ValidationSwitch.defaultCheck
}
instance ProblemConfiguration.ValidationSwitch.ValidationSwitchSet ProblemValidationSwitches where
areAllOff problemValidationSwitches = not $ any ($ problemValidationSwitches) [
getCheckAvailabilityOfAnyGroupMember,
getCheckCapacityOfLocationsForMeetings,
getCheckCoursesForSynchronousSpecifiedTimes,
getCheckDuplicateMeetingLocationIds,
getCheckDuplicateOwnLocationIds,
getCheckForAlternativesToSynchronisedCourses,
getCheckForDuplicateStudentIds,
getCheckForIdleStudents,
getCheckForIdleTeachers,
getCheckForInvalidMeetingTimes,
getCheckForMultipleCoursesPerTeacherPerSynchronisationId,
getCheckForNonExistentFacilities,
getCheckForNonExistentGroupIds,
getCheckForNonExistentMeetingLocationIds,
getCheckForNonExistentOwnLocationIds,
getCheckForOverloadedStudents,
getCheckForSingletonSynchronisedCourses,
getCheckForStudentsRequiringMultipleSynchronisedSubjects,
getCheckForStudentsWithUnrealisableFreePeriodPreference,
getCheckForSynchronisedCoursesWithDifferentIdealTimeslots,
getCheckForSynchronisedCoursesWithDifferentLessonsPerWeek,
getCheckForSynchronisedCoursesWithExcessLessonsPerWeek,
getCheckForSynchronisedCoursesWithExcessSpecifiedTimes,
getCheckForSynchronisedCoursesWithExcessTimeslotRequests,
getCheckForSynchronisedCoursesWithoutSuitableLocations,
getCheckForSynchronisedCoursesWithUnavailableSpecifiedDays,
getCheckForTeachersWithUnrealisableFreePeriodPreference,
getCheckIfStudentBodiesExceedTeachers,
getCheckIfStudentBodySizeExceedsCapacityOfAllLocations,
getCheckIfStudentBodySizeExceedsLocationCapacity,
getCheckIndependenceOfStudentTimeslotsRequestsAndMeetings,
getCheckIndependenceOfTeacherTimeslotsRequestsAndMeetings,
getCheckLocationsForSynchronousSpecifiedTimes,
getCheckMeetingLocationsAvailability,
getCheckMinimumConsecutiveLessons,
getCheckNullGroupId,
getCheckNullLocationCatalogue,
getCheckNullStudentBodyRegister,
getCheckNullTeacherRegister,
getCheckOwnLocationsAvailability,
getCheckRequiredLessonsPerWeek,
getCheckSimultaneousAvailabilityOfGroupMembers,
getCheckStudentsAvailabilityForMandatoryMeetings,
getCheckStudentsAvailabilityForSpecifiedTimes,
getCheckStudentsForMultipleLevelsOfSameTopic,
getCheckStudentsForSynchronousMeetings,
getCheckStudentsLowerWorkloadBound,
getCheckStudentsUpperWorkloadBound,
getCheckSubjectExistence,
getCheckSuitableLocationsForKnowledgeRequirements,
getCheckTeachersAvailabilityForMandatoryMeetings,
getCheckTeachersForSynchronousMeetings,
getCheckTeachersUpperWorkloadBound,
getCheckTeachingCapacityBySubject,
getCheckTimeslotIdBounds,
getCheckTimeslotRequests
]
instance Control.DeepSeq.NFData ProblemValidationSwitches where
rnf (MkProblemValidationSwitches x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38 x39 x40 x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 x51 x52 x53 x54 x55 x56) = Control.DeepSeq.rnf [
x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56
]