ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/reports/DBReporter/NodePage.java
Revision: 1.2
Committed: Thu Jan 11 21:52:48 2001 UTC (24 years, 11 months ago) by pjm2
Branch: MAIN
Changes since 1.1: +172 -42 lines
Log Message:
Sumstantial changes to the 4-level browsing heirarchy.  I.e. it now works.
Proper pages are not produced yet; this is a proof of concept at the
moment.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2
3
4
5 //---IMPORTS---
6
7
8
9 import java.io.*;
10
11 import java.util.*;
12
13
14
15 /**
16
17 * Produces non-root index pages for reports.
18 * (levels 2, 3 and 4)
19
20 *
21
22 * @author $Author: $
23
24 * @version $Id: $
25
26 */
27
28 public class NodePage {
29
30
31
32 //---FINAL ATTRIBUTES---
33
34
35
36 /**
37
38 * The current CVS revision of this class
39
40 */
41
42 public final String REVISION = "$Revision: $";
43
44
45
46 //---STATIC METHODS---
47
48
49
50 //---CONSTRUCTORS---
51
52
53
54 public NodePage(String reportDirectory, LinkedList pages){
55
56 _reportDirectory = reportDirectory;
57 _pages = pages;
58
59 }
60
61
62
63 //---PUBLIC METHODS---
64
65
66
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
257
258 /**
259
260 * Overrides the {@link java.lang.Object#toString() Object.toString()}
261
262 * method to provide clean logging (every class should have this).
263
264 *
265
266 * @return the name of this class and its CVS revision
267
268 */
269
270 public String toString() {
271
272 return this.getClass().getName() + "(" + REVISION.substring(11, REVISION.length() - 2) + ")";
273
274 }
275
276
277
278 //---PRIVATE METHODS---
279
280
281
282 //---ACCESSOR/MUTATOR METHODS---
283
284
285
286 //---ATTRIBUTES---
287
288
289 String _reportDirectory;
290 LinkedList _pages;
291
292
293 //---STATIC ATTRIBUTES---
294
295
296
297 }
298