<?xml version="1.0"?>

<st-source>



<class>
<name>Toyz</name>
<environment>Smalltalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>toyzData title </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>

<body package="(none)">title
 ^title</body>

<body package="(none)">title: aTitle
 title := aTitle.</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>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>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\teach\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>




















<class>
<name>ServletVerify</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees|
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     ].
    ].
   ].  
  ].
   
  aResponse write: '&lt;html&gt;&lt;body&gt;&lt;center&gt;'.

  (goodLogin = 'YES') 
   ifTrue:  [ aResponse write: '&lt;b&gt;Successful Login&lt;/b&gt;'. ]
   ifFalse: [ aResponse write: '&lt;b&gt;Unsuccessful Login&lt;/b&gt;&lt;br&gt;&lt;a href=/toyzinc/logon1.htm&gt;Try Again&lt;/a&gt;'.].

  aResponse write: '&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;'.</body>
</methods>
<new-page/>


<class>
<name>ServletVerify4</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify4</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees mySession |
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     mySession := aRequest session.
     mySession setAttribute: 'signon' to: each. ].
    ].
   ].  
  ].
   
  (goodLogin = 'YES') 
   ifTrue:  [ aResponse redirectTo: '/teach/main4.ssp'. ]
   ifFalse: [ aResponse redirectTo: '/teach/logon4.ssp?msg=111'.].</body>
</methods>
<new-page/>


<class>
<name>ServletVerify1</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify1</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees employeeCookie|
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     employeeCookie := HTTPCookie named: 'employeej' value: (each firstName, ' ', each lastName).
      employeeCookie expireAfterDays: 90.
      aResponse addCookie: employeeCookie.
     ].
    ].
   ].  
  ].
   
  (goodLogin = 'YES') 
   ifTrue:  [ aResponse redirectTo: '/teach/main1.ssp'. ]
   ifFalse: [ aResponse redirectTo: '/teach/logon1.htm'.].</body>
</methods>
<new-page/>


<class>
<name>ServletVerify2</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify2</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees mySession |
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     mySession := aRequest session.
     mySession setAttribute: 'signon' to: each. ].
    ].
   ].  
  ].
   
  (goodLogin = 'YES') 
   ifTrue:  [ aResponse redirectTo: '/teach/main2.ssp'. ]
   ifFalse: [ aResponse redirectTo: '/teach/logon2.htm'.].</body>
</methods>
<new-page/>


<class>
<name>ServletVerify5</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify5</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees mySession |
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 mySession := aRequest session.
 mySession removeKey: 'signon'. 
 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     mySession setAttribute: 'signon' to: each. 
     mySession timeout: 5.].
    ].
   ].  
  ].
   
  (goodLogin = 'YES') 
   ifTrue:  [ aResponse redirectTo: '/teach/main5.ssp'. ]
   ifFalse: [ aResponse redirectTo: '/teach/logon5.ssp?msg=111'.].</body>
</methods>
<new-page/>


<class>
<name>ServletVerify6</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify6</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees mySession |
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 mySession := aRequest session.
 mySession removeKey: 'signon'. 
 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     mySession setAttribute: 'signon' to: each. 
     mySession timeout: 5.].
    ].
   ].  
  ].
   
  (goodLogin = 'YES') 
   ifTrue:  [ aResponse redirectTo: '/teach/main6.ssp'. ]
   ifFalse: [ aResponse redirectTo: '/teach/logon6.ssp?msg=111'.].</body>
</methods>
<new-page/>


<class>
<name>ServletVerify3</name>
<environment>VisualWave</environment>
<super>VisualWave.HttpServlet</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>ToyzInc</category>
<attributes>
<package>(none)</package>
</attributes>
</class>

<methods>
<class-id>VisualWave.ServletVerify3</class-id> <category>serving</category>

<body package="(none)">doPost: aRequest response: aResponse
| firstName lastName passWord goodLogin employees mySession |
 firstName := aRequest anyFormValueAt: 'firstName'.
 lastName := aRequest anyFormValueAt: 'lastName'.
 passWord := aRequest anyFormValueAt: 'passWord'.

 goodLogin := 'NO'. 
 employees := (Toyz new) getEmployees.
 employees do: 
  [ :each |
  (passWord = each number) ifTrue:
   [ 
   (lastName = each lastName) ifTrue:
    [ 
    (firstName = each firstName) ifTrue:
     [ 
     goodLogin := 'YES'. 
     mySession := aRequest session.
     mySession setAttribute: 'signon' to: each. ].
    ].
   ].  
  ].
   
  (goodLogin = 'YES') 
   ifTrue:  [ aResponse redirectTo: '/teach/main3.ssp'. ]
   ifFalse: [ aResponse redirectTo: '/teach/logon3.ssp?msg=111'.].</body>
</methods>















</st-source>

