1 /* 2 File rules.h 3 */ 4 5 /*************************************************************************** 6 rules.h - description 7 ------------------- 8 begin : 2003 9 copyright : (C) 2003 by Lalescu Liviu 10 email : Please see https://lalescu.ro/liviu/ for details about contacting Liviu Lalescu (in particular, you can find here the e-mail address) 11 ***************************************************************************/ 12 13 /*************************************************************************** 14 * * 15 * This program is free software: you can redistribute it and/or modify * 16 * it under the terms of the GNU Affero General Public License as * 17 * published by the Free Software Foundation, either version 3 of the * 18 * License, or (at your option) any later version. * 19 * * 20 ***************************************************************************/ 21 22 #ifndef RULES_H 23 #define RULES_H 24 25 #include "timetable_defs.h" 26 #include "timeconstraint.h" 27 #include "spaceconstraint.h" 28 #include "activity.h" 29 #include "studentsset.h" 30 #include "teacher.h" 31 #include "subject.h" 32 #include "activitytag.h" 33 #include "room.h" 34 #include "building.h" 35 36 #include "matrix.h" 37 38 #include <QHash> 39 #include <QSet> 40 #include <QList> 41 #include <QStringList> 42 #include <QString> 43 44 #include <QCoreApplication> 45 46 class QXmlStreamReader; 47 48 class QWidget; 49 50 const int OFFICIAL=0; 51 const int MORNINGS_AFTERNOONS=1; 52 const int BLOCK_PLANNING=2; 53 const int TERMS=3; 54 55 class FakeString 56 /* 57 fake string, so that the output log is not too large 58 */ 59 { 60 public: 61 FakeString(); 62 63 void operator=(const QString& other); 64 void operator=(const char* str); 65 void operator+=(const QString& other); 66 void operator+=(const char* str); 67 }; 68 69 /** 70 This class contains all the information regarding 71 the institution: teachers, students, activities, constraints, etc. 72 */ 73 class Rules{ 74 Q_DECLARE_TR_FUNCTIONS(Rules) 75 76 public: 77 int mode; 78 79 bool modified; 80 81 /** 82 The name of the institution 83 */ 84 QString institutionName; 85 86 /** 87 The comments 88 */ 89 QString comments; 90 91 /** 92 The number of days per week 93 */ 94 int nDaysPerWeek; 95 96 /** 97 The number of hours per day 98 */ 99 int nHoursPerDay; 100 101 /** 102 The days of the week (names) 103 */ 104 //QString daysOfTheWeek[MAX_DAYS_PER_WEEK]; 105 QStringList daysOfTheWeek; 106 107 /** 108 The hours of the day (names). 109 */ 110 //QString hoursOfTheDay[MAX_HOURS_PER_DAY]; 111 QStringList hoursOfTheDay; 112 113 /** 114 The number of hours per week 115 */ 116 int nHoursPerWeek; 117 118 int nTerms; //for terms (Finland) mode 119 120 int nDaysPerTerm; //for terms (Finland) mode 121 122 /** 123 The list of teachers 124 */ 125 TeachersList teachersList; 126 127 /** 128 The list of subjects 129 */ 130 SubjectsList subjectsList; 131 132 /** 133 The list of activity tags 134 */ 135 ActivityTagsList activityTagsList; 136 137 /** 138 The list of students (groups and subgroups included). 139 Remember that every identifier (year, group or subgroup) must be UNIQUE. 140 */ 141 StudentsYearsList yearsList; 142 143 /** 144 The list of activities 145 */ 146 ActivitiesList activitiesList; 147 148 /** 149 The list of rooms 150 */ 151 RoomsList roomsList; 152 153 /** 154 The list of buildings 155 */ 156 BuildingsList buildingsList; 157 158 /** 159 The list of time constraints 160 */ 161 TimeConstraintsList timeConstraintsList; 162 163 /** 164 The list of space constraints 165 */ 166 SpaceConstraintsList spaceConstraintsList; 167 168 GroupActivitiesInInitialOrderList groupActivitiesInInitialOrderList; 169 170 //For faster operation 171 //not internal, but based on activity id / teacher name / students set name and constraints list 172 QHash<int, Activity*> activitiesPointerHash; //first is the id, second is the pointer to the activity in Rules::activitiesList 173 QSet<ConstraintBasicCompulsoryTime*> bctSet; 174 QSet<ConstraintBreakTimes*> btSet; 175 QSet<ConstraintBasicCompulsorySpace*> bcsSet; 176 QHash<int, QSet<ConstraintActivityPreferredStartingTime*>> apstHash; 177 QHash<int, QSet<ConstraintActivityPreferredRoom*>> aprHash; 178 QHash<int, QSet<ConstraintMinDaysBetweenActivities*>> mdbaHash; 179 QHash<QString, QSet<ConstraintTeacherNotAvailableTimes*>> tnatHash; 180 QHash<QString, QSet<ConstraintStudentsSetNotAvailableTimes*>> ssnatHash; 181 182 //not internal 183 QHash<QString, StudentsSet*> permanentStudentsHash; 184 185 //internal 186 QHash<QString, int> teachersHash; 187 QHash<QString, int> subjectsHash; 188 QHash<QString, int> activityTagsHash; 189 QHash<QString, StudentsSet*> studentsHash; 190 QHash<QString, int> buildingsHash; 191 QHash<QString, int> roomsHash; 192 QHash<int, int> activitiesHash; //first is id, second is index in internal list 193 //using activity index in internal activities 194 /*QHash<QString, QSet<int>> activitiesForTeacherHash; 195 QHash<QString, QSet<int>> activitiesForSubjectHash; 196 QHash<QString, QSet<int>> activitiesForActivityTagHash; 197 QHash<QString, QSet<int>> activitiesForStudentsSetHash;*/ 198 199 /* 200 The following variables contain redundant data and are used internally 201 */ 202 //////////////////////////////////////////////////////////////////////// 203 int nInternalTeachers; 204 Matrix1D<Teacher*> internalTeachersList; 205 206 int nInternalSubjects; 207 Matrix1D<Subject*> internalSubjectsList; 208 209 int nInternalActivityTags; 210 Matrix1D<ActivityTag*> internalActivityTagsList; 211 212 int nInternalSubgroups; 213 Matrix1D<StudentsSubgroup*> internalSubgroupsList; 214 215 StudentsGroupsList internalGroupsList; 216 217 StudentsYearsList augmentedYearsList; 218 219 /** 220 Here will be only the active activities. 221 222 For speed, I used here not pointers, but static copies. (old comment.) 223 */ 224 int nInternalActivities; 225 Matrix1D<Activity> internalActivitiesList; 226 227 QSet<int> inactiveActivities; 228 229 Matrix1D<QList<int>> activitiesForSubjectList; 230 Matrix1D<QSet<int>> activitiesForSubjectSet; 231 Matrix1D<QList<int>> activitiesForActivityTagList; 232 Matrix1D<QSet<int>> activitiesForActivityTagSet; 233 234 int nInternalRooms; 235 Matrix1D<Room*> internalRoomsList; 236 237 int nInternalBuildings; 238 Matrix1D<Building*> internalBuildingsList; 239 240 int nInternalTimeConstraints; 241 Matrix1D<TimeConstraint*> internalTimeConstraintsList; 242 243 int nInternalSpaceConstraints; 244 Matrix1D<SpaceConstraint*> internalSpaceConstraintsList; 245 246 /* 247 /////////////////////////////////////////////////////////////////////// 248 */ 249 250 /** 251 True if the rules have been initialized in some way (new or loaded). 252 */ 253 bool initialized; 254 255 /** 256 True if the internal structure was computed. 257 */ 258 bool internalStructureComputed; 259 260 /** 261 Initializes the rules (empty) 262 */ 263 void init(); 264 265 /** 266 Internal structure initializer. 267 <p> 268 After any modification of the activities or students or teachers 269 or constraints, you need to call this subroutine 270 */ 271 bool computeInternalStructure(QWidget* parent); 272 273 /** 274 Terminator - basically clears the memory for the constraints. 275 */ 276 void kill(); 277 278 Rules(); 279 280 ~Rules(); 281 282 void setMode(int newMode); 283 284 void setTerms(int numberOfTerms, int numberOfDaysPerTerm); 285 286 void setInstitutionName(const QString& newInstitutionName); 287 288 void setComments(const QString& newComments); 289 290 /** 291 Adds a new teacher 292 (if not already in the list). 293 Returns false/true (unsuccessful/successful). 294 */ 295 bool addTeacher(Teacher* teacher); 296 297 /*when reading rules, faster*/ 298 bool addTeacherFast(Teacher* teacher); 299 300 /** 301 Returns the index of this teacher in the teachersList, 302 or -1 for inexistent teacher. 303 */ 304 int searchTeacher(const QString& teacherName); 305 306 /** 307 Removes this teacher and all related activities and constraints. 308 It returns false on failure. If successful, returns true. 309 */ 310 bool removeTeacher(const QString& teacherName); 311 312 /** 313 Modifies (renames) this teacher and takes care of all related activities and constraints. 314 Returns true on success, false on failure (if not found) 315 */ 316 bool modifyTeacher(const QString& initialTeacherName, const QString& finalTeacherName); 317 318 /** 319 A function to sort the teachers alphabetically 320 */ 321 void sortTeachersAlphabetically(); 322 323 /** 324 Adds a new subject 325 (if not already in the list). 326 Returns false/true (unsuccessful/successful). 327 */ 328 bool addSubject(Subject* subject); 329 330 /* 331 When reading rules, faster 332 */ 333 bool addSubjectFast(Subject* subject); 334 335 /** 336 Returns the index of this subject in the subjectsList, 337 or -1 if not found. 338 */ 339 int searchSubject(const QString& subjectName); 340 341 /** 342 Removes this subject and all related activities and constraints. 343 It returns false on failure. 344 If successful, returns true. 345 */ 346 bool removeSubject(const QString& subjectName); 347 348 /** 349 Modifies (renames) this subject and takes care of all related activities and constraints. 350 Returns true on success, false on failure (if not found) 351 */ 352 bool modifySubject(const QString& initialSubjectName, const QString& finalSubjectName); 353 354 /** 355 A function to sort the subjects alphabetically 356 */ 357 void sortSubjectsAlphabetically(); 358 359 /** 360 Adds a new activity tag to the list of activity tags 361 (if not already in the list). 362 Returns false/true (unsuccessful/successful). 363 */ 364 bool addActivityTag(ActivityTag* activityTag); 365 366 /* 367 When reading rules, faster 368 */ 369 bool addActivityTagFast(ActivityTag* activityTag); 370 371 /** 372 Returns the index of this activity tag in the activityTagsList, 373 or -1 if not found. 374 */ 375 int searchActivityTag(const QString& activityTagName); 376 377 /** 378 Removes this activity tag. In the list of activities, the activity tag will 379 be removed from all activities which posess it. 380 It returns false on failure. 381 If successful, returns true. 382 */ 383 bool removeActivityTag(const QString& activityTagName); 384 385 /** 386 Modifies (renames) this activity tag and takes care of all related activities. 387 Returns true on success, false on failure (if not found) 388 */ 389 bool modifyActivityTag(const QString& initialActivityTagName, const QString& finalActivityTagName); 390 391 /** 392 A function to sort the activity tags alphabetically 393 */ 394 void sortActivityTagsAlphabetically(); 395 396 void computePermanentStudentsHash(); 397 398 /** 399 Returns a pointer to the structure containing this student set 400 (year, group or subgroup) or nullptr. 401 */ 402 StudentsSet* searchStudentsSet(const QString& setName); 403 404 StudentsSet* searchAugmentedStudentsSet(const QString& setName); 405 406 /** 407 True if the students sets contain one common subgroup. 408 This function is used in constraints isRelatedToStudentsSet 409 */ 410 bool setsShareStudents(const QString& studentsSet1, const QString& studentsSet2); 411 412 //Internal 413 bool augmentedSetsShareStudentsFaster(const QString& studentsSet1, const QString& studentsSet2); 414 415 /** 416 Adds a new year of study to the academic structure 417 */ 418 bool addYear(StudentsYear* year); 419 420 /* 421 When reading rules, faster 422 */ 423 bool addYearFast(StudentsYear* year); 424 425 // bool emptyYear(const QString& yearName); 426 bool removeYear(const QString& yearName); 427 // bool removeYear(const QString& yearName, bool removeAlsoThisYear); 428 429 bool removeYearPointerAfterSplit(StudentsYear* yearPointer); 430 431 /** 432 Returns -1 if not found or the index of this year in the years list 433 */ 434 int searchYear(const QString& yearName); 435 436 int searchAugmentedYear(const QString& yearName); 437 438 /** 439 Modifies this students set (name, number of students) and takes care of all related 440 activities and constraints. Returns true on success, false on failure (if not found) 441 */ 442 bool modifyStudentsSet(const QString& initialStudentsSetName, const QString& finalStudentsSetName, int finalNumberOfStudents); 443 444 bool modifyStudentsSets(const QHash<QString, QString>& oldAndNewStudentsSetNames); 445 446 /** 447 A function to sort the years alphabetically 448 */ 449 void sortYearsAlphabetically(); 450 451 /** 452 Adds a new group in a certain year of study to the academic structure 453 */ 454 bool addGroup(const QString& yearName, StudentsGroup* group); 455 456 /* 457 When reading rules, faster 458 */ 459 bool addGroupFast(StudentsYear* year, StudentsGroup* group); 460 461 bool removeGroup(const QString& yearName, const QString& groupName); 462 463 //Remove this group from all the years in which it exists 464 bool purgeGroup(const QString& groupName); 465 466 /** 467 Returns -1 if not found or the index of this group in the groups list 468 of this year. 469 */ 470 int searchGroup(const QString& yearName, const QString& groupName); 471 472 int searchAugmentedGroup(const QString& yearName, const QString& groupName); 473 474 /** 475 A function to sort the groups of this year alphabetically 476 */ 477 void sortGroupsAlphabetically(const QString& yearName); 478 479 /** 480 Adds a new subgroup to a certain group in a certain year of study to 481 the academic structure 482 */ 483 bool addSubgroup(const QString& yearName, const QString& groupName, StudentsSubgroup* subgroup); 484 485 /* 486 When reading rules, faster 487 */ 488 bool addSubgroupFast(StudentsYear* year, StudentsGroup* group, StudentsSubgroup* subgroup); 489 490 bool removeSubgroup(const QString& yearName, const QString& groupName, const QString& subgroupName); 491 492 //Remove this subgroup from all the groups in which it exists 493 bool purgeSubgroup(const QString& subgroupName); 494 495 /** 496 Returns -1 if not found or the index of the subgroup in the list of subgroups of this group 497 */ 498 int searchSubgroup(const QString& yearName, const QString& groupName, const QString& subgroupName); 499 500 int searchAugmentedSubgroup(const QString& yearName, const QString& groupName, const QString& subgroupName); 501 502 /** 503 A function to sort the subgroups of this group alphabetically 504 */ 505 void sortSubgroupsAlphabetically(const QString& yearName, const QString& groupName); 506 507 /** 508 Adds a new indivisible activity (not split) to the list of activities. 509 (It can add a subactivity of a split activity) 510 Returns true if successful or false if the maximum 511 number of activities was reached. 512 */ 513 /*bool addSimpleActivity( 514 QWidget* parent, 515 int _id, 516 int _activityGroupId, 517 const QStringList& _teachersNames, 518 const QString& _subjectName, 519 const QStringList& _activityTagsNames, 520 const QStringList& _studentsNames, 521 int _duration, 522 int _totalDuration, 523 bool _active, 524 bool _computeNTotalStudents, 525 int _nTotalStudents);*/ 526 527 /* 528 Faster (no need to recompute the number of students in activity constructor) 529 */ 530 bool addSimpleActivityFast( 531 QWidget* parent, 532 int _id, 533 int _activityGroupId, 534 const QStringList& _teachersNames, 535 const QString& _subjectName, 536 const QStringList& _activityTagsNames, 537 const QStringList& _studentsNames, 538 int _duration, 539 int _totalDuration, 540 bool _active, 541 bool _computeNTotalStudents, 542 int _nTotalStudents, 543 int _computedNumberOfStudents); 544 545 /** 546 Adds a new split activity to the list of activities. 547 Returns true if successful or false if the maximum 548 number of activities was reached. 549 If _minDayDistance>0, there will automatically added a compulsory 550 ConstraintMinDaysBetweenActivities. 551 */ 552 /*bool addSplitActivity( 553 QWidget* parent, 554 int _firstActivityId, 555 int _activityGroupId, 556 const QStringList& _teachersNames, 557 const QString& _subjectName, 558 const QStringList& _activityTagsNames, 559 const QStringList& _studentsNames, 560 int _nSplits, 561 int _totalDuration, 562 int _durations[], 563 bool _active[], 564 int _minDayDistance, 565 double _weightPercentage, 566 bool _consecutiveIfSameDay, 567 bool _computeNTotalStudents, 568 int _nTotalStudents);*/ 569 570 bool addSplitActivityFast( 571 QWidget* parent, 572 int _firstActivityId, 573 int _activityGroupId, 574 const QStringList& _teachersNames, 575 const QString& _subjectName, 576 const QStringList& _activityTagsNames, 577 const QStringList& _studentsNames, 578 int _nSplits, 579 int _totalDuration, 580 QList<int> _durations, 581 QList<bool> _active, 582 int _minDayDistance, 583 double _weightPercentage, 584 bool _consecutiveIfSameDay, 585 bool _computeNTotalStudents, 586 int _nTotalStudents, 587 int _computedNumberOfStudents); 588 589 /** 590 Removes only the activity with this id. 591 */ 592 //void removeActivity(int _id); 593 594 /** 595 If _activityGroupId==0, then this is a non-split activity 596 (if >0, then this is a single sub-activity from a split activity. 597 Removes this activity from the list of activities. 598 For split activities, it removes all the sub-activities that are contained in it. 599 */ 600 void removeActivity(int _id, int _activityGroupId); 601 602 void removeActivities(const QList<int>& _idsList, bool updateConstraints); 603 604 /** 605 A function to modify the information of a certain activity. 606 If this is a sub-activity of a split activity, 607 all the sub-activities will be modified. 608 */ 609 void modifyActivity( 610 int _id, 611 int _activityGroupId, 612 const QStringList& _teachersNames, 613 const QString& _subjectName, 614 const QStringList& _activityTagsNames, 615 const QStringList& _studentsNames, 616 int _nSplits, 617 int _totalDuration, 618 QList<int> _durations, 619 QList<bool> _active, 620 bool _computeNTotalStudents, 621 int _nTotalStudents); 622 623 void modifySubactivity( 624 int _id, 625 int _activityGroupId, 626 const QStringList& _teachersNames, 627 const QString& _subjectName, 628 const QStringList& _activityTagsNames, 629 const QStringList& _studentsNames, 630 int _duration, 631 bool _active, 632 bool _computeNTotalStudents, 633 int _nTotalStudents); 634 635 /** 636 Adds a new room (already allocated). 637 Returns true on success, false for already existing rooms (same name). 638 */ 639 bool addRoom(Room* rm); 640 641 /* 642 Faster, when reading 643 */ 644 bool addRoomFast(Room* rm); 645 646 /** 647 Returns -1 if not found or the index in the rooms list if found. 648 */ 649 int searchRoom(const QString& roomName); 650 651 /** 652 Removes the room with this name. 653 Returns true on success, false on failure (not found). 654 */ 655 bool removeRoom(const QString& roomName); 656 657 /** 658 Modifies this room and takes care of all related constraints. 659 Returns true on success, false on failure (if not found) 660 */ 661 bool modifyRoom(const QString& initialRoomName, const QString& finalRoomName, const QString& building, int capacity); 662 663 /** 664 A function to sort the room alphabetically, by name 665 */ 666 void sortRoomsAlphabetically(); 667 668 /** 669 Adds a new building (already allocated). 670 Returns true on success, false for already existing buildings (same name). 671 */ 672 bool addBuilding(Building* rm); 673 674 /* 675 Faster, when reading 676 */ 677 bool addBuildingFast(Building* rm); 678 679 /** 680 Returns -1 if not found or the index in the buildings list if found. 681 */ 682 int searchBuilding(const QString& buildingName); 683 684 /** 685 Removes the building with this name. 686 Returns true on success, false on failure (not found). 687 */ 688 bool removeBuilding(const QString& buildingName); 689 690 /** 691 Modifies this building and takes care of all related constraints. 692 Returns true on success, false on failure (if not found) 693 */ 694 bool modifyBuilding(const QString& initialBuildingName, const QString& finalBuildingName); 695 696 /** 697 A function to sort the buildings alphabetically, by name 698 */ 699 void sortBuildingsAlphabetically(); 700 701 /** 702 Adds a new time constraint (already allocated). 703 Returns true on success, false for already existing constraints. 704 */ 705 bool addTimeConstraint(TimeConstraint* ctr); 706 707 /** 708 Removes this time constraint. 709 Returns true on success, false on failure (not found). 710 */ 711 bool removeTimeConstraint(TimeConstraint* ctr); 712 713 /** 714 Adds a new space constraint (already allocated). 715 Returns true on success, false for already existing constraints. 716 */ 717 bool addSpaceConstraint(SpaceConstraint* ctr); 718 719 /** 720 Removes this space constraint. 721 Returns true on success, false on failure (not found). 722 */ 723 bool removeSpaceConstraint(SpaceConstraint* ctr); 724 725 bool removeTimeConstraints(QList<TimeConstraint*> _tcl); 726 bool removeSpaceConstraints(QList<SpaceConstraint*> _scl); 727 728 int xmlReaderNumberOfUnrecognizedFields; 729 730 QList<QString> unrecognizedXmlTags; 731 QList<int> unrecognizedXmlLineNumbers; 732 QList<int> unrecognizedXmlColumnNumbers; 733 734 /** 735 Reads the rules from the xml input file "filename". 736 Returns true on success, false on failure (inexistent file or wrong format) 737 */ 738 bool read(QWidget* parent, const QString& fileName, bool commandLine=false, QString commandLineDirectory=QString()); 739 740 /** 741 Write the rules to the xml input file "inputfile". 742 */ 743 bool write(QWidget* parent, const QString& filename); 744 745 int activateTeacher(const QString& teacherName); 746 747 int activateStudents(const QString& studentsName); 748 749 int activateSubject(const QString& subjectName); 750 751 int activateActivityTag(const QString& activityTagName); 752 753 int deactivateTeacher(const QString& teacherName); 754 755 int deactivateStudents(const QString& studentsName); 756 757 int deactivateSubject(const QString& subjectName); 758 759 int deactivateActivityTag(const QString& activityTagName); 760 761 void makeActivityTagPrintable(const QString& activityTagName); 762 void makeActivityTagNotPrintable(const QString& activityTagName); 763 764 void updateActivitiesWhenRemovingStudents(const QSet<StudentsSet*>& studentsSets, bool updateConstraints); 765 void updateGroupActivitiesInInitialOrderAfterRemoval(); 766 void updateConstraintsAfterRemoval(); 767 768 private: 769 TimeConstraint* readBasicCompulsoryTime(QXmlStreamReader& xml, FakeString& xmlReadingLog); 770 TimeConstraint* readTeacherNotAvailable(QXmlStreamReader& xml, FakeString& xmlReadingLog); 771 TimeConstraint* readTeacherNotAvailableTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 772 TimeConstraint* readTeacherMaxDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 773 774 TimeConstraint* readTeacherMaxThreeConsecutiveDays(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 775 TimeConstraint* readTeachersMaxThreeConsecutiveDays(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 776 777 TimeConstraint* readTeachersMaxDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 778 779 TimeConstraint* readTeacherMinDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 780 TimeConstraint* readTeachersMinDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 781 782 TimeConstraint* readTeacherIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 783 TimeConstraint* readTeachersIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 784 TimeConstraint* readStudentsSetMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 785 TimeConstraint* readStudentsMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 786 TimeConstraint* readStudentsSetIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 787 TimeConstraint* readStudentsIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 788 TimeConstraint* readStudentsSetNotAvailable(QXmlStreamReader& xml, FakeString& xmlReadingLog); 789 TimeConstraint* readStudentsSetNotAvailableTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 790 TimeConstraint* readMinNDaysBetweenActivities(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 791 TimeConstraint* readMinDaysBetweenActivities(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 792 TimeConstraint* readMaxDaysBetweenActivities(QXmlStreamReader& xml, FakeString& xmlReadingLog); 793 TimeConstraint* readMinGapsBetweenActivities(QXmlStreamReader& xml, FakeString& xmlReadingLog); 794 TimeConstraint* readMaxGapsBetweenActivities(QXmlStreamReader& xml, FakeString& xmlReadingLog); 795 TimeConstraint* readActivitiesNotOverlapping(QXmlStreamReader& xml, FakeString& xmlReadingLog); 796 TimeConstraint* readActivityTagsNotOverlapping(QXmlStreamReader& xml, FakeString& xmlReadingLog); 797 TimeConstraint* readActivitiesSameStartingTime(QXmlStreamReader& xml, FakeString& xmlReadingLog); 798 TimeConstraint* readActivitiesSameStartingHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 799 TimeConstraint* readActivitiesSameStartingDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 800 TimeConstraint* readTeachersMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 801 TimeConstraint* readTeacherMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 802 TimeConstraint* readTeachersMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 803 TimeConstraint* readTeacherMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 804 TimeConstraint* readTeacherActivityTagMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 805 TimeConstraint* readTeachersActivityTagMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 806 807 TimeConstraint* readTeacherActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 808 TimeConstraint* readTeachersActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 809 810 TimeConstraint* readTeacherActivityTagMinHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 811 TimeConstraint* readTeachersActivityTagMinHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 812 813 TimeConstraint* readTeachersMinHoursDaily(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 814 TimeConstraint* readTeacherMinHoursDaily(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 815 TimeConstraint* readStudentsMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 816 TimeConstraint* readStudentsSetMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 817 TimeConstraint* readStudentsMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 818 TimeConstraint* readStudentsSetMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 819 TimeConstraint* readStudentsSetActivityTagMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 820 TimeConstraint* readStudentsActivityTagMaxHoursContinuously(QXmlStreamReader& xml, FakeString& xmlReadingLog); 821 822 TimeConstraint* readStudentsSetActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 823 TimeConstraint* readStudentsActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 824 825 TimeConstraint* readStudentsSetActivityTagMinHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 826 TimeConstraint* readStudentsActivityTagMinHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 827 828 TimeConstraint* readStudentsMinHoursDaily(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 829 TimeConstraint* readStudentsSetMinHoursDaily(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 830 831 TimeConstraint* readStudentsSetMinGapsBetweenOrderedPairOfActivityTags(QXmlStreamReader& xml, FakeString& xmlReadingLog); 832 TimeConstraint* readStudentsMinGapsBetweenOrderedPairOfActivityTags(QXmlStreamReader& xml, FakeString& xmlReadingLog); 833 TimeConstraint* readTeacherMinGapsBetweenOrderedPairOfActivityTags(QXmlStreamReader& xml, FakeString& xmlReadingLog); 834 TimeConstraint* readTeachersMinGapsBetweenOrderedPairOfActivityTags(QXmlStreamReader& xml, FakeString& xmlReadingLog); 835 836 TimeConstraint* readActivityPreferredTime(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog, 837 bool& reportUnspecifiedPermanentlyLockedTime, bool& reportUnspecifiedDayOrHourPreferredStartingTime); 838 TimeConstraint* readActivityPreferredStartingTime(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog, 839 bool& reportUnspecifiedPermanentlyLockedTime, bool& reportUnspecifiedDayOrHourPreferredStartingTime); 840 841 TimeConstraint* readActivityEndsStudentsDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 842 TimeConstraint* readActivitiesEndStudentsDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 843 844 TimeConstraint* readActivityEndsTeachersDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 845 TimeConstraint* readActivitiesEndTeachersDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 846 847 /*old, with 2 and 3*/ 848 TimeConstraint* read2ActivitiesConsecutive(QXmlStreamReader& xml, FakeString& xmlReadingLog); 849 TimeConstraint* read2ActivitiesGrouped(QXmlStreamReader& xml, FakeString& xmlReadingLog); 850 TimeConstraint* read3ActivitiesGrouped(QXmlStreamReader& xml, FakeString& xmlReadingLog); 851 TimeConstraint* read2ActivitiesOrdered(QXmlStreamReader& xml, FakeString& xmlReadingLog); 852 /*end old*/ 853 854 TimeConstraint* readTwoActivitiesConsecutive(QXmlStreamReader& xml, FakeString& xmlReadingLog); 855 TimeConstraint* readTwoActivitiesGrouped(QXmlStreamReader& xml, FakeString& xmlReadingLog); 856 TimeConstraint* readThreeActivitiesGrouped(QXmlStreamReader& xml, FakeString& xmlReadingLog); 857 TimeConstraint* readTwoActivitiesOrdered(QXmlStreamReader& xml, FakeString& xmlReadingLog); 858 TimeConstraint* readTwoSetsOfActivitiesOrdered(QXmlStreamReader& xml, FakeString& xmlReadingLog); 859 TimeConstraint* readTwoActivitiesOrderedIfSameDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 860 861 TimeConstraint* readActivityPreferredTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 862 TimeConstraint* readActivityPreferredTimeSlots(QXmlStreamReader& xml, FakeString& xmlReadingLog); 863 TimeConstraint* readActivityPreferredStartingTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 864 865 TimeConstraint* readBreak(QXmlStreamReader& xml, FakeString& xmlReadingLog); 866 TimeConstraint* readBreakTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 867 868 TimeConstraint* readTeachersNoGaps(QXmlStreamReader& xml, FakeString& xmlReadingLog); 869 TimeConstraint* readTeachersMaxGapsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 870 TimeConstraint* readTeacherMaxGapsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 871 TimeConstraint* readTeachersMaxGapsPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 872 TimeConstraint* readTeacherMaxGapsPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 873 874 TimeConstraint* readTeachersMaxGapsPerMorningAndAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 875 TimeConstraint* readTeacherMaxGapsPerMorningAndAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 876 877 TimeConstraint* readStudentsNoGaps(QXmlStreamReader& xml, FakeString& xmlReadingLog); 878 TimeConstraint* readStudentsSetNoGaps(QXmlStreamReader& xml, FakeString& xmlReadingLog); 879 TimeConstraint* readStudentsMaxGapsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 880 TimeConstraint* readStudentsSetMaxGapsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 881 882 TimeConstraint* readStudentsMaxGapsPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 883 TimeConstraint* readStudentsSetMaxGapsPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 884 885 TimeConstraint* readStudentsEarly(QXmlStreamReader& xml, FakeString& xmlReadingLog); 886 TimeConstraint* readStudentsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 887 TimeConstraint* readStudentsSetEarly(QXmlStreamReader& xml, FakeString& xmlReadingLog); 888 TimeConstraint* readStudentsSetEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 889 890 TimeConstraint* readActivitiesPreferredTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 891 TimeConstraint* readActivitiesPreferredTimeSlots(QXmlStreamReader& xml, FakeString& xmlReadingLog); 892 TimeConstraint* readActivitiesPreferredStartingTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 893 894 TimeConstraint* readSubactivitiesPreferredTimeSlots(QXmlStreamReader& xml, FakeString& xmlReadingLog); 895 TimeConstraint* readSubactivitiesPreferredStartingTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 896 897 TimeConstraint* readActivitiesOccupyMaxTimeSlotsFromSelection(QXmlStreamReader& xml, FakeString& xmlReadingLog); 898 TimeConstraint* readActivitiesOccupyMinTimeSlotsFromSelection(QXmlStreamReader& xml, FakeString& xmlReadingLog); 899 TimeConstraint* readActivitiesMaxSimultaneousInSelectedTimeSlots(QXmlStreamReader& xml, FakeString& xmlReadingLog); 900 TimeConstraint* readActivitiesMinSimultaneousInSelectedTimeSlots(QXmlStreamReader& xml, FakeString& xmlReadingLog); 901 902 TimeConstraint* readMaxTotalActivitiesFromSetInSelectedTimeSlots(QXmlStreamReader& xml, FakeString& xmlReadingLog); 903 904 TimeConstraint* readActivitiesMaxInATerm(QXmlStreamReader& xml, FakeString& xmlReadingLog); 905 TimeConstraint* readActivitiesOccupyMaxTerms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 906 907 TimeConstraint* readTeacherMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 908 TimeConstraint* readTeachersMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 909 TimeConstraint* readStudentsSetMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 910 TimeConstraint* readStudentsMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 911 912 TimeConstraint* readTeacherMinRestingHours(QXmlStreamReader& xml, FakeString& xmlReadingLog); 913 TimeConstraint* readTeachersMinRestingHours(QXmlStreamReader& xml, FakeString& xmlReadingLog); 914 TimeConstraint* readStudentsSetMinRestingHours(QXmlStreamReader& xml, FakeString& xmlReadingLog); 915 TimeConstraint* readStudentsMinRestingHours(QXmlStreamReader& xml, FakeString& xmlReadingLog); 916 917 //For mornings-afternoons 918 TimeConstraint* readTeacherMaxRealDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 919 TimeConstraint* readTeachersMaxRealDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 920 921 TimeConstraint* readTeacherMaxAfternoonsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 922 TimeConstraint* readTeachersMaxAfternoonsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 923 TimeConstraint* readTeacherMaxMorningsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 924 TimeConstraint* readTeachersMaxMorningsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 925 926 TimeConstraint* readTeacherMaxTwoConsecutiveMornings(QXmlStreamReader& xml, FakeString& xmlReadingLog); 927 TimeConstraint* readTeachersMaxTwoConsecutiveMornings(QXmlStreamReader& xml, FakeString& xmlReadingLog); 928 TimeConstraint* readTeacherMaxTwoConsecutiveAfternoons(QXmlStreamReader& xml, FakeString& xmlReadingLog); 929 TimeConstraint* readTeachersMaxTwoConsecutiveAfternoons(QXmlStreamReader& xml, FakeString& xmlReadingLog); 930 931 TimeConstraint* readTeacherMaxTwoActivityTagsPerDayFromN1N2N3(QXmlStreamReader& xml, FakeString& xmlReadingLog); 932 TimeConstraint* readTeachersMaxTwoActivityTagsPerDayFromN1N2N3(QXmlStreamReader& xml, FakeString& xmlReadingLog); 933 934 TimeConstraint* readTeacherMinRealDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 935 TimeConstraint* readTeachersMinRealDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 936 937 TimeConstraint* readTeacherMinMorningsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 938 TimeConstraint* readTeachersMinMorningsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 939 TimeConstraint* readTeacherMinAfternoonsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 940 TimeConstraint* readTeachersMinAfternoonsPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 941 942 TimeConstraint* readTeacherMorningIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 943 TimeConstraint* readTeachersMorningIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 944 945 TimeConstraint* readTeacherAfternoonIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 946 TimeConstraint* readTeachersAfternoonIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 947 948 TimeConstraint* readStudentsSetMaxRealDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 949 TimeConstraint* readStudentsMaxRealDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 950 951 TimeConstraint* readStudentsSetMaxAfternoonsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 952 TimeConstraint* readStudentsMaxAfternoonsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 953 TimeConstraint* readStudentsSetMaxMorningsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 954 TimeConstraint* readStudentsMaxMorningsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 955 956 TimeConstraint* readStudentsSetMinAfternoonsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 957 TimeConstraint* readStudentsMinAfternoonsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 958 TimeConstraint* readStudentsSetMinMorningsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 959 TimeConstraint* readStudentsMinMorningsPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 960 961 TimeConstraint* readStudentsSetMorningIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 962 TimeConstraint* readStudentsMorningIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 963 TimeConstraint* readStudentsSetAfternoonIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 964 TimeConstraint* readStudentsAfternoonIntervalMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 965 966 TimeConstraint* readTeachersMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 967 TimeConstraint* readTeacherMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 968 969 TimeConstraint* readTeacherActivityTagMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 970 TimeConstraint* readTeachersActivityTagMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 971 972 TimeConstraint* readTeacherMaxHoursPerAllAfternoons(QXmlStreamReader& xml, FakeString& xmlReadingLog); 973 TimeConstraint* readTeachersMaxHoursPerAllAfternoons(QXmlStreamReader& xml, FakeString& xmlReadingLog); 974 975 TimeConstraint* readStudentsSetMaxHoursPerAllAfternoons(QXmlStreamReader& xml, FakeString& xmlReadingLog); 976 TimeConstraint* readStudentsMaxHoursPerAllAfternoons(QXmlStreamReader& xml, FakeString& xmlReadingLog); 977 978 TimeConstraint* readTeachersMinHoursPerMorning(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 979 TimeConstraint* readTeacherMinHoursPerMorning(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 980 981 TimeConstraint* readTeachersMinHoursDailyRealDays(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 982 TimeConstraint* readTeacherMinHoursDailyRealDays(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 983 984 TimeConstraint* readStudentsMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 985 TimeConstraint* readStudentsSetMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 986 987 TimeConstraint* readStudentsSetActivityTagMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 988 TimeConstraint* readStudentsActivityTagMaxHoursDailyRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 989 990 TimeConstraint* readStudentsMinHoursPerMorning(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 991 TimeConstraint* readStudentsSetMinHoursPerMorning(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 992 993 TimeConstraint* readTeacherMaxZeroGapsPerAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 994 TimeConstraint* readTeachersMaxZeroGapsPerAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 995 996 TimeConstraint* readTeachersMaxGapsPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 997 TimeConstraint* readTeacherMaxGapsPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 998 999 TimeConstraint* readStudentsMaxGapsPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1000 TimeConstraint* readStudentsSetMaxGapsPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1001 1002 TimeConstraint* readTeachersMaxGapsPerWeekForRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1003 TimeConstraint* readTeacherMaxGapsPerWeekForRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1004 TimeConstraint* readStudentsMaxGapsPerWeekForRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1005 TimeConstraint* readStudentsSetMaxGapsPerWeekForRealDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1006 1007 TimeConstraint* readStudentsAfternoonsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1008 TimeConstraint* readStudentsSetAfternoonsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1009 1010 TimeConstraint* readTeachersAfternoonsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1011 TimeConstraint* readTeacherAfternoonsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1012 1013 TimeConstraint* readStudentsMorningsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1014 TimeConstraint* readStudentsSetMorningsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1015 1016 TimeConstraint* readTeachersMorningsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1017 TimeConstraint* readTeacherMorningsEarlyMaxBeginningsAtSecondHour(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1018 1019 TimeConstraint* readTeacherMaxSpanPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1020 TimeConstraint* readTeachersMaxSpanPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1021 TimeConstraint* readStudentsSetMaxSpanPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1022 TimeConstraint* readStudentsMaxSpanPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1023 1024 TimeConstraint* readTeacherMinRestingHoursBetweenMorningAndAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1025 TimeConstraint* readTeachersMinRestingHoursBetweenMorningAndAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1026 TimeConstraint* readStudentsSetMinRestingHoursBetweenMorningAndAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1027 TimeConstraint* readStudentsMinRestingHoursBetweenMorningAndAfternoon(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1028 1029 TimeConstraint* readOldMATeacherMaxDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1030 TimeConstraint* readOldMATeachersMaxDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1031 TimeConstraint* readOldMATeacherMinDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1032 TimeConstraint* readOldMATeachersMinDaysPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1033 TimeConstraint* readOldMAStudentsSetMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 1034 TimeConstraint* readOldMAStudentsMaxDaysPerWeek(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog); 1035 TimeConstraint* readOldMATeachersMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1036 TimeConstraint* readOldMATeacherMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1037 TimeConstraint* readOldMATeachersMaxHoursDailyHalfDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1038 TimeConstraint* readOldMATeacherMaxHoursDailyHalfDays(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1039 TimeConstraint* readOldMATeacherActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1040 TimeConstraint* readOldMATeachersActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1041 TimeConstraint* readOldMAStudentsMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1042 TimeConstraint* readOldMAStudentsSetMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1043 TimeConstraint* readOldMAStudentsSetActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1044 TimeConstraint* readOldMAStudentsActivityTagMaxHoursDaily(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1045 TimeConstraint* readOldMATeacherMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1046 TimeConstraint* readOldMATeachersMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1047 TimeConstraint* readOldMAStudentsSetMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1048 TimeConstraint* readOldMAStudentsMaxSpanPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1049 1050 // 1051 SpaceConstraint* readBasicCompulsorySpace(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1052 SpaceConstraint* readRoomNotAvailable(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1053 SpaceConstraint* readRoomNotAvailableTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1054 1055 SpaceConstraint* readTeacherRoomNotAvailableTimes(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1056 1057 SpaceConstraint* readActivityPreferredRoom(QWidget* parent, QXmlStreamReader& xml, FakeString& xmlReadingLog, 1058 bool& reportUnspecifiedPermanentlyLockedSpace); 1059 SpaceConstraint* readActivityPreferredRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1060 SpaceConstraint* readSubjectPreferredRoom(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1061 SpaceConstraint* readSubjectPreferredRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1062 SpaceConstraint* readSubjectSubjectTagPreferredRoom(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1063 SpaceConstraint* readSubjectSubjectTagPreferredRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1064 SpaceConstraint* readSubjectActivityTagPreferredRoom(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1065 SpaceConstraint* readSubjectActivityTagPreferredRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1066 SpaceConstraint* readActivityTagPreferredRoom(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1067 SpaceConstraint* readActivityTagPreferredRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1068 1069 SpaceConstraint* readStudentsSetHomeRoom(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1070 SpaceConstraint* readStudentsSetHomeRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1071 SpaceConstraint* readTeacherHomeRoom(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1072 SpaceConstraint* readTeacherHomeRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1073 1074 SpaceConstraint* readTeacherMaxBuildingChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1075 SpaceConstraint* readTeachersMaxBuildingChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1076 SpaceConstraint* readTeacherMaxBuildingChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1077 SpaceConstraint* readTeachersMaxBuildingChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1078 SpaceConstraint* readTeacherMinGapsBetweenBuildingChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1079 SpaceConstraint* readTeachersMinGapsBetweenBuildingChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1080 1081 SpaceConstraint* readStudentsSetMaxBuildingChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1082 SpaceConstraint* readStudentsMaxBuildingChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1083 SpaceConstraint* readStudentsSetMaxBuildingChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1084 SpaceConstraint* readStudentsMaxBuildingChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1085 SpaceConstraint* readStudentsSetMinGapsBetweenBuildingChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1086 SpaceConstraint* readStudentsMinGapsBetweenBuildingChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1087 1088 SpaceConstraint* readTeacherMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1089 SpaceConstraint* readTeachersMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1090 SpaceConstraint* readTeacherMaxRoomChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1091 SpaceConstraint* readTeachersMaxRoomChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1092 SpaceConstraint* readTeacherMinGapsBetweenRoomChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1093 SpaceConstraint* readTeachersMinGapsBetweenRoomChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1094 1095 SpaceConstraint* readStudentsSetMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1096 SpaceConstraint* readStudentsMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1097 SpaceConstraint* readStudentsSetMaxRoomChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1098 SpaceConstraint* readStudentsMaxRoomChangesPerWeek(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1099 SpaceConstraint* readStudentsSetMinGapsBetweenRoomChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1100 SpaceConstraint* readStudentsMinGapsBetweenRoomChanges(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1101 1102 SpaceConstraint* readActivitiesOccupyMaxDifferentRooms(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1103 SpaceConstraint* readActivitiesSameRoomIfConsecutive(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1104 1105 //For mornings-afternoons 1106 SpaceConstraint* readTeacherMaxRoomChangesPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1107 SpaceConstraint* readTeachersMaxRoomChangesPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1108 SpaceConstraint* readStudentsSetMaxRoomChangesPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1109 SpaceConstraint* readStudentsMaxRoomChangesPerRealDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1110 1111 SpaceConstraint* readOldMATeacherMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1112 SpaceConstraint* readOldMATeachersMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1113 SpaceConstraint* readOldMAStudentsSetMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1114 SpaceConstraint* readOldMAStudentsMaxRoomChangesPerDay(QXmlStreamReader& xml, FakeString& xmlReadingLog); 1115 }; 1116 1117 #endif 1118