ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/reports/DBReporter/NodePage.java
(Generate patch)

Comparing projects/cms/source/reports/DBReporter/NodePage.java (file contents):
Revision 1.2 by pjm2, Thu Jan 11 21:52:48 2001 UTC vs.
Revision 1.3 by pjm2, Sat Jan 13 19:38:52 2001 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines