module ConflictModule; from ScheduleModule import Section; from ScheduleModule import Schedule; object Conflict is components: seclst:Section* and cd:ConflictDiscription and ct:ConflictType and Show; description: (* Conficlt is a list of one or more of offending section the discription of the conflict and the type of conflict. *); end conflict; object ConflictType is components: Error or Warning; description: (* Type differentiates between a Warning and an Error. *); end Type; object Error; object Warning; object Show is boolean; object ConflictDiscription is components: Staff or TBA or RoomProx or TimeProx or Overlap or CER or InstructConflict or InstructWTU or RoomConflict; description: (* The ConflictDistription is the spefic text that describes a particular conflict. *); end conflictDistiption; object Staff is TextDiscrip; object TBA is TextDiscrip; object RoomProx is TextDiscrip; object TimeProx is TextDiscrip; object Overlap is TextDiscrip; object CER is TextDiscrip; object InstructConflict is TextDiscrip; object InstructWTU is TextDiscrip; object RoomConflict is TextDiscrip; object TextDiscrip is string; operation ViewConflicts is inputs: sbd:Schedule; outputs: confl':Conflict*; (* * This operation displays one at a time all of the confict in order of section.course * number where Show = true. *) precondition: ; postcondition: ; end Veiwconflicts; operation Skip is inputs: confl:Conflict*, sbd:Schedule; outputs: conf':Conflict, sdb':Schedule; (* * This operation displays the next conflict *) precondition: ; postcondition: ; end Skip; operation Change is inputs: conf:Conflict, sbd:Schedule; outputs: conf':Conflict, sdb':Schedule; (* * This operation calls the ScheduleModule.change operation with the current section * as the section as it's input *) precondition: ; postcondition: ; end Change; operation Ignore is inputs: conf:Conflict, sbd:Schedule; outputs: conf':Conflict, sdb':Schedule; (* * This operation changes the current Conflict.Show = false *) precondition: ; postcondition: ; end Ignore; operation Resolve is inputs: conf:Conflict, sbd:Schedule; outputs: conf':Conflict, sdb':Schedule; (* * This operation Takes the existion schecule and does create schedule will every * but the conflicts lock into *) precondition: ; postcondition: ; end Resolve; operation Reset is inputs: confl:Conflict*; outputs: confl':Conflict*; (* * This operation sets all Conflict.Show = true; *) precondition: ; postcondition: ; end Reset; end ConflictModule;