1 /**
2 *
3 */
4 package ar.com.jiji.kaya.reports;
5
6 import ognl.Ognl;
7 import ognl.OgnlException;
8
9 import org.apache.commons.lang.StringUtils;
10
11 import ar.com.jiji.kaya.utils.ValidateUtils;
12
13 /**
14 * Tiene una definicion de un reporte. No tiene el reporte en si, sino donde
15 * ubicarlo en el fs, nombre del reporte, etc. * TODO: documentar y hacer tests
16 *
17 * @author lparra
18 *
19 */
20 public class ReportSpec {
21 private String name;
22
23 private Object dsExtractor;
24
25 private String location;
26
27 private String downloadName;
28
29 private String[] columns;
30
31 protected ReportSpec(String name) {
32 setName(name);
33 }
34
35 public ReportSpec(String name, String dsExtractor, String location)
36 throws ReportException {
37 this(name);
38 setDsExtractor(dsExtractor);
39 setLocation(location);
40 }
41
42 public ReportSpec(String name, String dsExtractor, String location,
43 String downloadName) throws ReportException {
44 this(name, dsExtractor, location);
45 setDownloadName(downloadName);
46 }
47
48 public ReportSpec(String name, String dsExtractor, String location,
49 String downloadName, String[] columns) throws ReportException {
50 this(name, dsExtractor, location, downloadName);
51 setColumns(columns);
52 }
53
54 public String[] getColumns() {
55 return columns;
56 }
57
58 void setColumns(String[] columns) {
59 this.columns = columns;
60 }
61
62 public Object getDsExtractor() {
63 return dsExtractor;
64 }
65
66 void setDsExtractor(String dsExtractor) throws ReportException {
67 ValidateUtils.notNull(dsExtractor);
68 try {
69 this.dsExtractor = Ognl.parseExpression(dsExtractor);
70 } catch (OgnlException e) {
71 throw new ReportException(e);
72 }
73 }
74
75 public String getLocation() {
76 return location;
77 }
78
79 void setLocation(String location) {
80 ValidateUtils.notNull(location);
81 this.location = location;
82 }
83
84 public String getName() {
85 return name;
86 }
87
88 void setName(String name) {
89 ValidateUtils.notNull(name);
90 this.name = name;
91 }
92
93 public String getDownloadName() {
94 return StringUtils.defaultString(downloadName, getName());
95 }
96
97 public void setDownloadName(String downloadName) {
98 ValidateUtils.notNull(downloadName);
99 this.downloadName = downloadName;
100 }
101
102 }