Use image data when recreating databases for testing.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / shared / DataItem.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.io.Serializable;
23 import java.util.Date;
24
25 import org.glom.web.shared.libglom.Field;
26
27 /**
28  * This Data Transfer Object (DTO) is used to send a data item between the client and the server.
29  * 
30  */
31 @SuppressWarnings("serial")
32 public class DataItem implements Serializable {
33
34         private String text;
35         private boolean bool;
36         private double number;
37         private Date date;
38         private byte[] imageData; //This is only used locally to recreate database data.
39         private String imageDataUrl; //This is for use as an <img> or GWT Image URL.
40
41         // TODO: Time
42
43         public DataItem() {
44         }
45
46         public String getText() {
47                 return text;
48         }
49
50         public void setText(final String text) {
51                 this.text = text;
52         }
53
54         public boolean getBoolean() {
55                 return bool;
56         }
57
58         public void setBoolean(final boolean bool) {
59                 this.bool = bool;
60         }
61
62         public double getNumber() {
63                 return number;
64         }
65
66         public void setNumber(final double number) {
67                 this.number = number;
68         }
69
70         public Date getDate() {
71                 return date;
72         }
73
74         public void setDate(final Date date) {
75                 this.date = date;
76         }
77         
78         /** This is not used in DataItem instances that are passed from the server to the client.
79          * This is only used locally to recreate database data.
80          * @param bytes
81          */
82         public void setImageData(final byte[] imageData) {
83                 this.imageData = imageData;
84         }
85         
86         public byte[] getImageData() {
87                 return imageData;
88         }
89
90         public String getImageDataUrl() {
91                 return imageDataUrl;
92                 //For testing: return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
93         }
94
95         public void setImageDataUrl(final String image) {
96                 this.imageDataUrl = image;
97         }
98
99         /** This is used by SelfHoster to get data for a database column.
100          * 
101          * @param type The expected type of the data.
102          * @return The data.
103          */
104         public Object getValue(final Field.GlomFieldType type) {
105                 switch (type) {
106                 case TYPE_BOOLEAN:
107                         return getBoolean();
108                 case TYPE_IMAGE:
109                         return getImageData(); //getImageDataUrl() is for use on the client side only.
110                 case TYPE_NUMERIC:
111                         return getNumber();
112                 case TYPE_TEXT:
113                         return getText();
114                         // TODO: case TYPE_TIME;
115                         // return getTime();
116                 default:
117                         return null;
118                 }
119         }
120
121 }