Back to index

fet  5.18.0
rules.h
Go to the documentation of this file.
00001 /*
00002 File rules.h
00003 
00004 Copyright 2002-2003 Lalescu Liviu.
00005 
00006 This file is part of FET.
00007 
00008 FET is free software; you can redistribute it and/or modify
00009 it under the terms of the GNU General Public License as published by
00010 the Free Software Foundation; either version 2 of the License, or
00011 (at your option) any later version.
00012 
00013 FET is distributed in the hope that it will be useful,
00014 but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 GNU General Public License for more details.
00017 
00018 You should have received a copy of the GNU General Public License
00019 along with FET; if not, write to the Free Software
00020 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021 */
00022 
00023 #ifndef RULES_H
00024 #define RULES_H
00025 
00026 #include "timetable_defs.h"
00027 #include "timeconstraint.h"
00028 #include "spaceconstraint.h"
00029 #include "activity.h"
00030 #include "studentsset.h"
00031 #include "teacher.h"
00032 #include "subject.h"
00033 #include "activitytag.h"
00034 #include "room.h"
00035 #include "building.h"
00036 
00037 #include "matrix.h"
00038 
00039 #include <QSet>
00040 #include <QList>
00041 
00042 #include <QString>
00043 
00044 #include <QCoreApplication>
00045 
00046 class QWidget;
00047 
00048 class FakeString
00049 /*
00050 fake string, so that the output log is not too large
00051 */
00052 {
00053 public:
00054        FakeString();
00055 
00056        void operator=(const QString& other);
00057        void operator=(const char* str);
00058        void operator+=(const QString& other);
00059        void operator+=(const char* str);
00060 };
00061 
00062 class QDomElement;
00063 
00068 class Rules{
00069        Q_DECLARE_TR_FUNCTIONS(Rules)
00070 
00071 public:
00072        bool modified;
00073 
00077        QString institutionName;
00078        
00082        QString comments;
00083 
00087        int nHoursPerDay;
00088 
00092        int nDaysPerWeek;
00093 
00097        QString daysOfTheWeek[MAX_DAYS_PER_WEEK];
00098 
00102        QString hoursOfTheDay[MAX_HOURS_PER_DAY+1];
00103 
00107        int nHoursPerWeek;
00108 
00112        TeachersList teachersList;
00113 
00117        SubjectsList subjectsList;
00118 
00122        ActivityTagsList activityTagsList;
00123 
00128        StudentsYearsList yearsList;
00129 
00133        ActivitiesList activitiesList;
00134 
00138        RoomsList roomsList;
00139 
00143        BuildingsList buildingsList;
00144 
00148        TimeConstraintsList timeConstraintsList;
00149 
00153        SpaceConstraintsList spaceConstraintsList;
00154        
00155        /*
00156        The following variables contain redundant data and are used internally
00157        */
00159        int nInternalTeachers;
00160        Matrix1D<Teacher*> internalTeachersList;
00161 
00162        int nInternalSubjects;
00163        Matrix1D<Subject*> internalSubjectsList;
00164 
00165        int nInternalActivityTags;
00166        Matrix1D<ActivityTag*> internalActivityTagsList;
00167 
00168        int nInternalSubgroups;
00169        Matrix1D<StudentsSubgroup*> internalSubgroupsList;
00170        
00171        StudentsGroupsList internalGroupsList;
00172        
00173        StudentsYearsList augmentedYearsList;
00174 
00180        int nInternalActivities;
00181        Matrix1D<Activity> internalActivitiesList;
00182        
00183        QSet<int> inactiveActivities;
00184        
00185        Matrix1D<QList<int> > activitiesForSubject;
00186 
00187        int nInternalRooms;
00188        Matrix1D<Room*> internalRoomsList;
00189 
00190        int nInternalBuildings;
00191        Matrix1D<Building*> internalBuildingsList;
00192 
00193        int nInternalTimeConstraints;
00194        Matrix1D<TimeConstraint*> internalTimeConstraintsList;
00195 
00196        int nInternalSpaceConstraints;
00197        Matrix1D<SpaceConstraint*> internalSpaceConstraintsList;
00198 
00199        /*
00201        */
00202 
00206        bool initialized;
00207 
00211        bool internalStructureComputed;
00212 
00216        void init();
00217 
00224        bool computeInternalStructure(QWidget* parent);
00225 
00229        void kill();
00230 
00231        Rules();
00232 
00233        ~Rules();
00234        
00235        void setInstitutionName(const QString& newInstitutionName);
00236        
00237        void setComments(const QString& newComments);
00238 
00244        bool addTeacher(Teacher* teacher);
00245 
00246        /*when reading rules, faster*/
00247        bool addTeacherFast(Teacher* teacher);
00248 
00253        int searchTeacher(const QString& teacherName);
00254 
00259        bool removeTeacher(const QString& teacherName);
00260 
00265        bool modifyTeacher(const QString& initialTeacherName, const QString& finalTeacherName);
00266 
00270        void sortTeachersAlphabetically();
00271 
00277        bool addSubject(Subject* subject);
00278 
00279        /*
00280        When reading rules, faster
00281        */
00282        bool addSubjectFast(Subject* subject);
00283 
00288        int searchSubject(const QString& subjectName);
00289 
00295        bool removeSubject(const QString& subjectName);
00296 
00301        bool modifySubject(const QString& initialSubjectName, const QString& finalSubjectName);
00302 
00306        void sortSubjectsAlphabetically();
00307 
00313        bool addActivityTag(ActivityTag* activityTag);
00314 
00315        /*
00316        When reading rules, faster
00317        */
00318        bool addActivityTagFast(ActivityTag* activityTag);
00319 
00324        int searchActivityTag(const QString& activityTagName);
00325 
00332        bool removeActivityTag(const QString& activityTagName);
00333 
00338        bool modifyActivityTag(const QString& initialActivityTagName, const QString& finalActivityTagName);
00339 
00343        void sortActivityTagsAlphabetically();
00344 
00349        StudentsSet* searchStudentsSet(const QString& setName);
00350        
00351        StudentsSet* searchAugmentedStudentsSet(const QString& setName);
00352        
00357        bool setsShareStudents(const QString& studentsSet1, const QString& studentsSet2);
00358 
00362        bool addYear(StudentsYear* year);
00363        
00364        /*
00365        When reading rules, faster
00366        */
00367        bool addYearFast(StudentsYear* year);
00368 
00369        bool removeYear(const QString& yearName);
00370 
00374        int searchYear(const QString& yearName);
00375 
00376        int searchAugmentedYear(const QString& yearName);
00377 
00382        bool modifyYear(const QString& initialYearName, const QString& finalYearName, int finalNumberOfStudents);
00383        
00387        void sortYearsAlphabetically();
00388 
00392        bool addGroup(const QString& yearName, StudentsGroup* group);
00393        
00394        /*
00395        When reading rules, faster
00396        */
00397        bool addGroupFast(StudentsYear* year, StudentsGroup* group);
00398 
00399        bool removeGroup(const QString& yearName, const QString& groupName);
00400 
00405        int searchGroup(const QString& yearName, const QString& groupName);
00406 
00407        int searchAugmentedGroup(const QString& yearName, const QString& groupName);
00408 
00413        bool modifyGroup(const QString& yearName, const QString& initialGroupName, const QString& finalGroupName, int finalNumberOfStudents);
00414        
00418        void sortGroupsAlphabetically(const QString& yearName);
00419 
00424        bool addSubgroup(const QString& yearName, const QString& groupName, StudentsSubgroup* subgroup);
00425 
00426        /*
00427        When reading rules, faster
00428        */
00429        bool addSubgroupFast(StudentsYear* year, StudentsGroup* group, StudentsSubgroup* subgroup);
00430 
00431        bool removeSubgroup(const QString& yearName, const QString& groupName, const QString& subgroupName);
00432 
00436        int searchSubgroup(const QString& yearName, const QString& groupName, const QString& subgroupName);
00437 
00438        int searchAugmentedSubgroup(const QString& yearName, const QString& groupName, const QString& subgroupName);
00439 
00444        bool modifySubgroup(const QString& yearName, const QString& groupName, const QString& initialSubgroupName, const QString& finalSubgroupName, int finalNumberOfStudents);
00445        
00449        void sortSubgroupsAlphabetically(const QString& yearName, const QString& groupName);
00450        
00457        bool addSimpleActivity(
00458               QWidget* parent,
00459               int _id,
00460               int _activityGroupId,
00461               const QStringList& _teachersNames,
00462               const QString& _subjectName,
00463               const QStringList& _activityTagsNames,
00464               const QStringList& _studentsNames,
00465               int _duration, /*duration, in hours*/
00466               int _totalDuration,
00467               bool _active,
00468               bool _computeNTotalStudents,
00469               int _nTotalStudents);
00470 
00471        /*
00472        Faster, when reading rules (no need to recompute the number of students in activity constructor
00473        */
00474        bool addSimpleActivityRulesFast(
00475               QWidget* parent,
00476               int _id,
00477               int _activityGroupId,
00478               const QStringList& _teachersNames,
00479               const QString& _subjectName,
00480               const QStringList& _activityTagsNames,
00481               const QStringList& _studentsNames,
00482               int _duration, /*duration, in hours*/
00483               int _totalDuration,
00484               bool _active,
00485               bool _computeNTotalStudents,
00486               int _nTotalStudents,
00487               int _computedNumberOfStudents);
00488 
00496        bool addSplitActivity(
00497               QWidget* parent,
00498               int _firstActivityId,
00499               int _activityGroupId,
00500               const QStringList& _teachersNames,
00501               const QString& _subjectName,
00502               const QStringList& _activityTagsNames,
00503               const QStringList& _studentsNames,
00504               int _nSplits,
00505               int _totalDuration,
00506               int _durations[],
00507               bool _active[],
00508               int _minDayDistance,
00509               double _weightPercentage,
00510               bool _consecutiveIfSameDay,
00511               bool _computeNTotalStudents,
00512               int _nTotalStudents);
00513 
00517        void removeActivity(int _id);
00518 
00525        void removeActivity(int _id, int _activityGroupId);
00526        
00532        void modifyActivity(
00533               int _id, 
00534               int _activityGroupId, 
00535               const QStringList& _teachersNames,
00536               const QString& _subjectName, 
00537               const QStringList& _activityTagsNames, 
00538               const QStringList& _studentsNames,
00539               int _nSplits,
00540               int _totalDuration,
00541               int _durations[],
00542               bool _active[],
00543               bool _computeNTotalStudents,
00544               int nTotalStudents);
00545 
00546        void modifySubactivity(
00547               int _id, 
00548               int _activityGroupId, 
00549               const QStringList& _teachersNames,
00550               const QString& _subjectName, 
00551               const QStringList& _activityTagsNames, 
00552               const QStringList& _studentsNames,
00553               int _duration,
00554               bool _active,
00555               bool _computeNTotalStudents,
00556               int nTotalStudents);
00557 
00562        bool addRoom(Room* rm);
00563 
00564        /*
00565        Faster, when reading
00566        */
00567        bool addRoomFast(Room* rm);
00568 
00572        int searchRoom(const QString& roomName);
00573 
00578        bool removeRoom(QWidget* parent, const QString& roomName);
00579        
00584        bool modifyRoom(const QString& initialRoomName, const QString& finalRoomName, const QString& building, int capacity);
00585 
00589        void sortRoomsAlphabetically();
00590 
00595        bool addBuilding(Building* rm);
00596 
00597        /*
00598        Faster, when reading
00599        */
00600        bool addBuildingFast(Building* rm);
00601 
00605        int searchBuilding(const QString& buildingName);
00606 
00611        bool removeBuilding(const QString& buildingName);
00612        
00617        bool modifyBuilding(const QString& initialBuildingName, const QString& finalBuildingName);
00618 
00622        void sortBuildingsAlphabetically();
00623 
00628        bool addTimeConstraint(TimeConstraint* ctr);
00629 
00634        bool removeTimeConstraint(TimeConstraint* ctr);
00635 
00640        bool addSpaceConstraint(SpaceConstraint* ctr);
00641 
00646        bool removeSpaceConstraint(SpaceConstraint* ctr);
00647 
00652        bool read(QWidget* parent, const QString& filename, bool commandLine=false, QString commandLineDirectory=QString());
00653 
00657        bool write(QWidget* parent, const QString& filename);
00658        
00659        int activateTeacher(const QString& teacherName);
00660        
00661        int activateStudents(const QString& studentsName);
00662        
00663        int activateSubject(const QString& subjectName);
00664        
00665        int activateActivityTag(const QString& activityTagName);
00666 
00667        int deactivateTeacher(const QString& teacherName);
00668        
00669        int deactivateStudents(const QString& studentsName);
00670        
00671        int deactivateSubject(const QString& subjectName);
00672        
00673        int deactivateActivityTag(const QString& activityTagName);
00674        
00675 private:
00676        TimeConstraint* readBasicCompulsoryTime(const QDomElement& elem3, FakeString& xmlReadingLog);
00677        TimeConstraint* readTeacherNotAvailable(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00678        TimeConstraint* readTeacherNotAvailableTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00679        TimeConstraint* readTeacherMaxDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00680        TimeConstraint* readTeachersMaxDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00681 
00682        TimeConstraint* readTeacherMinDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00683        TimeConstraint* readTeachersMinDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00684 
00685        TimeConstraint* readTeacherIntervalMaxDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00686        TimeConstraint* readTeachersIntervalMaxDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00687        TimeConstraint* readStudentsSetIntervalMaxDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00688        TimeConstraint* readStudentsIntervalMaxDaysPerWeek(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00689        TimeConstraint* readStudentsSetNotAvailable(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00690        TimeConstraint* readStudentsSetNotAvailableTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00691        TimeConstraint* readMinNDaysBetweenActivities(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00692        TimeConstraint* readMinDaysBetweenActivities(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00693        TimeConstraint* readMaxDaysBetweenActivities(const QDomElement& elem3, FakeString& xmlReadingLog);
00694        TimeConstraint* readMinGapsBetweenActivities(const QDomElement& elem3, FakeString& xmlReadingLog);
00695        TimeConstraint* readActivitiesNotOverlapping(const QDomElement& elem3, FakeString& xmlReadingLog);
00696        TimeConstraint* readActivitiesSameStartingTime(const QDomElement& elem3, FakeString& xmlReadingLog);
00697        TimeConstraint* readActivitiesSameStartingHour(const QDomElement& elem3, FakeString& xmlReadingLog);
00698        TimeConstraint* readActivitiesSameStartingDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00699        TimeConstraint* readTeachersMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00700        TimeConstraint* readTeacherMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00701        TimeConstraint* readTeachersMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00702        TimeConstraint* readTeacherMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00703        TimeConstraint* readTeacherActivityTagMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00704        TimeConstraint* readTeachersActivityTagMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00705 
00706        TimeConstraint* readTeacherActivityTagMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00707        TimeConstraint* readTeachersActivityTagMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00708 
00709        TimeConstraint* readTeachersMinHoursDaily(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00710        TimeConstraint* readTeacherMinHoursDaily(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00711        TimeConstraint* readStudentsMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00712        TimeConstraint* readStudentsSetMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00713        TimeConstraint* readStudentsMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00714        TimeConstraint* readStudentsSetMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00715        TimeConstraint* readStudentsSetActivityTagMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00716        TimeConstraint* readStudentsActivityTagMaxHoursContinuously(const QDomElement& elem3, FakeString& xmlReadingLog);
00717 
00718        TimeConstraint* readStudentsSetActivityTagMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00719        TimeConstraint* readStudentsActivityTagMaxHoursDaily(const QDomElement& elem3, FakeString& xmlReadingLog);
00720 
00721        TimeConstraint* readStudentsMinHoursDaily(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00722        TimeConstraint* readStudentsSetMinHoursDaily(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00723 
00724        TimeConstraint* readActivityPreferredTime(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog,
00725               bool& reportUnspecifiedPermanentlyLockedTime, bool& reportUnspecifiedDayOrHourPreferredStartingTime);
00726        TimeConstraint* readActivityPreferredStartingTime(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog,
00727               bool& reportUnspecifiedPermanentlyLockedTime, bool& reportUnspecifiedDayOrHourPreferredStartingTime);
00728 
00729        TimeConstraint* readActivityEndsStudentsDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00730        TimeConstraint* readActivitiesEndStudentsDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00731        
00732        /*old, with 2 and 3*/
00733        TimeConstraint* read2ActivitiesConsecutive(const QDomElement& elem3, FakeString& xmlReadingLog);
00734        TimeConstraint* read2ActivitiesGrouped(const QDomElement& elem3, FakeString& xmlReadingLog);
00735        TimeConstraint* read3ActivitiesGrouped(const QDomElement& elem3, FakeString& xmlReadingLog);
00736        TimeConstraint* read2ActivitiesOrdered(const QDomElement& elem3, FakeString& xmlReadingLog);
00737        /*end old*/
00738        
00739        TimeConstraint* readTwoActivitiesConsecutive(const QDomElement& elem3, FakeString& xmlReadingLog);
00740        TimeConstraint* readTwoActivitiesGrouped(const QDomElement& elem3, FakeString& xmlReadingLog);
00741        TimeConstraint* readThreeActivitiesGrouped(const QDomElement& elem3, FakeString& xmlReadingLog);
00742        TimeConstraint* readTwoActivitiesOrdered(const QDomElement& elem3, FakeString& xmlReadingLog);
00743        
00744        TimeConstraint* readActivityPreferredTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00745        TimeConstraint* readActivityPreferredTimeSlots(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00746        TimeConstraint* readActivityPreferredStartingTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00747        
00748        TimeConstraint* readBreak(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00749        TimeConstraint* readBreakTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00750        
00751        TimeConstraint* readTeachersNoGaps(const QDomElement& elem3, FakeString& xmlReadingLog);
00752        TimeConstraint* readTeachersMaxGapsPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00753        TimeConstraint* readTeacherMaxGapsPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00754        TimeConstraint* readTeachersMaxGapsPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00755        TimeConstraint* readTeacherMaxGapsPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00756        
00757        TimeConstraint* readStudentsNoGaps(const QDomElement& elem3, FakeString& xmlReadingLog);
00758        TimeConstraint* readStudentsSetNoGaps(const QDomElement& elem3, FakeString& xmlReadingLog);
00759        TimeConstraint* readStudentsMaxGapsPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00760        TimeConstraint* readStudentsSetMaxGapsPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00761 
00762        TimeConstraint* readStudentsMaxGapsPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00763        TimeConstraint* readStudentsSetMaxGapsPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00764 
00765        TimeConstraint* readStudentsEarly(const QDomElement& elem3, FakeString& xmlReadingLog);
00766        TimeConstraint* readStudentsEarlyMaxBeginningsAtSecondHour(const QDomElement& elem3, FakeString& xmlReadingLog);
00767        TimeConstraint* readStudentsSetEarly(const QDomElement& elem3, FakeString& xmlReadingLog);
00768        TimeConstraint* readStudentsSetEarlyMaxBeginningsAtSecondHour(const QDomElement& elem3, FakeString& xmlReadingLog);
00769 
00770        TimeConstraint* readActivitiesPreferredTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00771        TimeConstraint* readActivitiesPreferredTimeSlots(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00772        TimeConstraint* readActivitiesPreferredStartingTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00773 
00774        TimeConstraint* readSubactivitiesPreferredTimeSlots(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00775        TimeConstraint* readSubactivitiesPreferredStartingTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00776 
00777        TimeConstraint* readActivitiesOccupyMaxTimeSlotsFromSelection(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00778        TimeConstraint* readActivitiesMaxSimultaneousInSelectedTimeSlots(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00779 
00780        SpaceConstraint* readBasicCompulsorySpace(const QDomElement& elem3, FakeString& xmlReadingLog);
00781        SpaceConstraint* readRoomNotAvailable(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00782        SpaceConstraint* readRoomNotAvailableTimes(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog);
00783        SpaceConstraint* readActivityPreferredRoom(QWidget* parent, const QDomElement& elem3, FakeString& xmlReadingLog,
00784               bool& reportUnspecifiedPermanentlyLockedSpace);
00785        SpaceConstraint* readActivityPreferredRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00786        SpaceConstraint* readSubjectPreferredRoom(const QDomElement& elem3, FakeString& xmlReadingLog);
00787        SpaceConstraint* readSubjectPreferredRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00788        SpaceConstraint* readSubjectSubjectTagPreferredRoom(const QDomElement& elem3, FakeString& xmlReadingLog);
00789        SpaceConstraint* readSubjectSubjectTagPreferredRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00790        SpaceConstraint* readSubjectActivityTagPreferredRoom(const QDomElement& elem3, FakeString& xmlReadingLog);
00791        SpaceConstraint* readSubjectActivityTagPreferredRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00792        SpaceConstraint* readActivityTagPreferredRoom(const QDomElement& elem3, FakeString& xmlReadingLog);
00793        SpaceConstraint* readActivityTagPreferredRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00794 
00795        SpaceConstraint* readStudentsSetHomeRoom(const QDomElement& elem3, FakeString& xmlReadingLog);
00796        SpaceConstraint* readStudentsSetHomeRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00797        SpaceConstraint* readTeacherHomeRoom(const QDomElement& elem3, FakeString& xmlReadingLog);
00798        SpaceConstraint* readTeacherHomeRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00799 
00800        SpaceConstraint* readTeacherMaxBuildingChangesPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00801        SpaceConstraint* readTeachersMaxBuildingChangesPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00802        SpaceConstraint* readTeacherMaxBuildingChangesPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00803        SpaceConstraint* readTeachersMaxBuildingChangesPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00804        SpaceConstraint* readTeacherMinGapsBetweenBuildingChanges(const QDomElement& elem3, FakeString& xmlReadingLog);
00805        SpaceConstraint* readTeachersMinGapsBetweenBuildingChanges(const QDomElement& elem3, FakeString& xmlReadingLog);
00806 
00807        SpaceConstraint* readStudentsSetMaxBuildingChangesPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00808        SpaceConstraint* readStudentsMaxBuildingChangesPerDay(const QDomElement& elem3, FakeString& xmlReadingLog);
00809        SpaceConstraint* readStudentsSetMaxBuildingChangesPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00810        SpaceConstraint* readStudentsMaxBuildingChangesPerWeek(const QDomElement& elem3, FakeString& xmlReadingLog);
00811        SpaceConstraint* readStudentsSetMinGapsBetweenBuildingChanges(const QDomElement& elem3, FakeString& xmlReadingLog);
00812        SpaceConstraint* readStudentsMinGapsBetweenBuildingChanges(const QDomElement& elem3, FakeString& xmlReadingLog);
00813 
00814        SpaceConstraint* readActivitiesOccupyMaxDifferentRooms(const QDomElement& elem3, FakeString& xmlReadingLog);
00815 };
00816 
00817 #endif