5.2. Schedule.rsl


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;

Prev: Schedule Reporting.rsl | Next: [none] | Up: Specification | Top: index