Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • VIPS/VIPSLogic
1 result
Select Git revision
Show changes
Showing
with 739 additions and 247 deletions
......@@ -19,16 +19,16 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Size;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -19,11 +19,11 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
/**
* @copyright 2014 <a href="http://www.nibio.no/">NIBIO</a>
......
......@@ -20,9 +20,9 @@ package no.nibio.vips.logic.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
/*
* Copyright (c) 2014 NIBIO <http://www.nibio.no/>.
* Copyright (c) 2014 NIBIO <http://www.nibio.no/>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
......@@ -19,21 +19,8 @@ package no.nibio.vips.logic.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
......@@ -41,18 +28,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import no.nibio.vips.logic.util.GISEntityUtil;
import no.nibio.vips.gis.GISUtil;
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;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;
/**
* @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a>
......@@ -61,22 +44,24 @@ import org.hibernate.annotations.TypeDefs;
@Entity
@Table(name = "observation")
@XmlRootElement
@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)})
//@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"),
@NamedQuery(name = "Observation.findByUserId", query = "SELECT o FROM Observation o WHERE o.userId IN(:userId)"),
@NamedQuery(name = "Observation.findByLastEditedBy", query = "SELECT o FROM Observation o WHERE o.lastEditedBy IN(:lastEditedBy)"),
@NamedQuery(name = "Observation.findByLocationPointOfInterestId", query = "SELECT o FROM Observation o WHERE o.locationPointOfInterestId = :locationPointOfInterestId"),
@NamedQuery(name = "Observation.findByObservationTimeSeries", query = "SELECT o FROM Observation o WHERE o.observationTimeSeries = :observationTimeSeries"),
@NamedQuery(name = "Observation.findByStatusChangedByUserId", query = "SELECT o FROM Observation o WHERE o.statusChangedByUserId IN(:statusChangedByUserId)"),
@NamedQuery(name = "Observation.findByUserIdAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(:userId)"),
@NamedQuery(name = "Observation.findByUserIdAndStatusTypeId", query = "SELECT o FROM Observation o WHERE o.userId IN(:userId) AND o.statusTypeId= :statusTypeId"),
@NamedQuery(name = "Observation.findByUserIdAndOrganism", query = "SELECT o FROM Observation o WHERE o.userId IN(:userId) AND o.organism = :organism"),
@NamedQuery(name = "Observation.findByOrganizationId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId))"),
@NamedQuery(name = "Observation.findByOrganizationIdAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId))"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessage", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganizationId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId.organizationId = :organizationId OR v.organizationId.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId.organizationId = :organizationId))"),
@NamedQuery(name = "Observation.findByOrganizationIdAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId))"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId.organizationId = :organizationId OR v.organizationId.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId.organizationId = :organizationId)) AND o.statusTypeId= :statusTypeId"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessage", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganism", query = "SELECT o FROM Observation o WHERE o.organism = :organism"),
@NamedQuery(name = "Observation.findFirstByOrganism", query = "SELECT o FROM Observation o WHERE o.organism = :organism AND o.timeOfObservation = (SELECT MIN(ob.timeOfObservation) FROM Observation ob WHERE ob.organism = :organism)"),
@NamedQuery(name = "Observation.findByTimeOfObservation", query = "SELECT o FROM Observation o WHERE o.timeOfObservation = :timeOfObservation")
......@@ -91,6 +76,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
private Integer userId;
private Integer lastEditedBy;
private List<Gis> geoinfo;
private ObservationTimeSeries observationTimeSeries;
private Integer locationPointOfInterestId;
//private Double observedValue;
//private Integer denominator;
......@@ -108,21 +94,30 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
private Boolean broadcastMessage;
private Boolean locationIsPrivate;
private PolygonService polygonService;
private ObservationDataSchema observationDataSchema;
private VipsLogicUser user; // Transient
private VipsLogicUser lastEditedByUser; //
private PointOfInterest location; // Transient
private Set<ObservationIllustration> observationIllustrationSet;
private GISEntityUtil GISEntityUtil;
private GISUtil GISUtil;
// Should be defined as an enum (WEB/APP), but PostgreSQLEnumType and hibernate6 seems to be necessary
// https://stackoverflow.com/questions/50818649/hibernate-and-java-and-postgres-enumeratedvalue-enumtype-string-caused-by
private String source;
public Observation() {
this("WEB");
}
public Observation(String source) {
this.GISEntityUtil = new GISEntityUtil();
this.GISUtil = new GISUtil();
this.source = source;
}
public Observation(Integer observationId) {
......@@ -160,7 +155,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
this.timeOfObservation = timeOfObservation;
}
// Using PostGIS + Hibernate-spatial + Java Topology Suite to make this work
/*@JsonIgnore
@Type(type = "org.hibernate.spatial.GeometryType")
......@@ -172,12 +167,12 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
public void setLocation(Point location) {
this.location = location;
}*/
public void setGeoinfos(List<Gis> geoinfo)
{
this.geoinfo = geoinfo;
}
public void addGeoInfo(Gis geoinfo)
{
if(this.geoinfo == null)
......@@ -186,20 +181,20 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
}
this.geoinfo.add(geoinfo);
}
@JsonIgnore
@Transient
public List<Gis> getGeoinfos()
{
return this.geoinfo;
}
public void setGeoinfo(String json)
{
this.setGeoinfos(this.GISEntityUtil.getGisFromGeoJSON(json));
}
@Transient
@Override
public String getGeoinfo()
......@@ -272,7 +267,38 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
@Override
public String toString() {
return "no.nibio.vips.logic.entity.Observation[ observationId=" + observationId + " ]";
return "Observation{" +
"observationId=" + observationId +
", timeOfObservation=" + timeOfObservation +
", organism=" + organism +
", cropOrganism=" + cropOrganism +
", userId=" + userId +
", lastEditedBy=" + lastEditedBy +
", geoinfo=" + geoinfo +
", observationTimeSeries=" + observationTimeSeries +
", locationPointOfInterestId=" + locationPointOfInterestId +
", observationHeading='" + observationHeading + '\'' +
", observationText='" + observationText + '\'' +
", statusTypeId=" + statusTypeId +
", statusChangedByUserId=" + statusChangedByUserId +
", statusChangedTime=" + statusChangedTime +
", lastEditedTime=" + lastEditedTime +
", statusRemarks='" + statusRemarks + '\'' +
", observationData='" + observationData + '\'' +
", isQuantified=" + isQuantified +
", isPositive=" + isPositive +
", broadcastMessage=" + broadcastMessage +
", locationIsPrivate=" + locationIsPrivate +
", polygonService=" + polygonService +
", observationDataSchema=" + observationDataSchema +
", user=" + user +
", lastEditedByUser=" + lastEditedByUser +
", location=" + location +
", observationIllustrationSet=" + observationIllustrationSet +
", GISEntityUtil=" + GISEntityUtil +
", GISUtil=" + GISUtil +
", source=" + source +
'}';
}
/**
......@@ -311,13 +337,13 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
public void setOrganism(Organism organism) {
this.organism = organism;
}
@JoinColumn(name = "polygon_service_id", referencedColumnName = "polygon_service_id")
@ManyToOne
public PolygonService getPolygonService(){
return this.polygonService;
}
public void setPolygonService(PolygonService polygonService)
{
this.polygonService = polygonService;
......@@ -336,7 +362,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
return this.getLocationCoordinate().x;
}
*/
@Override
@Transient
public String getName() {
......@@ -440,11 +466,11 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
/**
* @return the observationData
*/
@Type(type = "StringJsonObject")
@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "observation_data")
@Override
public String getObservationData() {
return observationData;
return this.observationData != null && this.observationData.replaceAll("\"", "").trim().length() > 0 ? this.observationData : null;
}
/**
......@@ -453,13 +479,13 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
public void setObservationData(String observationData) {
this.observationData = observationData;
}
@Transient
public ObservationDataSchema getObservationDataSchema()
{
return this.observationDataSchema != null ? this.observationDataSchema : null;
}
public void setObservationDataSchema(ObservationDataSchema observationDataSchema)
{
this.observationDataSchema = observationDataSchema;
......@@ -495,7 +521,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
public void setCropOrganism(Organism cropOrganism) {
this.cropOrganism = cropOrganism;
}
@Transient
public Integer getCropOrganismId() {
return this.getCropOrganism() != null ? this.getCropOrganism().getOrganismId() : null;
......@@ -531,6 +557,27 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
this.observationIllustrationSet = observationIllustrationSet;
}
@Transient
public Integer getObservationTimeSeriesId() {
return observationTimeSeries != null ? observationTimeSeries.getObservationTimeSeriesId() : null;
}
/**
* @return the observation time series
*/
@JoinColumn(name = "observation_time_series_id", referencedColumnName = "observation_time_series_id")
@ManyToOne
public ObservationTimeSeries getObservationTimeSeries() {
return observationTimeSeries;
}
/**
* @param observationTimeSeries the observation time series to set
*/
public void setObservationTimeSeries(ObservationTimeSeries observationTimeSeries) {
this.observationTimeSeries = observationTimeSeries;
}
/**
* @return the locationPointOfInterestId
*/
......@@ -630,7 +677,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
/**
* Simplifies the public JSON object
* @param locale
* @return
* @return
*/
public ObservationListItem getListItem(String locale, ObservationDataSchema observationDataSchema)
{
......@@ -642,34 +689,41 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
this.location.addProperty("timestamp", this.getTimeOfObservation().getTime());
}
return new ObservationListItem(
this.getObservationId(),
this.getTimeOfObservation(),
this.getOrganismId(),
! this.getOrganism().getLocalName(locale).trim().isBlank() ? this.getOrganism().getLocalName(locale) : this.getOrganism().getLatinName(),
this.getCropOrganismId(),
! this.getCropOrganism().getLocalName(locale).trim().isBlank() ? this.getCropOrganism().getLocalName(locale) : this.getCropOrganism().getLatinName(),
// Specific geoInfo trumps location. This is to be interpreted
// as that the observation has been geographically masked by
// choice of the observer
this.location != null && this.geoinfo == null ? this.location.getGeoJSON() : this.getGeoinfo(),
this.getObservationHeading(),
this.getBroadcastMessage(),
this.getLocationIsPrivate(),
this.getIsPositive(),
this.getObservationData(),
observationDataSchema
this.getObservationId(),
this.userId,
this.user != null ? this.user.getFullName() : null,
this.getObservationTimeSeriesId(),
this.getTimeOfObservation(),
this.getOrganismId(),
! this.getOrganism().getLocalName(locale).trim().isBlank() ? this.getOrganism().getLocalName(locale) : this.getOrganism().getLatinName(),
this.getCropOrganismId(),
! this.getCropOrganism().getLocalName(locale).trim().isBlank() ? this.getCropOrganism().getLocalName(locale) : this.getCropOrganism().getLatinName(),
this.observationTimeSeries != null ? this.observationTimeSeries.getLabel() : null,
// Specific geoInfo trumps location. This is to be interpreted
// as that the observation has been geographically masked by
// choice of the observer
this.location != null ? this.location.getPointOfInterestId() : null,
this.location != null ? this.location.getName() : null,
this.location != null && this.geoinfo == null ? this.location.getGeoJSON() : this.getGeoinfo(),
this.getObservationHeading(),
this.getObservationText(),
this.getBroadcastMessage(),
this.getLocationIsPrivate(),
this.getIsPositive(),
this.getObservationData(),
observationDataSchema
);
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "last_edited_time")
public Date getLastEditedTime() {
return lastEditedTime;
}
public Date getLastEditedTime() {
return lastEditedTime;
}
public void setLastEditedTime(Date lastEditedTime) {
this.lastEditedTime = lastEditedTime;
}
public void setLastEditedTime(Date lastEditedTime) {
this.lastEditedTime = lastEditedTime;
}
@Column(name = "is_positive")
public Boolean getIsPositive() {
......@@ -679,4 +733,12 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
public void setIsPositive(Boolean positive) {
isPositive = positive;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
}
......@@ -20,19 +20,19 @@ package no.nibio.vips.logic.entity;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -19,16 +19,16 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -19,12 +19,12 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -19,11 +19,11 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
/**
* @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a>
......
......@@ -20,16 +20,16 @@ package no.nibio.vips.logic.entity;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import com.fasterxml.jackson.annotation.JsonIgnore;
......
......@@ -19,15 +19,15 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
/*
* Copyright (c) 2014 NIBIO <http://www.nibio.no/>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
package no.nibio.vips.logic.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.Date;
@Entity
@Table(name = "observation_time_series")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "ObservationTimeSeries.findAll", query = "SELECT ots FROM ObservationTimeSeries ots"),
@NamedQuery(name = "ObservationTimeSeries.findByObservationTimeSeriesId", query = "SELECT ots FROM ObservationTimeSeries ots WHERE ots.observationTimeSeriesId = :id"),
@NamedQuery(name = "ObservationTimeSeries.findByObservationTimeSeriesIds", query = "SELECT ots FROM ObservationTimeSeries ots WHERE ots.observationTimeSeriesId IN :observationTimeSeriesIds"),
@NamedQuery(name = "ObservationTimeSeries.findByOrganizationId", query = "SELECT ots FROM ObservationTimeSeries ots WHERE ots.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId.organizationId = :organizationId OR v.organizationId.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId.organizationId = :organizationId))"),
@NamedQuery(name = "ObservationTimeSeries.findByUserId", query = "SELECT ots FROM ObservationTimeSeries ots WHERE ots.userId IN(:userId)")
})
public class ObservationTimeSeries implements Serializable {
private static final long serialVersionUID = 1L;
private Integer observationTimeSeriesId;
private Organism cropOrganism;
private Organism organism;
private Integer year;
private String name;
private String description;
private Date created;
private Integer userId;
private VipsLogicUser user; // Transient
private String source;
private Date lastModified;
private Integer lastModifiedBy;
private VipsLogicUser lastModifiedByUser; // Transient
private Integer locationPointOfInterestId;
private PointOfInterest locationPointOfInterest;
private Boolean locationIsPrivate;
private PolygonService polygonService;
public ObservationTimeSeries() {
}
public ObservationTimeSeries(String source) {
this.source = source;
}
/**
* @return the id of the observation time series
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "observation_time_series_id")
public Integer getObservationTimeSeriesId() {
return observationTimeSeriesId;
}
/**
* @param id the observation time series id to set
*/
public void setObservationTimeSeriesId(Integer id) {
this.observationTimeSeriesId = id;
}
/**
* @return the crop organism
*/
@JoinColumn(name = "crop_organism_id", referencedColumnName = "organism_id")
@ManyToOne
public Organism getCropOrganism() {
return cropOrganism;
}
/**
* @param cropOrganism the crop organism to set
*/
public void setCropOrganism(Organism cropOrganism) {
this.cropOrganism = cropOrganism;
}
/**
* @return the crop organism id
*/
@Transient
public Integer getCropOrganismId() {
return this.getCropOrganism() != null ? this.getCropOrganism().getOrganismId() : null;
}
/**
* @return the organism
*/
@JoinColumn(name = "organism_id", referencedColumnName = "organism_id")
@ManyToOne
public Organism getOrganism() {
return organism;
}
/**
* @param organism the organism to set
*/
public void setOrganism(Organism organism) {
this.organism = organism;
}
/**
* @return the organism id
*/
@Transient
public Integer getOrganismId() {
return this.getOrganism() != null ? this.getOrganism().getOrganismId() : null;
}
/**
* @return the year of the observation time series
*/
@Column(name = "year")
public Integer getYear() {
return year;
}
/**
* @param year the observation time series year to set
*/
public void setYear(Integer year) {
this.year = year;
}
/**
* @return the name of the observation time series
*/
@Column(name = "name")
public String getName() {
return name;
}
/**
* @param name the observation time series name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* This logic if also implemented in the observation app, see the function timeSeriesLabel in CommonUtil.vue
* @return the first eight letters of the given name, in uppercase with spaces removed
*/
@Transient
public String getLabel() {
if (this.name == null) {
return null;
}
String timeSeriesName = this.name;
timeSeriesName = timeSeriesName.replaceAll("\\s", "");
timeSeriesName = timeSeriesName.substring(0, Math.min(timeSeriesName.length(), 8));
return timeSeriesName.toUpperCase();
}
/**
* @return the description of the observation time series
*/
@Column(name = "description")
public String getDescription() {
return description;
}
/**
* @param description the observation time series text to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the creation date of the observation time series
*/
@NotNull
@Basic(optional = false)
@Column(name = "created")
@Temporal(TemporalType.TIMESTAMP)
public Date getCreated() {
return created;
}
/**
* @param created the creation date to set
*/
public void setCreated(Date created) {
this.created = created;
}
@NotNull
@Basic(optional = false)
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "last_modified")
public Date getLastModified() {
return lastModified;
}
public void setLastModified(Date lastModified) {
this.lastModified = lastModified;
}
/**
* @return the userId
*/
@Column(name = "user_id")
public Integer getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* @return the user
*/
@Transient
@JsonIgnore
public VipsLogicUser getUser() {
return user;
}
/**
* @param user the user to set
*/
public void setUser(VipsLogicUser user) {
this.user = user;
}
/**
* @return from where the observation time series originally was created, either WEB or APP
*/
@Column(name = "source")
public String getSource() {
return source;
}
/**
* @param source From where the observation time series originally was created
*/
public void setSource(String source) {
this.source = source;
}
@Column(name = "last_modified_by")
public Integer getLastModifiedBy() {
return lastModifiedBy;
}
/**
* @param lastModifiedBy the lastModifiedBy to set
*/
public void setLastModifiedBy(Integer lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
/**
* @return the user who last modified the observation time series
*/
@Transient
@JsonIgnore
public VipsLogicUser getLastModifiedByUser() {
return lastModifiedByUser;
}
/**
* @param lastModifiedByUser the lastModifiedByUser to set
*/
public void setLastModifiedByUser(VipsLogicUser lastModifiedByUser) {
this.lastModifiedByUser = lastModifiedByUser;
}
/**
* @return the locationPointOfInterestId
*/
@Column(name = "location_point_of_interest_id")
public Integer getLocationPointOfInterestId() {
return locationPointOfInterestId;
}
/**
* @param locationPointOfInterestId the locationPointOfInterestId to set
*/
public void setLocationPointOfInterestId(Integer locationPointOfInterestId) {
this.locationPointOfInterestId = locationPointOfInterestId;
}
/**
* @return the location
*/
@Transient
public PointOfInterest getLocationPointOfInterest() {
return locationPointOfInterest;
}
/**
* @param locationPointOfInterest the location to set
*/
public void setLocationPointOfInterest(PointOfInterest locationPointOfInterest) {
this.locationPointOfInterest = locationPointOfInterest;
}
/**
* @return the locationIsPrivate
*/
@Column(name = "location_is_private")
public Boolean getLocationIsPrivate() {
return locationIsPrivate != null ? locationIsPrivate : false;
}
/**
* @param locationIsPrivate the locationIsPrivate to set
*/
public void setLocationIsPrivate(Boolean locationIsPrivate) {
this.locationIsPrivate = locationIsPrivate;
}
/**
* @return the polygon service
*/
@JoinColumn(name = "polygon_service_id", referencedColumnName = "polygon_service_id")
@ManyToOne
public PolygonService getPolygonService() {
return this.polygonService;
}
/**
* @param polygonService the polygon service to set
*/
public void setPolygonService(PolygonService polygonService) {
this.polygonService = polygonService;
}
@Override
public int hashCode() {
int hash = 0;
hash += (observationTimeSeriesId != null ? observationTimeSeriesId.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ObservationTimeSeries that = (ObservationTimeSeries) o;
return observationTimeSeriesId.equals(that.observationTimeSeriesId);
}
@Override
public String toString() {
return "ObservationTimeSeries{" +
"observationTimeSeriesId=" + observationTimeSeriesId +
", cropOrganism=" + cropOrganism +
", organism=" + organism +
", year=" + year +
", name='" + name + '\'' +
", description='" + description + '\'' +
", created=" + created +
", userId=" + userId +
", user=" + user +
", source=" + source +
", lastModified=" + lastModified +
", lastModifiedBy=" + lastModifiedBy +
", lastModifiedByUser=" + lastModifiedByUser +
", locationPointOfInterestId=" + locationPointOfInterestId +
", locationPointOfInterest=" + locationPointOfInterest +
", locationIsPrivate=" + locationIsPrivate +
", polygonService=" + polygonService +
'}';
}
public int compareTo(ObservationTimeSeries other) {
if (this.getYear() != null && other.getYear() != null) {
return other.getYear().compareTo(this.getYear());
}
return this.getName().compareTo(other.getName());
}
}
......@@ -23,21 +23,21 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -20,16 +20,16 @@ package no.nibio.vips.logic.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Size;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
......
......@@ -19,10 +19,10 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.validation.constraints.NotNull;
/**
* @copyright 2013 <a href="http://www.nibio.no/">NIBIO</a>
......
......@@ -19,13 +19,13 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -18,11 +18,11 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
/**
* @copyright 2013 <a href="http://www.nibio.no/">NIBIO</a>
......
......@@ -21,24 +21,24 @@ package no.nibio.vips.logic.entity;
import org.locationtech.jts.geom.Point;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.FetchType;
import javax.persistence.OneToOne;
import jakarta.persistence.FetchType;
import jakarta.persistence.OneToOne;
import org.hibernate.annotations.Type;
/**
......@@ -111,6 +111,21 @@ public class Organization implements Serializable {
@OneToOne
@JsonIgnore
private VipsLogicUser archiveUser;
@JoinColumn(name = "default_grid_weather_station_data_source_id", referencedColumnName = "weather_station_data_source_id")
@ManyToOne
private WeatherStationDataSource defaultGridWeatherStationDataSource;
public WeatherStationDataSource getDefaultGridWeatherStationDataSource() {
return defaultGridWeatherStationDataSource;
}
public void setDefaultGridWeatherStationDataSource(WeatherStationDataSource defaultGridWeatherStationDataSource) {
this.defaultGridWeatherStationDataSource = defaultGridWeatherStationDataSource;
}
public Organization() {
}
......
......@@ -19,16 +19,16 @@
package no.nibio.vips.logic.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
......
......@@ -21,31 +21,31 @@ import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Size;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.DiscriminatorColumn;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.locationtech.jts.geom.Geometry;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import jakarta.persistence.CascadeType;
import jakarta.persistence.DiscriminatorType;
import jakarta.persistence.DiscriminatorValue;
import jakarta.persistence.FetchType;
import jakarta.persistence.OneToMany;
import no.nibio.vips.gis.GISUtil;
import org.wololo.geojson.Feature;
......@@ -63,9 +63,9 @@ import org.wololo.geojson.Feature;
@NamedQuery(name = "PointOfInterest.findAll", query = "SELECT p FROM PointOfInterest p ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findByPointOfInterestId", query = "SELECT p FROM PointOfInterest p WHERE p.pointOfInterestId = :pointOfInterestId"),
@NamedQuery(name = "PointOfInterest.findByPointOfInterestIds", query = "SELECT p FROM PointOfInterest p WHERE p.pointOfInterestId IN :pointOfInterestIds"),
@NamedQuery(name = "PointOfInterest.findByOrganizationId", query = "SELECT p FROM PointOfInterest p WHERE p.user IN(SELECT u.userId FROM VipsLogicUser u WHERE u.organizationId=:organizationId OR u.organizationId IN (SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findByOrganizationIdAndPoiTypes", query = "SELECT p FROM PointOfInterest p WHERE p.pointOfInterestTypeId in :pointOfInterestTypes AND p.user IN(SELECT u.userId FROM VipsLogicUser u WHERE u.organizationId=:organizationId OR u.organizationId IN (SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findForecastLocationsByOrganizationId", query = "SELECT p FROM PointOfInterest p WHERE p.isForecastLocation IS TRUE AND p.user IN(SELECT u.userId FROM VipsLogicUser u WHERE u.organizationId=:organizationId OR u.organizationId IN (SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findByOrganizationId", query = "SELECT p FROM PointOfInterest p WHERE p.user.userId IN(SELECT u.userId FROM VipsLogicUser u WHERE u.organizationId = :organizationId OR u.organizationId.organizationId IN (SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findByOrganizationIdAndPoiTypes", query = "SELECT p FROM PointOfInterest p WHERE p.pointOfInterestTypeId in :pointOfInterestTypes AND p.user.userId IN(SELECT u.userId FROM VipsLogicUser u WHERE u.organizationId = :organizationId OR u.organizationId.organizationId IN (SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findForecastLocationsByOrganizationId", query = "SELECT p FROM PointOfInterest p WHERE p.isForecastLocation IS TRUE AND p.user.userId IN(SELECT u.userId FROM VipsLogicUser u WHERE u.organizationId = :organizationId OR u.organizationId.organizationId IN (SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) ORDER BY p.name ASC"),
@NamedQuery(name = "PointOfInterest.findByName", query = "SELECT p FROM PointOfInterest p WHERE p.name = :name"),
@NamedQuery(name = "PointOfInterest.findByNameCaseInsensitive", query = "SELECT p FROM PointOfInterest p WHERE lower(p.name) = lower(:name)"),
@NamedQuery(name = "PointOfInterest.findByUserId", query = "SELECT p FROM PointOfInterest p WHERE p.user = :userId ORDER BY p.name ASC")
......@@ -91,8 +91,17 @@ public class PointOfInterest implements Serializable, Comparable {
private Boolean isForecastLocation;
private Integer pointOfInterestTypeId;
private Date lastEditedTime;
private Boolean isPrivate;
@Column(name = "is_private")
public Boolean getIsPrivate() {
return isPrivate;
}
public void setIsPrivate(Boolean isPrivate) {
this.isPrivate = isPrivate;
}
// For attaching ad-hoc properties
// e.g. Worst warning for map
private Map<String, Object> properties;
......@@ -132,7 +141,7 @@ public class PointOfInterest implements Serializable, Comparable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "point_of_interest_id")
@Column(name = "point_of_interest_id", insertable = false, updatable = false)
public Integer getPointOfInterestId() {
return pointOfInterestId;
}
......@@ -276,6 +285,10 @@ public class PointOfInterest implements Serializable, Comparable {
{
this.properties.put("pointOfInterestTypeId", this.getPointOfInterestTypeId());
}
if(this.properties.get("pointOfInterestName") == null)
{
this.properties.put("pointOfInterestName", this.getName());
}
return this.properties;
}
......
......@@ -20,17 +20,17 @@ package no.nibio.vips.logic.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Size;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
......