KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > reportgenerator > reportcalculator > BlockMatrix


1 package com.calipso.reportgenerator.reportcalculator;
2
3 import com.calipso.reportgenerator.common.InfoException;
4
5 import java.util.Iterator JavaDoc;
6 import java.util.ArrayList JavaDoc;
7 import java.util.Collection JavaDoc;
8
9 /**
10  * User: jbassino
11  * Date: 14-sep-2005
12  * Time: 13:50:44
13  * Esta clase
14  */

15 public class BlockMatrix extends CollectionMatrix {
16
17   private int size;
18   private String JavaDoc baseFileName;
19   private ArrayList JavaDoc blocksFileNames = new ArrayList JavaDoc();
20   private CollectionMatrix usedPart = new CollectionMatrix();
21   private int blockSize;
22   private int index;
23   //Este valor indica si la matriz que se esta tratando como usedPart esta serializada o no.
24
//En la carga, queda la última matriz sin serializar, y hay que bajarla al empezar a trabajar.
25
private boolean isSerialized = false;
26
27   public BlockMatrix(int blockSize, String JavaDoc baseFileName){
28     this.blockSize = blockSize;
29     this.baseFileName = baseFileName;
30   }
31
32   public int size() {
33     return size;
34   }
35
36   public void add(Object JavaDoc[] row) throws InfoException {
37     size++;
38     if(usedPart.size() < blockSize){
39       usedPart.add(row);
40     }else{
41       serialize(usedPart);
42       usedPart = new CollectionMatrix();
43       usedPart.add(row);
44     }
45   }
46
47   private void serialize(CollectionMatrix usedPart) {
48     String JavaDoc fileName = getFileName();
49     blocksFileNames.add(index, fileName);
50     BlockSerializerThread blockSerializerThread = new BlockSerializerThread(fileName, usedPart);
51     blockSerializerThread.setPriority(Thread.NORM_PRIORITY - 2);
52     blockSerializerThread.start();
53     index++;
54   }
55
56   private String JavaDoc getFileName() {
57     return baseFileName + "_" + index;
58   }
59
60   public Iterator JavaDoc iterator() throws InfoException {
61     try{
62       if(!isSerialized){
63         serialize(usedPart);
64         isSerialized = true;
65       }
66       System.gc();
67       return new BlockMatrixIterator(this);
68     }catch(Exception JavaDoc e){
69       throw new InfoException(e);
70     }
71   }
72
73   public boolean isEmpty() {
74     return blocksFileNames.size() == 0;
75   }
76
77   public ArrayList JavaDoc getFileNames() {
78     return blocksFileNames;
79   }
80
81   public String JavaDoc getFileName(int index) {
82     return (String JavaDoc)blocksFileNames.get(index);
83   }
84
85   public int getRowCount() {
86     return size;
87   }
88
89   public Object JavaDoc getValueAt(int i, int i1) throws IndexOutOfBoundsException JavaDoc {
90     //Este metodo no es implementado porque no se utiliza.
91
throw new NoSuchMethodError JavaDoc();
92   }
93
94   public Collection JavaDoc getColumValues(int i) throws IndexOutOfBoundsException JavaDoc {
95     //Este metodo no es implementado porque no se utiliza.
96
throw new NoSuchMethodError JavaDoc();
97   }
98
99   public Collection JavaDoc getRowValues(int i) throws IndexOutOfBoundsException JavaDoc {
100     //Este metodo no es implementado porque no se utiliza.
101
throw new NoSuchMethodError JavaDoc();
102   }
103
104   public void updateValueAt(int i, int i1, Object JavaDoc object) throws IndexOutOfBoundsException JavaDoc {
105     //Este metodo no es implementado porque no se utiliza.
106
throw new NoSuchMethodError JavaDoc();
107   }
108
109 }
110
Popular Tags