ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/reports/DBReporter/NodePage.java
Revision: 1.4
Committed: Mon Jan 15 09:37:08 2001 UTC (24 years, 11 months ago) by pjm2
Branch: MAIN
Changes since 1.3: +6 -6 lines
Log Message:
Fixed a bug that produced a list of the wrong reports when browsing by
time period.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2
3 //---IMPORTS---
4
5 import java.io.*;
6 import java.util.*;
7
8 /**
9 * Produces 2nd-, 3rd- and 4th-level index pages for reports.
10 *
11 * @author $Author: pjm2 $
12 * @version $Id: NodePage.java,v 1.3 2001/01/13 19:38:52 pjm2 Exp $
13 */
14 public class NodePage {
15
16 //---FINAL ATTRIBUTES---
17
18 /**
19 * The current CVS revision of this class
20 */
21 public final String REVISION = "$Revision: 1.3 $";
22
23 private final String[] FIELDS = {"machine name", "time period", "report type"};
24
25 //---STATIC METHODS---
26
27 //---CONSTRUCTORS---
28
29 public NodePage(String reportDirectory, LinkedList pages){
30 _reportDirectory = reportDirectory;
31 _pages = pages;
32 }
33
34 //---PUBLIC METHODS---
35
36
37 public void generateAllLevels(String levelsDir) {
38
39 // Create the directory to dump the levels into.
40 try {
41 File newSubDir = new File(_reportDirectory + levelsDir);
42 if (!newSubDir.isDirectory()){
43 newSubDir.mkdir();
44 }
45 }
46 catch (Exception e){
47 System.out.println("Could not create a subdirectory in the reports directory: "+e);
48 return;
49 }
50
51 LinkedList level4_0_1 = this.generateLevel(0, 1, 2);
52 LinkedList level4_0_2 = this.generateLevel(0, 2, 1);
53 LinkedList level4_1_2 = this.generateLevel(1, 2, 0);
54
55 LinkedList level3_0 = this.generateLevel(0);
56 LinkedList level3_1 = this.generateLevel(1);
57 LinkedList level3_2 = this.generateLevel(2);
58
59 LinkedList level2_0 = this.generateBasicLevel(0);
60 LinkedList level2_1 = this.generateBasicLevel(1);
61 LinkedList level2_2 = this.generateBasicLevel(2);
62
63 stringArrayBottomFileOut(levelsDir, "level4_0_1", level4_0_1, 0, 1, "The following types of report are available. ");
64 stringArrayBottomFileOut(levelsDir, "level4_0_2", level4_0_2, 0, 2, "Reports are available for following time periods. ");
65 stringArrayBottomFileOut(levelsDir, "level4_1_2", level4_1_2, 1, 2, "Reports are available for the following machines. ");
66
67 stringArrayFileOut(levelsDir, "level3_0", level3_0, 0, 0, 1, "The following reports are available for machine ");
68 stringArrayFileOut(levelsDir, "level3_1", level3_1, 1, 0, 1, "The following reports are available for time period ");
69 stringArrayFileOut(levelsDir, "level3_2", level3_2, 2, 1, 2, "The following reports are available for report type ");
70
71 stringFileOut(levelsDir, "level2_0", level2_0, 0, "Reports are available for the following machines");
72 stringFileOut(levelsDir, "level2_1", level2_1, 1, "Reports are available for the following time periods");
73 stringFileOut(levelsDir, "level2_2", level2_2, 2, "The following types of report are available");
74
75 }
76
77
78 private void stringFileOut(String levelsDir, String filename, LinkedList reports, int indexA, String title) {
79 try {
80 FileWriter writer = new FileWriter(_reportDirectory+levelsDir+filename+".shtml");
81 BufferedWriter bw = new BufferedWriter(writer);
82 Iterator it = reports.iterator();
83 bw.write("<html><body><p><b>"+title+"</b></p>");
84 bw.newLine();
85 while (it.hasNext()) {
86 String str = (String)it.next();
87 bw.write("<a href=\"../"+levelsDir+"level3_"+indexA+"."+str.replace('/', '_')+".shtml"+"\">"+str+"</a><br>");
88 bw.newLine();
89 }
90 bw.write("</body></html>");
91 bw.flush();
92 bw.close();
93 }
94 catch (IOException e) {
95 System.out.println("Failed to output "+filename);
96 }
97 }
98
99 private void stringArrayFileOut(String levelsDir, String filename, LinkedList reports, int indexA, int indexB, int indexC, String baseTitle) {
100 Iterator it = reports.iterator();
101 HashSet set = new HashSet();
102 while (it.hasNext()){
103 String item = ((String[])it.next())[indexA];
104 set.add(item);
105 }
106 Iterator setit = set.iterator();
107 while (setit.hasNext()) {
108 String extension = (String)setit.next();
109 String title = baseTitle + extension;
110 try {
111 FileWriter writer = new FileWriter(_reportDirectory+levelsDir+filename+"."+extension.replace('/', '_')+".shtml");
112 BufferedWriter bw = new BufferedWriter(writer);
113 bw.write("<html><body><p><b>"+title+"</b></p>");
114 bw.newLine();
115 it = reports.iterator();
116 while (it.hasNext()) {
117 String[] stra = (String[])it.next();
118 if (extension.equals(stra[indexA])) {
119 bw.write("<a href=\"../"+levelsDir+"level4_"+indexB+"_"+indexC+"."+stra[indexB].replace('/', '_')+"."+stra[indexC].replace('/', '_')+".shtml\">");
120 for (int i = 0; i < stra.length; i++) {
121 bw.write(stra[i]+" ");
122 }
123 bw.write("</a><br>");
124 bw.newLine();
125 }
126 }
127 bw.write("</body></html>");
128 bw.flush();
129 bw.close();
130 }
131 catch (IOException e) {
132 System.out.println("Failed to output "+filename+"."+extension);
133 }
134 }
135 }
136
137 private void stringArrayBottomFileOut(String levelsDir, String filename, LinkedList reports, int indexA, int indexB, String baseTitle) {
138 Iterator it = reports.iterator();
139 HashSet set = new HashSet();
140 while (it.hasNext()){
141 String[] entry = (String[])it.next();
142 set.add(entry);
143 }
144 Iterator setit = set.iterator();
145 while (setit.hasNext()) {
146 String[] entry = (String[])setit.next();
147 String title = baseTitle + "Your choice has been limited to the "+FIELDS[indexA]+" "+entry[indexA]+" and the "+FIELDS[indexB]+" "+entry[indexB];
148 HashSet links = new HashSet();
149 try {
150 String extension = ("."+entry[indexA]+"."+entry[indexB]).replace('/', '_');
151 FileWriter writer = new FileWriter(_reportDirectory+levelsDir+filename+extension+".shtml");
152 BufferedWriter bw = new BufferedWriter(writer);
153 it = reports.iterator();
154 bw.write("<html><body><p><b>"+title+"</b></p>");
155 bw.newLine();
156 while (it.hasNext()) {
157 String[] stra = (String[])it.next();
158 if (entry[indexA].equals(stra[indexA]) && entry[indexB].equals(stra[indexB])) {
159 String link = "<a href=\"../"+stra[1]+stra[0]+"."+stra[2]+".shtml\">";
160 for (int i = 0; i < stra.length; i++) {
161 link += (stra[i]+" ");
162 }
163 link += "</a><br>";
164 links.add(link);
165 }
166 }
167 // Write the unique links we found.
168 Iterator linkit = links.iterator();
169 while (linkit.hasNext()) {
170 bw.write((String)linkit.next());
171 bw.newLine();
172 }
173 bw.write("</body></html>");
174 bw.flush();
175 bw.close();
176 }
177 catch (IOException e) {
178 System.out.println("Failed to output "+filename+"."+entry[indexA]+"."+entry[indexB]+": "+e);
179 }
180 }
181 }
182
183
184 private LinkedList generateBasicLevel(int indexA) {
185 LinkedList pagesMade = new LinkedList();
186 HashSet set = new HashSet();
187 Iterator it = _pages.iterator();
188 while (it.hasNext()) {
189 String item = ((String[])it.next())[indexA];
190 set.add(item);
191 }
192
193 Iterator setit = set.iterator();
194 while (setit.hasNext()){
195 String setitem = (String)setit.next();
196 // Make the page.
197 pagesMade.add(setitem);
198 }
199
200 return pagesMade;
201 }
202
203
204 private LinkedList generateLevel(int indexA) {
205 LinkedList pagesMade = new LinkedList();
206 //Populate the HashSet.
207 HashSet set = new HashSet();
208 Iterator it = _pages.iterator();
209 while (it.hasNext()) {
210 String item = ((String[])it.next())[indexA];
211 set.add(item);
212 }
213
214 Iterator setit = set.iterator();
215 while (setit.hasNext()){
216 String setitem = (String)setit.next();
217 it = _pages.iterator();
218 while (it.hasNext()){
219 String[] entry = (String[])it.next();
220 if (setitem.equals(entry[indexA])) {
221 // Make this page.
222 pagesMade.add(entry);
223 }
224 }
225 }
226
227 return pagesMade;
228 }
229
230 private LinkedList generateLevel(int indexA, int indexB, int indexC) {
231 LinkedList pagesMade = new LinkedList();
232 // Select unique pairs of elements
233 HashSet set = new HashSet();
234
235 // Populate the HashSet.
236 Iterator it = _pages.iterator();
237 while (it.hasNext()) {
238 String[] pair = new String[2];
239 String[] entry = (String[])it.next();
240 pair[0] = entry[indexA];
241 pair[1] = entry[indexB];
242 set.add(pair);
243 }
244
245 Iterator setit = set.iterator();
246 while (setit.hasNext()){
247 String[] pair = (String[])setit.next();
248 it = _pages.iterator();
249 while (it.hasNext()){
250 String[] entry = (String[])it.next();
251 if (pair[0].equals(entry[indexA]) && pair[1].equals(entry[indexB])) {
252 // Make this page.
253 pagesMade.add(entry);
254 }
255 }
256 }
257
258 return pagesMade;
259 }
260
261 /**
262 * Overrides the {@link java.lang.Object#toString() Object.toString()}
263 * method to provide clean logging (every class should have this).
264 *
265 * @return the name of this class and its CVS revision
266 */
267 public String toString() {
268 return this.getClass().getName() + "(" + REVISION.substring(11, REVISION.length() - 2) + ")";
269 }
270
271 //---PRIVATE METHODS---
272
273 //---ACCESSOR/MUTATOR METHODS---
274
275 //---ATTRIBUTES---
276
277 String _reportDirectory;
278 LinkedList _pages;
279
280 //---STATIC ATTRIBUTES---
281
282 }