MentaBean

Rev

Rev 186 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
143 erico 1
package org.mentabean.jdbc;
2
 
3
import static org.mentabean.jdbc.AnsiSQLBeanSession.DEBUG;
4
 
145 erico 5
import java.math.BigDecimal;
143 erico 6
import java.sql.Connection;
7
import java.sql.PreparedStatement;
8
 
144 erico 9
import static junit.framework.Assert.*;
143 erico 10
 
11
import org.junit.Test;
12
import org.mentabean.BeanConfig;
13
import org.mentabean.BeanManager;
14
import org.mentabean.BeanSession;
15
import org.mentabean.DBTypes;
16
import org.mentabean.util.PropertiesProxy;
17
 
18
public class AnotherProxyTest extends AbstractBeanSessionTest {
19
 
20
 
21
        public static class Person {
22
 
23
                private String name;
24
 
25
                public String getName() {
26
                        return name;
27
                }
28
 
29
                public void setName(String name) {
30
                        this.name = name;
31
                }
32
        }
33
 
34
        public static class Customer extends Person {
35
 
36
                private int code;
37
                private Boolean active;
145 erico 38
                private BigDecimal height;
144 erico 39
                private int age;
186 erico 40
                private Type type;
41
                private TypeTwo typeTwo;
143 erico 42
 
43
                public Customer() {
44
                }
45
                public Customer(int code, String name, Boolean active) {
46
                        this.code = code;
47
                        setName(name);
48
                        this.active = active;
49
                }
50
                public Customer(int code) {
51
                        this.code = code;
52
                }
145 erico 53
                public Customer(String name, Boolean active, BigDecimal height) {
143 erico 54
                        setName(name);
55
                        this.active = active;
56
                        this.height = height;
57
                }
58
                public int getCode() {
59
                        return code;
60
                }
61
                public void setCode(int code) {
62
                        this.code = code;
63
                }
64
                public Boolean getActive() {
65
                        return active;
66
                }
67
                public void setActive(Boolean active) {
68
                        this.active = active;
69
                }
145 erico 70
                public BigDecimal getHeight() {
143 erico 71
                        return height;
72
                }
145 erico 73
                public void setHeight(BigDecimal height) {
143 erico 74
                        this.height = height;
75
                }
144 erico 76
                public int getAge() {
77
                        return age;
78
                }
79
                public void setAge(int age) {
80
                        this.age = age;
81
                }
186 erico 82
                public Type getType() {
83
                        return type;
84
                }
85
                public void setType(Type type) {
86
                        this.type = type;
87
                }
88
                public TypeTwo getTypeTwo() {
89
                        return typeTwo;
90
                }
91
                public void setTypeTwo(TypeTwo typeTwo) {
92
                        this.typeTwo = typeTwo;
93
                }
143 erico 94
 
95
        }
96
 
186 erico 97
        public enum Type {
98
 
99
                A, B, C;
100
        }
101
 
102
        public enum TypeTwo {
103
 
104
                A {}, B {}, C {};
105
        }
106
 
143 erico 107
        private BeanManager getBeanManagerCustomer() {
108
 
109
                BeanManager beanManager = new BeanManager();
110
 
111
                Customer customerProxy = PropertiesProxy.create(Customer.class);
112
                BeanConfig customerConfig = new BeanConfig(Customer.class, "customers")
113
                        .pk(customerProxy.getCode(), "idcustomers", DBTypes.AUTOINCREMENT)
114
                        .field(customerProxy.getName(), "name_db", DBTypes.STRING.size(-1))
115
                        .field(customerProxy.getActive(), "active_db", DBTypes.BOOLEAN)
145 erico 116
                        .field(customerProxy.getHeight(), "height_db", DBTypes.BIGDECIMAL)
186 erico 117
                        .field(customerProxy.getAge(), "age_db", DBTypes.INTEGER)
118
                        .field(customerProxy.getType(), DBTypes.ENUMVALUE.from(Type.class).nullable(true))
119
                        .field(customerProxy.getTypeTwo(), DBTypes.ENUMVALUE.from(TypeTwo.class).nullable(true));
143 erico 120
 
121
                //add configurations in beanManager
122
                beanManager.addBeanConfig(customerConfig);
123
 
124
                return beanManager;
125
        }
126
 
127
        @Test
128
        public void test() {
129
 
146 erico 130
                DEBUG = false;
143 erico 131
 
132
                final Connection conn = getConnection();
133
                PreparedStatement stmt = null;
134
 
135
                try {
136
 
137
                        BeanSession session = new H2BeanSession(getBeanManagerCustomer(), conn);
138
                        session.createTables();
144 erico 139
 
143 erico 140
                        //let's play...
145 erico 141
                        Customer c1 = new Customer("Erico", true, new BigDecimal("3.5"));
144 erico 142
                        c1.setAge(22);
187 erico 143
                        c1.setType(Type.A);
144
                        c1.setTypeTwo(TypeTwo.B);
145 erico 145
                        Customer c2 = new Customer("Jessica", true, new BigDecimal("692.894"));
143 erico 146
                        Customer c3 = new Customer("Inactive customer", false, null);
147
                        session.insert(c1);
148
                        session.insert(c2);
149
                        session.insert(c3);
150
 
144 erico 151
                        Customer pxy = PropertiesProxy.create(Customer.class);
143 erico 152
 
153
                        Customer cDB = new Customer(c3.getCode());
144 erico 154
                        session.loadMinus(cDB, pxy.getActive());
155
                        session.loadList(new Customer(), pxy.getName(), pxy.getActive());
143 erico 156
 
187 erico 157
                        c1 = new Customer(c1.getCode());
144 erico 158
                        session.load(c1);
159
                        assertEquals(22, c1.getAge());
187 erico 160
                        assertEquals(Type.A, c1.getType());
161
                        assertEquals(TypeTwo.B, c1.getTypeTwo());
144 erico 162
 
163
                        Customer upd = new Customer(c1.getCode());
164
                        upd.setName("Erico KL");
165
                        session.update(upd, pxy.getHeight(), "age");
166
 
167
                        session.load(upd);
168
                        assertNull(upd.getHeight());
169
                        assertEquals(0, upd.getAge());
170
                        assertNotNull(upd.getActive());
171
 
143 erico 172
                } catch (Exception e) {
173
 
174
                        throw new RuntimeException(e);
175
 
176
                }finally {
177
                        close(stmt);
178
                        close(conn);
179
                }
180
        }
181
 
182
}