module Data; from tutorial import Tutorial; from Page import Page; export all; (*****************************************************************************) object ServerFilespace is components: authorFolders:AuthorFolder*; description: (* Represents the physical filespace on the server where tutorial information is saved. *); end ServerFilespace; object AuthorFolder is components: userID:UserID and tutorials:Tutorial* and pages:Page*; description: (* The server contains a folder for each author who uploads anything to the database. Inside each folder are the uploaded tutorials and pages (including quizzes). *); end AuthorFolder; object UserID is string description: (* A string containing the server login name of the tutorial's author. *); end UserID; (*****************************************************************************) object TutorialDB is components: tutorialRecords:TutorialRecord*; description: (* The highest-level data object for tutorials, this holds all tutorials in the database. *); end TutorialDB; object TutorialRecord is components: authorID:UserID and tutorialID:TutorialID and class:Class and folderPathname:FolderPathname and tutorial:Tutorial and pageIDs:PageID*; description: (* A wrapper object for a tutorial when it is stored in the database. In addition to the tutorial contents, it also contains identifying information and information as to which database folder the tutorial has been uploaded. *); end TutorialRecord; object TutorialID is integer description: (* An integer that uniquely identifies a tutorial in the database. *); end TutorialID; object Class is components: departmentName:DepartmentName and courseNumber:CourseNumber; description: (* Identifying information for a class. Consists of a department name and a course number. *); end Class; object DepartmentName is string description: (* A short text string that uniquely identifies a department. *); end DepartmentName; object CourseNumber is integer description: (* An integer that identifies a course in a particular department. *); end CourseNumber; object FolderPathname is string description: (* The virtual pathname of the tutorial in the author's class folder. Used by the author to subdivide his/her tutorials into additional sections. *); end FolderPathname; (*****************************************************************************) object PageDB is components: pageRecords:PageRecord*; description: (* The highest-level data object for pages, this holds all pages and quizzes in the database. *); end PageDB; object PageRecord is components: pageID:PageID and authorID:UserID and page:Page; description: (* A wrapper object for a page when it is stored in the database. In addition to the page contents, it contains identifying information. *); end PageRecord; object PageID is integer description: (* An integer that uniquely identifies a page in the database. *); end PageID; (*****************************************************************************) end Data;