annotate src/main/java/de/intevation/lada/util/data/IntegerArrayType.java @ 711:3ec358698b4d

Code style and documentation.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 22 Jul 2015 16:03:03 +0200
parents d067d72e602c
children
rev   line source
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
2 * Software engineering by Intevation GmbH
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
3 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
4 * This file is Free Software under the GNU GPL (v>=3)
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
7 */
653
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.util.data;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10 import java.io.Serializable;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.sql.Array;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import java.sql.Connection;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import java.sql.PreparedStatement;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import java.sql.ResultSet;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import java.sql.SQLException;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import org.hibernate.HibernateException;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import org.hibernate.engine.spi.SessionImplementor;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import org.hibernate.usertype.UserType;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
21 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
22 * Implementation for a new data type in the postgresql/postgis jdbc driver.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
23 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
24 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 653
diff changeset
25 */
653
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 public class IntegerArrayType implements UserType {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 protected static final int SQLTYPE = java.sql.Types.ARRAY;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 public int[] sqlTypes() {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 return new int[] {SQLTYPE};
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 public Class<Integer[]> returnedClass() {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 return Integer[].class;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 public boolean equals(Object x, Object y)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 throws HibernateException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 return x == null ? y == null : x.equals(y);
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 public int hashCode(Object x)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 throws HibernateException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 return x == null ? 0 : x.hashCode();
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 public Object nullSafeGet(
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 ResultSet rs,
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 String[] names,
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 SessionImplementor session,
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 Object owner)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 throws HibernateException, SQLException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 Array array = rs.getArray(names[0]);
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 Integer[] javaArray = (Integer[]) array.getArray();
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 return javaArray;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 public void nullSafeSet(
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 PreparedStatement st,
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 Object value,
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 int index,
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 SessionImplementor session)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 throws HibernateException, SQLException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 Connection connection = st.getConnection();
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 Integer[] castObject = (Integer[]) value;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 Array array = connection.createArrayOf("integer", castObject);
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 st.setArray(index, array);
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 public Object deepCopy(Object value)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 throws HibernateException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 return value == null ? null : ((Integer[]) value).clone();
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 public boolean isMutable() {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 return true;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 public Serializable disassemble(Object value)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 throws HibernateException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 return (Integer[])this.deepCopy(value);
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 public Object assemble(Serializable cached, Object owner)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 throws HibernateException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96 return this.deepCopy(cached);
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 @Override
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100 public Object replace(Object original, Object target, Object owner)
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 throws HibernateException {
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 return original;
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 }
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104
d067d72e602c Implemented new hibernate usertype: integer array; registered new type in dialect.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)