<?xml version="1.0"?>

<st-source>



<class>
<name>Course</name>
<environment>Smalltalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>courseNumber courseName </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Course class</class-id> <category>class initialization</category>

<body package="(none)">new
	^super new</body>
</methods>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Course</class-id> <category>accessing</category>

<body package="(none)">courseName
 ^courseName</body>

<body package="(none)">courseName: aName
 courseName := aName.</body>

<body package="(none)">courseNumber
	^courseNumber</body>

<body package="(none)">courseNumber: aNumber
  courseNumber := aNumber.</body>

<body package="(none)">courseNumber: aNumber courseName: aName
 self courseName: aName.
 self courseNumber: aNumber.</body>
</methods>

<methods>
<class-id>Course</class-id> <category>printing</category>

<body package="(none)">printOn: aStream
	aStream nextPutAll: (courseName, ':', courseNumber).</body>
</methods>

<methods>
<class-id>Course</class-id> <category>operators</category>

<body package="(none)">&lt;= aCourse
	^self courseName &lt;= aCourse courseName</body>
</methods>
<new-page/>


<class>
<name>Xref</name>
<environment>Smalltalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>employeeNumber employeeName courseNumber courseName </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Xref class</class-id> <category>class initialization</category>

<body package="(none)">new
	^super new</body>
</methods>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Xref</class-id> <category>accessing</category>

<body package="(none)">courseName
 ^courseName</body>

<body package="(none)">courseName: aName
 courseName := aName.</body>

<body package="(none)">courseNumber
	^courseNumber</body>

<body package="(none)">courseNumber: aNumber
  courseNumber := aNumber.</body>

<body package="(none)">employeeName
 ^employeeName</body>

<body package="(none)">employeeName: aName
 employeeName := aName.</body>

<body package="(none)">employeeNumber
	^employeeNumber</body>

<body package="(none)">employeeNumber: aNumber
  employeeNumber := aNumber.</body>

<body package="(none)">employeeNumber: eNumber employeeName: eName courseNumber: cNumber courseName: cName
 self employeeNumber: eNumber.
 self employeeName: eName.
 self courseNumber: cNumber.
 self courseName: cName.</body>
</methods>

<methods>
<class-id>Xref</class-id> <category>printing</category>

<body package="(none)">printOn: aStream
	aStream nextPutAll: (employeeNumber, ':', courseNumber).</body>
</methods>

<methods>
<class-id>Xref</class-id> <category>operators</category>

<body package="(none)">&lt;= aXref
	^self employeeName &lt;= aXref employeeName</body>
</methods>
<new-page/>


<class>
<name>Employee</name>
<environment>Smalltalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>number level firstName lastName </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Employee class</class-id> <category>class initialization</category>

<body package="(none)">new
	^super new</body>
</methods>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Employee</class-id> <category>accessing</category>

<body package="(none)">firstName
 ^firstName</body>

<body package="(none)">firstName: aName
 firstName := aName.</body>

<body package="(none)">lastName
 ^lastName</body>

<body package="(none)">lastName: aName
 lastName := aName.</body>

<body package="(none)">level
 ^level</body>

<body package="(none)">level: aLevel
  level := aLevel.</body>

<body package="(none)">number
	^number</body>

<body package="(none)">number: aNumber
  number := aNumber.</body>

<body package="(none)">number: aNumber level: aLevel firstName: aFirstName lastName: aLastName
 self firstName: aFirstName.
 self number: aNumber.
 self lastName: aLastName.
 self level: aLevel.</body>
</methods>

<methods>
<class-id>Employee</class-id> <category>printing</category>

<body package="(none)">printOn: aStream
	aStream nextPutAll: (lastName, ':', firstName).</body>
</methods>

<methods>
<class-id>Employee</class-id> <category>operators</category>

<body package="(none)">&lt;= aEmployee
	^self lastName &lt;= aEmployee lastName</body>
</methods>
<new-page/>


<class>
<name>FileStuff</name>
<environment>Smalltalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>employees courses directory xrefs </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>FileStuff class</class-id> <category>class initialization</category>

<body package="(none)">new
	^super new initialize</body>
</methods>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>FileStuff</class-id> <category>instance-creation</category>

<body package="(none)">initialize
	directory := 'c:\vw72nc\web\sandbox\db\'.
	employees := SortedCollection new.
    courses := SortedCollection new.
    xrefs := SortedCollection new.</body>
</methods>

<methods>
<class-id>FileStuff</class-id> <category>accessing</category>

<body package="(none)">courses
 ^ courses</body>

<body package="(none)">getCourses
 courses isEmpty 
  ifTrue: [ self getCoursesFromFile]
  ifFalse: [ self courses].
 ^ courses.</body>

<body package="(none)">getCoursesFromFile
  | courseFile separator stream courseNumber courseName |
  courseFile := (directory, 'courses.txt') asFilename.
  separator := $,.   "comma"
  stream := courseFile readStream lineEndCRLF. 
  [stream atEnd] whileFalse: [
   courseNumber := (stream upTo: separator).
   courseName := (stream upTo: separator).
   stream upTo: (Character cr).
   courses add: ((Course new) courseNumber: courseNumber courseName: courseName). 
  ].  
  stream close.
  ^courses.</body>

<body package="(none)">getEmployeeCourses
  | xrefFile separator stream eNumber eName cName cNumber |
  xrefFile := (directory, 'xref.txt') asFilename.
  separator := $,.   "comma"
  stream := xrefFile readStream lineEndCRLF. 
  [stream atEnd] whileFalse: [
   eNumber := (stream upTo: separator).
   eName := (stream upTo: separator).
   cNumber := (stream upTo: separator).
   cName := (stream upTo: separator).
   stream upTo: (Character cr).
   xrefs add: ((Xref new) employeeNumber: eNumber employeeName: eName courseNumber: cNumber courseName: cName ). 
  ].  
  stream close.
  ^xrefs</body>

<body package="(none)">getEmployees
  | empFile separator stream number level firstName lastName |
  empFile := (directory, 'employees.txt') asFilename.
  separator := $,.   "comma"
  stream := empFile readStream lineEndCRLF. 
  [stream atEnd] whileFalse: [
   number := (stream upTo: separator).
   level := (stream upTo: separator).
   lastName := (stream upTo: separator).
   firstName := (stream upTo: separator).
   stream upTo: (Character cr).
   employees add: ((Employee new) number: number level: level firstName: firstName lastName: lastName ). 
  ].  
  stream close.
  ^employees.</body>

<body package="(none)">getXrefs
 xrefs isEmpty 
  ifTrue: [ self getEmployeeCourses]
  ifFalse: [ self xrefs].
 ^ xrefs.</body>

<body package="(none)">xrefs
 ^ xrefs</body>
</methods>
<new-page/>


<class>
<name>Toyz</name>
<environment>Smalltalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>toyzData </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Toyz class</class-id> <category>class initialization</category>

<body package="(none)">new
	^super new initialize</body>
</methods>

<!-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -->


<methods>
<class-id>Toyz</class-id> <category>instance-creation</category>

<body package="(none)">initialize
    toyzData := FileStuff new.</body>
</methods>

<methods>
<class-id>Toyz</class-id> <category>accessing</category>

<body package="(none)">getCourses
	^toyzData getCourses.</body>

<body package="(none)">getEmployees
	^toyzData getEmployees.</body>

<body package="(none)">getXrefs
	^toyzData getXrefs.</body>
</methods>


































</st-source>

