home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / VCAFE.3.0A / Sample.bin / ReadMe.txt < prev    next >
Text File  |  1998-10-16  |  8KB  |  190 lines

  1. WebLogAnalyzer ReadMe File
  2. ------------------------------------------------------------------------------
  3.  
  4. To run the WebLogAnalyzer program:
  5. - open a DOS window
  6. - go to the web log analyzer's directory
  7. - go to the "class" subdirectory
  8. - enter: "java WebLogAnalyzer"
  9.  
  10. NOTE: To run the java versions Visual Cafe, the java runtime (JRE), or development kit (JDK)
  11. must be properly installed on your system.
  12.  
  13. ------------------------------------------------------------------------------
  14. CONTENTS
  15.  
  16. 1. What this application does.
  17. 2. What this application demonstrates.
  18. 3. How this application was written.
  19. 4. Application classes and interfaces.
  20. 5. Limitations and known problems.
  21.  
  22. ------------------------------------------------------------------------------
  23. 1. What this application does.
  24.  
  25. This application analyzes log files created by web servers and displays
  26. interesting usage statistics. The supported log file formats are "Common Log
  27. File" format and "Extended Log File" format. Most web servers can generate
  28. log files in these formats.
  29.  
  30. ------------------------------------------------------------------------------
  31. 2. What this application demonstrates.
  32.  
  33. This application demonstrates the following:
  34.  
  35. - Writing a java application (not an applet).
  36. - Using Visual Cafe to easily design an application's look, without writing code.
  37. - Using Visual Cafe to specify the basic interaction of the application's components.
  38. - Using the TabPanel component, including data validation.
  39. - Using the Wizard component, including data validation.
  40. - Using KLGroup's JCChartComponent and JCTableComponent.
  41. - Using a simple custom layout manager.
  42. - Displaying a "splash" window while the program initializes in the background.
  43. - Using java's Serializable interface to save program data and state.
  44. - Separating UI code from application "meat" code.
  45. - Using (and cancelling) a thread running in tandem with the UI.
  46. - Date & time handling using java's Date, Calendar, and DateFormat classes.
  47. - Network access using java's URL and URLConnection classes.
  48. - Creating a native Windows EXE from a Java application.
  49.  
  50. ------------------------------------------------------------------------------
  51. 3. How this application was written.
  52.  
  53. This application was written using Symantec Visual Cafe.
  54.  
  55. First the UI was created, starting with a "Basic Progam" project. Dialogs and
  56. components were added visually until the proper "look" was achieved. Then
  57. interactions between components were specified using the Interaction Wizard.
  58. At this point we had a good "demo" of the program! You could run the program
  59. and operate its controls to see how the program was going to work, but nothing
  60. would actually happen (i.e. new reports weren't memorized, etc). At this point
  61. it was time to add the "meat" code.
  62.  
  63. Finishing up the program consisted of writing the non-UI classes and doing
  64. minor customization of a few of the UI classes. Non-UI classes were created
  65. for the "things" the program manipulates (reports, log files). A top-level
  66. Data class was written to both contain the program-global options and also
  67. the list of user reports. Using java serialization to read/write this top-level
  68. non-UI class was a simple way of implementing an "ini" file that remembers all
  69. of the user's settings.
  70.  
  71. Creating a native Windows version was the easiest part of all. The appropriate
  72. project option was selected and then the project was rebuilt. Presto!
  73.  
  74. ------------------------------------------------------------------------------
  75. 4. Application classes.
  76.  
  77. UI Classes
  78. ----------
  79.  
  80. AboutDialog
  81. This is a typical "about" dialog. It displays information about the program,
  82. including version and copyright.
  83.  
  84. AlertDialog
  85. This dialog is used to alert the user of some unexpected occurance.
  86. It displays the message passed to it when it is created and can either display
  87. both an OK and CANCEL button, or just an OK button.
  88.  
  89. AnalyzeDialog
  90. This dialog is displayed while the program analyzes a log file.
  91. It displays the progress to the user, and allows the user to cancel the
  92. analysis at any time. The analysis itself is run as a separate thread created
  93. and controlled by this dialog.
  94.  
  95. EditReportDialog
  96. This is a tabbed dialog that allows the user to change the options of a web
  97. log report. The fields are the same as the NewReportDialog, but it is a
  98. tabbed dialog, not a Wizard. Ensuring that the field names are identical
  99. in both the EditReportDialog and NewReportDialog has allowed copying and
  100. pasting some code between the two.
  101.  
  102. NewReportDialog
  103. This is a wizard that leads the user through creating a new web log report.
  104. This class includes a simple extension of the SimpleWizardController for data
  105. validation. The fields are the same as the EditReportDialog, but it is a Wizard,
  106. not a tabbed dialog. Ensuring that the field names are identical in both the
  107. EditReportDialog and NewReportDialog has allowed copying and pasting some
  108. code between the two.
  109.  
  110. OptionsDialog
  111. This dialog displays/edits options that are program-global (don't apply to
  112. one specific report).
  113.  
  114. ReportLayout
  115. This is a simple LayoutManager. It is used by the ReportViewFrame to layout
  116. report elements in a single column.
  117.  
  118. ReportViewFrame
  119. This window displays a report. It uses the ReportLayout class to arrange the
  120. report elements in a single column.
  121.  
  122. SplashDialog
  123. This is the first window the program displays. It shows the program name and
  124. copyright. While it is being displayed, the program initializes itself in the
  125. background. It also ensures the copyright is displayed for a certain minimum
  126. length of time, even if program initialization is done early.
  127.  
  128. WebLogAnalyzer
  129. This is the application's main frame and contains the program's entry point,
  130. the static "main()" method. The program displays a list of reports defined by
  131. the user and some buttons to perform common operations.
  132.  
  133. WLAUtil
  134. This is an all-static general utility class for both UI and non-UI code.
  135. Being all-static, it never get instantiated.
  136.  
  137. Non-UI Classes
  138. --------------
  139.  
  140. Analyzer
  141. This is the thread that runs reports. It operates at the same time as the
  142. standard UI thread. Progress is reported to the UI code via the TrackProgress
  143. interface. It also provides the mechanism for safe thread cancelling.
  144. Note: It is usually not safe to call the Thread.stop() method, as
  145. randomly stopping execution in a thread may leave "damaged" objects
  146. (objects in an inconsistent state).
  147.  
  148. Data
  149. This is the top-level data object. Only one of these is instantiated.
  150. It is Serializable, and gets stored as the program's "ini" file.
  151.  
  152. LogFile
  153. This represents a log file. It has code to read and parse the log file. Results
  154. from parsing are stored in an array of LogRecord.
  155.  
  156. LogRecord
  157. This is the information contained in one line of the parse log. LogRecords are
  158. created in the LogFile's parsing code then saved there.
  159.  
  160. ParseLogException
  161. This is an exception that indicates a problem occured while parsing a log file.
  162.  
  163. Report
  164. This contains the information on one report. It has both the report options as
  165. specified by the user, and the report results. Its run() method does the
  166. actual log file analysis.
  167.  
  168. Interfaces
  169. ----------
  170.  
  171. Sortable
  172. This interface is implemented by objects that are to be quicksorted.
  173.  
  174. TrackProgress
  175. This interface is used by the non-UI "meat" code to communicate with the UI code
  176. about the state of the web log analysis. It allows the non-UI code to
  177. communicate to the UI code without knowing any of the UI details.
  178.  
  179. ------------------------------------------------------------------------------
  180. 5. Limitations and known problems.
  181.  
  182. - Limitations due to Sun's FTP protocol handler
  183.   - Only anonymous FTP access allowed. This means you typically can't access
  184.   your server area with the logs in it as they rarely allows anonymous access.
  185.  
  186. - Design decision: The parsed log file is not stored when the user quits
  187. the program. So, upon re-running and changing some report parameter,
  188. re-analyzing the report always requires re-reading the log file.
  189.  
  190.