diff --git a/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java b/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java index 856d321bedd68f7e36b34bb4ea1cccf77d4f4d8a..bf95d87cb7125c4dee28dc803170715d617b5e8b 100755 --- a/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java +++ b/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java @@ -25,7 +25,7 @@ import javax.ws.rs.core.Application; /** * Responsible for adding REST resources - * @copyright 2016-2021 {@link http://www.nibio.no NIBIO} + * @copyright 2016-2021 {@link https://www.nibio.no NIBIO} * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @ApplicationPath("/rest/") @@ -69,8 +69,7 @@ public class VIPSLogicApplication extends Application * given list with all resources defined in the project. */ private void addRestResourceClasses(Set<Class<?>> resources) { - resources.add(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class); - resources.add(com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.class); + resources.add(com.webcohesion.enunciate.rt.EnunciateJaxbContextResolver.class); resources.add(no.nibio.vips.logic.messaging.sms.SMSHandlingService.class); resources.add(no.nibio.vips.logic.modules.applefruitmoth.AppleFruitMothService.class); diff --git a/src/main/java/no/nibio/vips/logic/entity/CropCategory.java b/src/main/java/no/nibio/vips/logic/entity/CropCategory.java index b4c31d5a166d4b07fee65dd2b3f724bbba09db74..dcaea235487d93194c376aa2a6a934dd568241f3 100755 --- a/src/main/java/no/nibio/vips/logic/entity/CropCategory.java +++ b/src/main/java/no/nibio/vips/logic/entity/CropCategory.java @@ -39,8 +39,6 @@ import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import no.nibio.vips.logic.util.IntegerArrayUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -49,7 +47,6 @@ import org.hibernate.annotations.TypeDefs; @Entity @Table(name = "crop_category") @XmlRootElement -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) @NamedQueries({ @NamedQuery(name = "CropCategory.findAll", query = "SELECT c FROM CropCategory c"), @NamedQuery(name = "CropCategory.findByCropCategoryId", query = "SELECT c FROM CropCategory c WHERE c.cropCategoryId = :cropCategoryId"), @@ -71,7 +68,7 @@ public class CropCategory implements Serializable { private String defaultName; @OneToMany(cascade = CascadeType.ALL, mappedBy = "cropCategoryId", fetch = FetchType.EAGER) private Set<CropCategoryLocal> cropCategoryLocalSet; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "crop_organism_ids") private Integer[] cropOrganismIds; @Column(name = "organization_id") diff --git a/src/main/java/no/nibio/vips/logic/entity/CropPest.java b/src/main/java/no/nibio/vips/logic/entity/CropPest.java index c8250cdd1b3b4eec9e248140bd2229209c2b3d92..7b72b1711495e0b5492cd1b503bb1147aedf2211 100755 --- a/src/main/java/no/nibio/vips/logic/entity/CropPest.java +++ b/src/main/java/no/nibio/vips/logic/entity/CropPest.java @@ -31,8 +31,6 @@ import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlRootElement; import no.nibio.vips.logic.util.IntegerArrayUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -40,7 +38,6 @@ import org.hibernate.annotations.TypeDefs; */ @Entity @Table(name = "crop_pest") -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) @XmlRootElement @NamedQueries({ @NamedQuery(name = "CropPest.findAll", query = "SELECT c FROM CropPest c"), @@ -56,7 +53,7 @@ public class CropPest implements Serializable { @NotNull @Column(name = "crop_organism_id") private Integer cropOrganismId; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "pest_organism_ids") private Integer[] pestOrganismIds; @Column(name = "include_all_child_crops") diff --git a/src/main/java/no/nibio/vips/logic/entity/ForecastConfiguration.java b/src/main/java/no/nibio/vips/logic/entity/ForecastConfiguration.java index b00ec4228136472734f9508e77187db820776b47..6b800a1586ddaa5007d4d5b89b0e7e1a9e6a4dbf 100755 --- a/src/main/java/no/nibio/vips/logic/entity/ForecastConfiguration.java +++ b/src/main/java/no/nibio/vips/logic/entity/ForecastConfiguration.java @@ -47,8 +47,6 @@ import javax.persistence.Transient; import no.nibio.vips.logic.util.IntegerArrayUserType; import no.nibio.vips.util.WeatherUtil; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2014-2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -57,7 +55,6 @@ import org.hibernate.annotations.TypeDefs; @Entity @Table(name = "forecast_configuration") @XmlRootElement -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) @NamedQueries({ @NamedQuery(name = "ForecastConfiguration.findAll", query = "SELECT f FROM ForecastConfiguration f WHERE f.isPrivate = FALSE"), @NamedQuery(name = "ForecastConfiguration.findByForecastConfigurationId", query = "SELECT f FROM ForecastConfiguration f WHERE f.forecastConfigurationId = :forecastConfigurationId"), @@ -125,7 +122,7 @@ public class ForecastConfiguration implements Serializable, Comparable { @Column(name = "is_private") private Boolean isPrivate; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "grid_weather_station_point_of_interest_ids") private Integer[] gridWeatherStationPointOfInterestIds; @@ -288,7 +285,7 @@ public class ForecastConfiguration implements Serializable, Comparable { } /** - * @param organismiId the organismiId to set + * @param cropOrganismId the organismiId to set */ public void setCropOrganismId(Organism cropOrganismId) { this.cropOrganismId = cropOrganismId; diff --git a/src/main/java/no/nibio/vips/logic/entity/Message.java b/src/main/java/no/nibio/vips/logic/entity/Message.java index 4003789ab76c60fb7a18fd50ee0cc91cf5409147..566c2bf37b954a9efaef753a774cc82422fa7eec 100755 --- a/src/main/java/no/nibio/vips/logic/entity/Message.java +++ b/src/main/java/no/nibio/vips/logic/entity/Message.java @@ -46,8 +46,6 @@ import javax.persistence.Transient; import javax.xml.bind.annotation.XmlRootElement; import no.nibio.vips.logic.util.IntegerArrayUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2014 <a href="http://www.nibio.no/">NIBIO</a> @@ -56,7 +54,6 @@ import org.hibernate.annotations.TypeDefs; @Entity @Table(name = "message") @XmlRootElement -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) @NamedQueries({ @NamedQuery(name = "Message.findAll", query = "SELECT m FROM Message m"), @NamedQuery(name = "Message.findByMessageId", query = "SELECT m FROM Message m WHERE m.messageId = :messageId"), @@ -277,7 +274,7 @@ public class Message implements Serializable { /** * @return the cropCategoryIds */ - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name="crop_category_ids") public Integer[] getCropCategoryIds() { return cropCategoryIds; diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java index d34522ac17e7bb69a2f4955fd339d0c5dd5798d7..6f50d16bfd1e4aaec7a9a2fb97c79540e2413597 100755 --- a/src/main/java/no/nibio/vips/logic/entity/Observation.java +++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java @@ -52,8 +52,6 @@ import no.nibio.vips.logic.entity.rest.ObservationListItem; import no.nibio.vips.logic.util.StringJsonUserType; import no.nibio.vips.observationdata.ObservationDataSchema; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -62,7 +60,6 @@ import org.hibernate.annotations.TypeDefs; @Entity @Table(name = "observation") @XmlRootElement -@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)}) @NamedQueries({ @NamedQuery(name = "Observation.findAll", query = "SELECT o FROM Observation o"), @NamedQuery(name = "Observation.findByObservationId", query = "SELECT o FROM Observation o WHERE o.observationId = :observationId"), @@ -438,7 +435,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse /** * @return the observationData */ - @Type(type = "StringJsonObject") + @Type(StringJsonUserType.class) @Column(name = "observation_data") @Override public String getObservationData() { diff --git a/src/main/java/no/nibio/vips/logic/entity/UserUuidPK.java b/src/main/java/no/nibio/vips/logic/entity/UserUuidPK.java index b5a634dd94fa955ed175babd2b9392fa4c58201c..e0363d1b4ba8148df04c213354a1eb5cb230ad3f 100755 --- a/src/main/java/no/nibio/vips/logic/entity/UserUuidPK.java +++ b/src/main/java/no/nibio/vips/logic/entity/UserUuidPK.java @@ -35,7 +35,6 @@ public class UserUuidPK implements Serializable { @Basic(optional = false) @NotNull @Column(name = "user_uuid") - @org.hibernate.annotations.Type(type="pg-uuid") // Ugly implementation specific hack private UUID userUuid; @Basic(optional = false) @NotNull diff --git a/src/main/java/no/nibio/vips/logic/messaging/ForecastEventNotificationSubscription.java b/src/main/java/no/nibio/vips/logic/messaging/ForecastEventNotificationSubscription.java index 90dfb547c58da6967fabc5882e5ee6d3247fba46..eab276aa79d05385f5378e0d60893499cb1e6d7f 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/ForecastEventNotificationSubscription.java +++ b/src/main/java/no/nibio/vips/logic/messaging/ForecastEventNotificationSubscription.java @@ -27,8 +27,6 @@ import javax.persistence.Id; import javax.persistence.Table; import no.nibio.vips.logic.util.IntegerArrayUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -36,7 +34,6 @@ import org.hibernate.annotations.TypeDefs; */ @Entity @Table(name = "forecast_event_notification_subscription", schema = "messaging") -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) public class ForecastEventNotificationSubscription { @Id @@ -47,11 +44,11 @@ public class ForecastEventNotificationSubscription { @Column(name = "universal_message_format_id") private Integer universalMessageFormatId; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "weather_station_ids") private Integer[] weatherStationIds; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "crop_category_ids") private Integer[] cropCategoryIds; diff --git a/src/main/java/no/nibio/vips/logic/messaging/MessageNotificationSubscription.java b/src/main/java/no/nibio/vips/logic/messaging/MessageNotificationSubscription.java index f56bae330be54cdf3169f9175f7daf651c132636..7bb4a8b1e5a84248cc65ebdcd6221a2f0802f279 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/MessageNotificationSubscription.java +++ b/src/main/java/no/nibio/vips/logic/messaging/MessageNotificationSubscription.java @@ -28,8 +28,6 @@ import javax.persistence.Id; import javax.persistence.Table; import no.nibio.vips.logic.util.IntegerArrayUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -37,7 +35,6 @@ import org.hibernate.annotations.TypeDefs; */ @Entity @Table(name = "message_notification_subscription", schema = "messaging") -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) public class MessageNotificationSubscription implements Serializable { @Id @@ -48,11 +45,11 @@ public class MessageNotificationSubscription implements Serializable { @Column(name = "universal_message_format_id") private Integer universalMessageFormatId; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "message_tag_ids") private Integer[] messageTagIds; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "crop_category_ids") private Integer[] cropCategoryIds; diff --git a/src/main/java/no/nibio/vips/logic/messaging/ObservationNotificationSubscription.java b/src/main/java/no/nibio/vips/logic/messaging/ObservationNotificationSubscription.java index 97d3d6e0b5ffc6443b6bde094172bf430c69cded..4bd02e336c86e29b099fe8bd25c807410098d8e2 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/ObservationNotificationSubscription.java +++ b/src/main/java/no/nibio/vips/logic/messaging/ObservationNotificationSubscription.java @@ -28,8 +28,6 @@ import javax.persistence.Id; import javax.persistence.Table; import no.nibio.vips.logic.util.IntegerArrayUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -37,7 +35,6 @@ import org.hibernate.annotations.TypeDefs; */ @Entity @Table(name = "observation_notification_subscription", schema = "messaging") -@TypeDefs( {@TypeDef( name= "IntegerArray", typeClass = IntegerArrayUserType.class)}) public class ObservationNotificationSubscription implements Serializable { @Id @@ -48,7 +45,7 @@ public class ObservationNotificationSubscription implements Serializable { @Column(name = "universal_message_format_id") private Integer universalMessageFormatId; - @Type(type = "IntegerArray") + @Type(IntegerArrayUserType.class) @Column(name = "crop_category_ids") private Integer[] cropCategoryIds; diff --git a/src/main/java/no/nibio/vips/logic/messaging/UniversalMessage.java b/src/main/java/no/nibio/vips/logic/messaging/UniversalMessage.java index c4c4725c95612442bb7feb4f4eed2ac2cfeebb37..60b9d803a36113668b7fbe640988b5aeccb4183b 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/UniversalMessage.java +++ b/src/main/java/no/nibio/vips/logic/messaging/UniversalMessage.java @@ -49,8 +49,6 @@ import javax.xml.bind.annotation.XmlRootElement; import com.ibm.icu.util.ULocale; import no.nibio.vips.logic.util.StringJsonUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -59,7 +57,6 @@ import org.hibernate.annotations.TypeDefs; @Entity @Table(name = "universal_message", schema = "messaging") @XmlRootElement -@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)}) @NamedQueries({ @NamedQuery(name = "UniversalMessage.findAll", query = "SELECT u FROM UniversalMessage u"), @NamedQuery(name = "UniversalMessage.findByUniversalMessageId", query = "SELECT u FROM UniversalMessage u WHERE u.universalMessageId = :universalMessageId"), @@ -77,11 +74,11 @@ public class UniversalMessage implements Serializable { //@Column(name = "distribution_list", columnDefinition = "json") //@Convert(converter = PostgresJSONStringConverter.class) // Documentation on StackOverflow: http://stackoverflow.com/questions/15974474/mapping-postgresql-json-column-to-hibernate-value-type - @Type(type = "StringJsonObject") + @Type(StringJsonUserType.class) @Column(name = "distribution_list") private String distributionList; - @Type(type = "StringJsonObject") + @Type(StringJsonUserType.class) @Column(name = "message_local_versions") private String messageLocalVersions; diff --git a/src/main/java/no/nibio/vips/logic/util/IntegerArrayUserType.java b/src/main/java/no/nibio/vips/logic/util/IntegerArrayUserType.java index 876cb12003bdd0440c2fcaec1a49202f8346009b..f0db445e451099cb1522c6ddd3026f23a9798e7e 100755 --- a/src/main/java/no/nibio/vips/logic/util/IntegerArrayUserType.java +++ b/src/main/java/no/nibio/vips/logic/util/IntegerArrayUserType.java @@ -36,7 +36,7 @@ import org.hibernate.usertype.UserType; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ -public class IntegerArrayUserType implements UserType { +public class IntegerArrayUserType implements UserType<Integer[]> { /** * Return the SQL type codes for the columns mapped by this type. The @@ -46,10 +46,12 @@ public class IntegerArrayUserType implements UserType { * @see java.sql.Types */ @Override - public int[] sqlTypes() { - return new int[] { Types.ARRAY }; + public int getSqlType() { + return Types.ARRAY; } + + /** * The class returned by <tt>nullSafeGet()</tt>. * @@ -69,7 +71,7 @@ public class IntegerArrayUserType implements UserType { * @return boolean */ @Override - public boolean equals(Object x, Object y) throws HibernateException { + public boolean equals(Integer[] x, Integer[] y) throws HibernateException { if( x== null){ @@ -83,68 +85,14 @@ public class IntegerArrayUserType implements UserType { * Get a hashcode for the instance, consistent with persistence "equality" */ @Override - public int hashCode(Object x) throws HibernateException { + public int hashCode(Integer[] x) throws HibernateException { return x.hashCode(); } - /** - * Retrieve an instance of the mapped class from a JDBC resultset. Implementors - * should handle possibility of null values. - * - * @param rs a JDBC result set - * @param names the column names - * @param session - * @param owner the containing entity @return Object - * @throws org.hibernate.HibernateException - * - * @throws java.sql.SQLException - */ - //@Override - public Object nullSafeGet( - ResultSet rs, - String[] names, - SessionImplementor session, - Object owner) throws HibernateException, SQLException { - if (rs.wasNull()) { - return null; - } - try - { - Integer[] array = (Integer[]) rs.getArray(names[0]).getArray(); - return array; - } - catch(NullPointerException ex) - { - return new Integer[0]; - } - } - /** - * Write an instance of the mapped class to a prepared statement. Implementors - * should handle possibility of null values. A multi-column type should be written - * to parameters starting from <tt>index</tt>. - * - * @param st a JDBC prepared statement - * @param value the object to write - * @param index statement parameter index - * @param session - * @throws org.hibernate.HibernateException - * - * @throws java.sql.SQLException - */ - //@Override - public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session) throws HibernateException, SQLException { - if (value == null) { - st.setNull(index, Types.OTHER); - return; - } - Integer[] castObject = (Integer[]) value; - Array array = session.connection().createArrayOf("integer", castObject); // The postgres array data type - st.setArray(index, array); - } /** * Return a deep copy of the persistent state, stopping at entities and at @@ -155,7 +103,7 @@ public class IntegerArrayUserType implements UserType { * @return Object a copy */ @Override - public Object deepCopy(Object value) throws HibernateException { + public Integer[] deepCopy(Integer[] value) throws HibernateException { return value; } @@ -182,7 +130,7 @@ public class IntegerArrayUserType implements UserType { * */ @Override - public Serializable disassemble(Object value) throws HibernateException { + public Serializable disassemble(Integer[] value) throws HibernateException { return (Integer[])this.deepCopy( value); } @@ -197,8 +145,8 @@ public class IntegerArrayUserType implements UserType { * */ @Override - public Object assemble(Serializable cached, Object owner) throws HibernateException { - return this.deepCopy( cached); + public Integer[] assemble(Serializable cached, Object owner) throws HibernateException { + return this.deepCopy( (Integer[]) cached); } /** @@ -213,7 +161,7 @@ public class IntegerArrayUserType implements UserType { * @return the value to be merged */ @Override - public Object replace(Object original, Object target, Object owner) throws HibernateException { + public Integer[] replace(Integer[] original, Integer[] target, Object owner) throws HibernateException { return original; } @@ -222,20 +170,20 @@ public class IntegerArrayUserType implements UserType { * should handle possibility of null values. * * @param rs a JDBC result set - * @param strings the column names + * @param position position in row * @param ssci * @throws org.hibernate.HibernateException * * @throws java.sql.SQLException */ @Override - public Object nullSafeGet(ResultSet rs, String[] strings, SharedSessionContractImplementor ssci, Object o) throws HibernateException, SQLException { + public Integer[] nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor ssci, Object o) throws HibernateException, SQLException { if (rs.wasNull()) { return null; } try { - Integer[] array = (Integer[]) rs.getArray(strings[0]).getArray(); + Integer[] array = (Integer[]) rs.getArray(position).getArray(); return array; } catch(NullPointerException ex) @@ -258,14 +206,14 @@ public class IntegerArrayUserType implements UserType { * @throws java.sql.SQLException */ @Override - public void nullSafeSet(PreparedStatement ps, Object o, int i, SharedSessionContractImplementor ssci) throws HibernateException, SQLException { + public void nullSafeSet(PreparedStatement ps, Integer[] o, int i, SharedSessionContractImplementor ssci) throws HibernateException, SQLException { if (o == null) { ps.setNull(i, Types.OTHER); return; } Integer[] castObject = (Integer[]) o; - Array array = ssci.connection().createArrayOf("integer", castObject); // The postgres array data type + Array array = ssci.getJdbcConnectionAccess().obtainConnection().createArrayOf("integer", castObject); // The postgres array data type ps.setArray(i, array); } diff --git a/src/main/java/no/nibio/vips/logic/util/JsonPostgreSQLDialect.java b/src/main/java/no/nibio/vips/logic/util/JsonPostgreSQLDialect.java deleted file mode 100755 index ec41d5de02b55b86c9b203fbf48c96c598c86b30..0000000000000000000000000000000000000000 --- a/src/main/java/no/nibio/vips/logic/util/JsonPostgreSQLDialect.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2015 NIBIO <http://www.nibio.no/>. - * - * This file is part of VIPSLogic. - * VIPSLogic is free software: you can redistribute it and/or modify - * it under the terms of the NIBIO Open Source License as published by - * NIBIO, either version 1 of the License, or (at your option) any - * later version. - * - * VIPSLogic is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * NIBIO Open Source License for more details. - * - * You should have received a copy of the NIBIO Open Source License - * along with VIPSLogic. If not, see <http://www.nibio.no/licenses/>. - * - */ - -package no.nibio.vips.logic.util; - -import java.sql.Types; -import org.hibernate.dialect.PostgreSQL9Dialect; - -/** - * @copyright 2015 <a href="http://www.nibio.no/">NIBIO</a> - * @author Tor-Einar Skog <tor-einar.skog@nibio.no> - */ -public class JsonPostgreSQLDialect extends PostgreSQL9Dialect{ - public JsonPostgreSQLDialect() { - - super(); - - this.registerColumnType(Types.JAVA_OBJECT, "json"); - } -} diff --git a/src/main/java/no/nibio/vips/logic/util/StringJsonUserType.java b/src/main/java/no/nibio/vips/logic/util/StringJsonUserType.java index 8dffa05bb6bcc34fa5552cabc7337636d2f94475..03d493062ca2f327f4f941571a84d01b20660a76 100755 --- a/src/main/java/no/nibio/vips/logic/util/StringJsonUserType.java +++ b/src/main/java/no/nibio/vips/logic/util/StringJsonUserType.java @@ -34,7 +34,7 @@ import org.hibernate.usertype.UserType; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ -public class StringJsonUserType implements UserType { +public class StringJsonUserType implements UserType<String> { /** * Return the SQL type codes for the columns mapped by this type. The @@ -44,8 +44,8 @@ public class StringJsonUserType implements UserType { * @see java.sql.Types */ @Override - public int[] sqlTypes() { - return new int[] { Types.JAVA_OBJECT}; + public int getSqlType() { + return Types.JAVA_OBJECT; } /** @@ -67,7 +67,7 @@ public class StringJsonUserType implements UserType { * @return boolean */ @Override - public boolean equals(Object x, Object y) throws HibernateException { + public boolean equals(String x, String y) throws HibernateException { if( x== null){ @@ -81,7 +81,7 @@ public class StringJsonUserType implements UserType { * Get a hashcode for the instance, consistent with persistence "equality" */ @Override - public int hashCode(Object x) throws HibernateException { + public int hashCode(String x) throws HibernateException { return x.hashCode(); } @@ -138,7 +138,7 @@ public class StringJsonUserType implements UserType { * @return Object a copy */ @Override - public Object deepCopy(Object value) throws HibernateException { + public String deepCopy(String value) throws HibernateException { return value; } @@ -165,7 +165,7 @@ public class StringJsonUserType implements UserType { * */ @Override - public Serializable disassemble(Object value) throws HibernateException { + public Serializable disassemble(String value) throws HibernateException { return (String)this.deepCopy( value); } @@ -180,8 +180,8 @@ public class StringJsonUserType implements UserType { * */ @Override - public Object assemble(Serializable cached, Object owner) throws HibernateException { - return this.deepCopy( cached); + public String assemble(Serializable cached, Object owner) throws HibernateException { + return this.deepCopy( (String)cached); } /** @@ -196,7 +196,7 @@ public class StringJsonUserType implements UserType { * @return the value to be merged */ @Override - public Object replace(Object original, Object target, Object owner) throws HibernateException { + public String replace(String original, String target, Object owner) throws HibernateException { return original; } @@ -206,18 +206,18 @@ public class StringJsonUserType implements UserType { * should handle possibility of null values. * * @param rs a JDBC result set - * @param strings the column names + * @param position the column names * @param ssci * @throws org.hibernate.HibernateException * * @throws java.sql.SQLException */ @Override - public Object nullSafeGet(ResultSet rs, String[] strings, SharedSessionContractImplementor ssci, Object o) throws HibernateException, SQLException { - if(rs.getString(strings[0]) == null){ + public String nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor ssci, Object o) throws HibernateException, SQLException { + if(rs.getString(position) == null){ return null; } - return rs.getString(strings[0]); + return rs.getString(position); } /** @@ -234,7 +234,7 @@ public class StringJsonUserType implements UserType { * @throws java.sql.SQLException */ @Override - public void nullSafeSet(PreparedStatement ps, Object o, int i, SharedSessionContractImplementor ssci) throws HibernateException, SQLException { + public void nullSafeSet(PreparedStatement ps, String o, int i, SharedSessionContractImplementor ssci) throws HibernateException, SQLException { if (o == null) { ps.setNull(i, Types.OTHER); return; diff --git a/src/main/java/no/nibio/vips/observationdata/ObservationDataSchema.java b/src/main/java/no/nibio/vips/observationdata/ObservationDataSchema.java index df6143ea59c734dd5413b6826581748735be444b..4c4a1edadd70fb45194db837bca793b722e1dab0 100755 --- a/src/main/java/no/nibio/vips/observationdata/ObservationDataSchema.java +++ b/src/main/java/no/nibio/vips/observationdata/ObservationDataSchema.java @@ -29,8 +29,6 @@ import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement; import no.nibio.vips.logic.util.StringJsonUserType; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; /** * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> @@ -39,7 +37,6 @@ import org.hibernate.annotations.TypeDefs; @Entity @Table(name = "observation_data_schema") @XmlRootElement -@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)}) @NamedQueries({ @NamedQuery(name = "ObservationDataSchema.findAll", query = "SELECT o FROM ObservationDataSchema o"), @NamedQuery(name = "ObservationDataSchema.findByPK", query = "SELECT o FROM ObservationDataSchema o WHERE o.observationDataSchemaPK.organizationId = :organizationId AND o.observationDataSchemaPK.organismId = :organismId"), @@ -50,10 +47,10 @@ public class ObservationDataSchema implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected ObservationDataSchemaPK observationDataSchemaPK; - @Type(type = "StringJsonObject") + @Type(StringJsonUserType.class) @Column(name = "data_schema") private String dataSchema; - @Type(type = "StringJsonObject") + @Type(StringJsonUserType.class) @Column(name = "data_model") private String dataModel;