Replace deprecated DOM.setElementAttribute().
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / shared / TypedDataItem.java
1 /*
2  * Copyright (C) 2011 Openismus GmbH
3  *
4  * This file is part of GWT-Glom.
5  *
6  * GWT-Glom is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GWT-Glom.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 package org.glom.web.shared;
21
22 import java.util.Date;
23
24 import org.glom.web.shared.libglom.Field.GlomFieldType;
25
26 /**
27  * This specialization of DataItem can hold a primary key item.
28  */
29 @SuppressWarnings("serial")
30 public class TypedDataItem extends DataItem {
31         private boolean empty = true;
32         private GlomFieldType type = GlomFieldType.TYPE_INVALID;
33         private String unknown = null;
34
35         public TypedDataItem() {
36         }
37
38         public boolean isEmpty() {
39                 return empty;
40         }
41         
42         public boolean isUnknownType() {
43                 return (type == GlomFieldType.TYPE_INVALID);
44         }
45
46         /** Get the value.
47          * 
48          * This is a generic alternative to getNumber(), getText(), etc.
49          * @return
50          */
51         public Object getValue() {
52                 switch(type) {
53                 case TYPE_NUMERIC:
54                         return getNumber();
55                 case TYPE_TEXT:
56                         return getText();
57                 case TYPE_DATE:
58                         return getDate();
59                 //TODO: case TYPE_TIME:
60                 //      return getTime();
61                 case TYPE_BOOLEAN:
62                         return getBoolean();
63                 case TYPE_IMAGE:
64                         return getImageData();
65                 case TYPE_INVALID:
66                         return "value-with-invalid-type";
67                 default:
68                         return "value-with-unknown-type";
69                 }
70         }
71
72         //TODO: Why is this override necessary?
73         /*
74          * (non-Javadoc)
75          * 
76          * @see org.glom.web.shared.DataItem#setBoolean(boolean)
77          */
78         @Override
79         public void setBoolean(final boolean bool) {
80                 this.empty = false;
81                 this.type = GlomFieldType.TYPE_BOOLEAN;
82                 super.setBoolean(bool);
83         }
84
85         /*
86          * (non-Javadoc)
87          * 
88          * @see org.glom.web.shared.DataItem#setNumber(double)
89          */
90         @Override
91         public void setNumber(final double number) {
92                 this.empty = false;
93                 this.type = GlomFieldType.TYPE_NUMERIC;
94                 super.setNumber(number);
95         }
96
97         /*
98          * (non-Javadoc)
99          * 
100          * @see org.glom.web.shared.DataItem#setText(java.lang.String)
101          */
102         @Override
103         public void setText(final String text) {
104                 this.empty = false;
105                 this.type = GlomFieldType.TYPE_TEXT;
106                 super.setText(text);
107         }
108         
109         /*
110          * (non-Javadoc)
111          * 
112          * @see org.glom.web.shared.DataItem#setNumber(double)
113          */
114         @Override
115         public void setDate(final Date date) {
116                 this.empty = false;
117                 this.type = GlomFieldType.TYPE_DATE;
118                 super.setDate(date);
119         }
120
121         public void setImageData(final byte[] imageData) {
122                 this.empty = false;
123                 this.type = GlomFieldType.TYPE_IMAGE;
124                 super.setImageData(imageData);
125         }
126
127         public void setImageDataUrl(final String image) {
128                 this.empty = false;
129                 this.type = GlomFieldType.TYPE_IMAGE;
130                 super.setImageDataUrl(image);
131         }
132         
133
134         /*
135          * (non-Javadoc)
136          * 
137          * @see org.glom.web.shared.DataItem#setText(java.lang.String)
138          */
139         public void setUnknown(final String value) {
140                 this.empty = false;
141                 this.type = GlomFieldType.TYPE_INVALID;
142                 this.unknown = value;
143         }
144
145         public String getUnknown() {
146                 return unknown;
147         }
148
149         public GlomFieldType getType() {
150                 return type;
151         }
152
153 }