Source Code Cross Referenced for DataSource.java in  » Report » jmagallanes-1.0 » com » calipso » reportgenerator » reportcalculator » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Report » jmagallanes 1.0 » com.calipso.reportgenerator.reportcalculator 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        /*
002:
003:         */
004:        package com.calipso.reportgenerator.reportcalculator;
005:
006:        import com.calipso.reportgenerator.common.LanguageTraslator;
007:        import com.calipso.reportgenerator.common.InfoException;
008:
009:        import java.util.Collection;
010:        import java.util.Vector;
011:        import java.util.Iterator;
012:
013:        /**
014:         * Almacena y permite modificar datos en una matriz de objetos de dos dimensiones.
015:         * Sólo permite introducir valores fila a fila. No permite introducir filas de longitud
016:         * variable.
017:         * El nombre de las columnas tienen que ser objetos de tipo String y no pueden ser valores nulos
018:         * El objeto DataSource se contruye a partir de un número de columnas o a partir de una collection de strings que 
019:         * identifica los nombres de cada columna.
020:         * 
021:         */
022:        public class DataSource implements  IDataSource {
023:
024:            private Vector names;
025:            private Vector rows;
026:            private int columsCount = 0;
027:            private final String COLUMNS_DEFAULT_NAME = "NONAME";
028:
029:            /**
030:             * Inicializa el objeto matriz de dos dimensiones con el número de columnas indicado en el parámetro
031:             * No se indica nombre para las columnas.
032:             * @param columns - número de columnas
033:             * @throws InfoException - Si el número de columnas es <= 0
034:             */
035:            public DataSource(int columns) throws InfoException {
036:                if (columns <= 0) {
037:                    throw new InfoException(
038:                            "INFO - No se puede crear una matriz DataSource. "
039:                                    + columns + "<=0");
040:                } else {
041:                    this .columsCount = columns;
042:                    this .names = this .generateVector(this .COLUMNS_DEFAULT_NAME,
043:                            columns);
044:                    this .rows = new Vector(this .columsCount);
045:                }
046:            }
047:
048:            /**
049:             * Inicializa el objeto matriz de dos dimensiones con el mismo número de columnas
050:             * que el tamaño de la collection de nombres.
051:             * El nombre de las columnas es el que se indica en el parámetro names manteniendo el orden.
052:             * @param names - Nombres de las columnas
053:             * @throws InfoException - Si la colección de nombre es nula, contiene elementos nulos o no contiene objetos de tipo String
054:             */
055:            public DataSource(Collection names) throws InfoException {
056:                if (names == null) {
057:                    throw new InfoException(
058:                            "INFO - No se puede construir una matriz DataSource a partir de una colección de nombres nula");
059:                } else if (this .namesEmpty(names)) {
060:                    throw new InfoException(
061:                            "INFO - No se puede construir una matriz DataSource a partir de un names vacío");
062:                } else if (this .namesWithNullElements(names)) {
063:                    throw new InfoException(
064:                            "INFO - No se puede construir una matriz DataSource con elementos null en los nombres");
065:                } else if (this .namesWithNoStringElements(names)) {
066:                    throw new InfoException(
067:                            "INFO - No se puede construir una matriz DataSource con nombres que no son de tipo String");
068:                } else {
069:                    this .columsCount = names.size();
070:                    this .names = new Vector(names);
071:                    this .rows = new Vector(this .columsCount);
072:                }
073:
074:            }
075:
076:            /**
077:             * Devuelve el número de filas de esta matriz de objetos
078:             * @return número de filas
079:             */
080:            public int getRowCount() {
081:                return this .rows.size();
082:            }
083:
084:            /**
085:             * Devuelve el número de columnas de esta matriz de objetos
086:             * @return número de columnas
087:             */
088:            public int getColumCount() {
089:                return this .columsCount;
090:            }
091:
092:            /**
093:             * Devuelve el nombre de la columna
094:             * @param colum - número de columna
095:             * @return Nombre de la columna
096:             * @throws IndexOutOfBoundsException - Si la posición solicitada no se encuadra en las dimensiones de la matriz
097:             */
098:            public String getColumName(int colum)
099:                    throws IndexOutOfBoundsException {
100:                if (!this .validateColumNumber(colum)) {
101:                    throw new IndexOutOfBoundsException(
102:                            "INFO - La columna "
103:                                    + colum
104:                                    + " esta fuera de las coordenadas de este DataSource. Rango permitido [0.."
105:                                    + (this .columsCount - 1) + "]");
106:                } else {
107:                    return this .names.elementAt(colum).toString();
108:                }
109:            }
110:
111:            /**
112:             * Asigna un nombre a una columna
113:             * @param colum - número de columna
114:             * @param name - nombre que se asigna a la columna
115:             * @throws IndexOutOfBoundsException - Si la posición solicitada no se encuadra en las dimensiones de la matriz
116:             * @throws InfoException - Si el nombre que se desea asignar a la columna es null
117:             */
118:            public void setColumName(int colum, String name)
119:                    throws IndexOutOfBoundsException, InfoException {
120:                if (!this .validateColumNumber(colum)) {
121:                    throw new IndexOutOfBoundsException(
122:                            "INFO - La columna "
123:                                    + colum
124:                                    + " esta fuera de las coordenadas de este DataSource. Rango permitido [0.."
125:                                    + (this .columsCount - 1) + "]");
126:                } else if (name == null) {
127:                    throw new InfoException(
128:                            "INFO - Las columnas no permiten valores nulos");
129:                } else {
130:                    this .names.setElementAt(name, colum);
131:                }
132:            }
133:
134:            /**
135:             * Devuelve el objeto posicionado en la fila y columna especificada
136:             * @param row - Número de fila
137:             * @param colum - Número de columna
138:             * @return Object posicionado en la fila row y columna colum
139:             * @throws IndexOutOfBoundsException - Si la posición solicitada no se encuadra en las dimensiones de la matriz
140:             */
141:            public Object getValueAt(int row, int colum)
142:                    throws IndexOutOfBoundsException {
143:                if (this .validateRowNumber(row)
144:                        && this .validateColumNumber(colum)) {
145:                    return ((Vector) this .rows.elementAt(row)).elementAt(colum);
146:                } else {
147:                    throw new IndexOutOfBoundsException(
148:                            "INFO - La fila "
149:                                    + row
150:                                    + " y la columna "
151:                                    + colum
152:                                    + " esta fuera de las coordenadas de este DataSource. Rango permitido [0.."
153:                                    + (this .getRowCount() - 1) + "],[0.."
154:                                    + (this .columsCount - 1) + "]");
155:                }
156:            }
157:
158:            /**
159:             * Devuelve los objetos posicionados en la columna especificada
160:             * @param colum - número de columna
161:             * @return Collection con los objetos seleccionados
162:             * @throws IndexOutOfBoundsException - Si la posición solicitada no se encuadra en las dimensiones de la matriz
163:             */
164:            public Collection getColumValues(int colum)
165:                    throws IndexOutOfBoundsException {
166:                if (this .validateColumNumber(colum)) {
167:                    Vector data;
168:                    Vector values = new Vector();
169:
170:                    for (int i = 0; i < this .rows.size(); i++) {
171:                        data = (Vector) this .rows.elementAt(i);
172:                        values.addElement(data.elementAt(colum));
173:                    }
174:
175:                    return values;
176:                } else {
177:                    throw new IndexOutOfBoundsException(
178:                            "INFO - La columna "
179:                                    + colum
180:                                    + " esta fuera de las coordenadas de este DataSource. Rango permitido [0.."
181:                                    + (this .columsCount - 1) + "]");
182:                }
183:            }
184:
185:            /**
186:             * Devuelve los objetos posicionados en la columna especificada
187:             * @param row - número de fila
188:             * @return Collection con los objetos seleccionados
189:             * @throws IndexOutOfBoundsException - Si la posición solicitada no se encuadra en las dimensiones de la matriz
190:             */
191:            public Collection getRowValues(int row)
192:                    throws IndexOutOfBoundsException {
193:                if (this .validateRowNumber(row)) {
194:                    return (Vector) this .rows.elementAt(row);
195:                } else {
196:                    throw new IndexOutOfBoundsException(
197:                            "INFO - La fila "
198:                                    + row
199:                                    + " esta fuera de las coordenadas de este DataSource. Rango permitido [0.."
200:                                    + (this .getRowCount() - 1) + "]");
201:                }
202:            }
203:
204:            /**
205:             * Modifica el objeto posicionado en la coordenada solicitada
206:             * @param row - número de fila
207:             * @param colum - número de columna
208:             * @param newValue - nuevo valor a posicionar en la coordenada solicitada
209:             * @throws IndexOutOfBoundsException - Si la posición solicitada no se encuadra en las dimensiones de la matriz
210:             */
211:            public void updateValueAt(int row, int colum, Object newValue)
212:                    throws IndexOutOfBoundsException {
213:                if (this .validateRowNumber(row)
214:                        && this .validateColumNumber(colum)) {
215:                    ((Vector) this .rows.elementAt(row)).setElementAt(newValue,
216:                            colum);
217:                } else {
218:                    throw new IndexOutOfBoundsException(
219:                            "INFO - La fila "
220:                                    + row
221:                                    + " y la columna "
222:                                    + colum
223:                                    + " esta fuera de las coordenadas de este DataSource. Rango permitido [0.."
224:                                    + (this .getRowCount() - 1) + "],[0.."
225:                                    + (this .columsCount - 1) + "]");
226:                }
227:            }
228:
229:            /**
230:             * Añade una nueva fila a la matriz
231:             * @param row - Fila a insertar
232:             * @throws InfoException - Si la fila que se desea introducir no tiene el mismo número de columnas que la matriz
233:             */
234:            public void addRow(Collection row) throws InfoException {
235:                if (row == null) {
236:                    throw new InfoException(LanguageTraslator.traslate("380"));
237:                } else if (row.size() != this .columsCount) {
238:                    throw new InfoException(LanguageTraslator.traslate("381")
239:                            + this .columsCount
240:                            + LanguageTraslator.traslate("382") + row.size());
241:                } else {
242:                    this .rows.addElement(new Vector(row));
243:                }
244:            }
245:
246:            /**
247:             * Genera un vector de tamaño elements con elementos value
248:             * @param value - Valor que se quiere replicar en el vector
249:             * @param elements - número de elementos que se desea que tenga el vector
250:             * @return Vector de tamañan elements con valores value
251:             */
252:            private Vector generateVector(Object value, int elements) {
253:                Vector vector = new Vector();
254:
255:                for (int i = 0; i < elements; i++) {
256:                    vector.addElement(value);
257:                }
258:                return vector;
259:            }
260:
261:            /**
262:             * Valida que el número de columna esté en el rango permitido.
263:             * El rango deberá estar comprendido entre [1..n]
264:             * @param number - número de columna
265:             * @return true si el número de columna es válido. False en caso contrario
266:             */
267:            private boolean validateColumNumber(int number) {
268:                if ((number < 0) || (number >= this .columsCount)) {
269:                    return false;
270:                } else {
271:                    return true;
272:                }
273:            }
274:
275:            /**
276:             * Valida que el número de fila esté en el rango permitido.
277:             * El rango deberá estar comprendido entre [1..n]
278:             * @param number - número de fila
279:             * @return true si el número de fila es válido. False en caso contrario
280:             */
281:            private boolean validateRowNumber(int number) {
282:                if ((number < 0) || (number >= this .rows.size())) {
283:                    return false;
284:                } else {
285:                    return true;
286:                }
287:            }
288:
289:            /**
290:             * Valida que la collection no sea vacía
291:             * @param coll - Collection a evaluar
292:             * @return true si es vacia, false en caso contrario
293:             */
294:            private boolean namesEmpty(Collection coll) {
295:                return coll.isEmpty();
296:            }
297:
298:            /**
299:             * Valida que la collection de nombres no contiene elementos nulos.
300:             * @param coll - Collection a evaluar
301:             * @return true si contiene elementos nulos, false en caso contrario.
302:             */
303:            private boolean namesWithNullElements(Collection coll) {
304:                boolean withNulls = false;
305:
306:                Iterator it = coll.iterator();
307:
308:                while ((it.hasNext()) && (!withNulls)) {
309:                    if (it.next() == null) {
310:                        withNulls = true;
311:                    }
312:                }
313:                return withNulls;
314:            }
315:
316:            /**
317:             * Valida que la collection tenga elementos de tipo String.
318:             * @param coll - Collection a evaluar
319:             * @return true si la collection contiene objetos que no sean de tipo String, false si todos son de tipo String
320:             */
321:            private boolean namesWithNoStringElements(Collection coll) {
322:                boolean withNoStringElements = false;
323:
324:                Iterator it = coll.iterator();
325:
326:                while ((it.hasNext()) && (!withNoStringElements)) {
327:                    if (!(it.next() instanceof  String)) {
328:                        withNoStringElements = true;
329:                    }
330:                }
331:                return withNoStringElements;
332:            }
333:
334:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.