Fix JPA validator warnings with explicit column names
Due to a bug in the JPA validator columns with camel case names are flagged as missing (probably due to the case-insensitive nature of SQL). This has been circumvented by assigning every column with a camel case name a new name with underscores. The inheritance strategy of the Contacts class has been changed to single table for performance reasons.
This commit is contained in:
		@@ -3,17 +3,7 @@ package envoy.server.data;
 | 
				
			|||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.persistence.CascadeType;
 | 
					import javax.persistence.*;
 | 
				
			||||||
import javax.persistence.Entity;
 | 
					 | 
				
			||||||
import javax.persistence.FetchType;
 | 
					 | 
				
			||||||
import javax.persistence.GeneratedValue;
 | 
					 | 
				
			||||||
import javax.persistence.Id;
 | 
					 | 
				
			||||||
import javax.persistence.Inheritance;
 | 
					 | 
				
			||||||
import javax.persistence.InheritanceType;
 | 
					 | 
				
			||||||
import javax.persistence.ManyToMany;
 | 
					 | 
				
			||||||
import javax.persistence.Table;
 | 
					 | 
				
			||||||
import javax.persistence.Temporal;
 | 
					 | 
				
			||||||
import javax.persistence.TemporalType;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * This class acts as a superclass for all contacts, being {@link User}s and
 | 
					 * This class acts as a superclass for all contacts, being {@link User}s and
 | 
				
			||||||
@@ -29,7 +19,7 @@ import javax.persistence.TemporalType;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@Entity
 | 
					@Entity
 | 
				
			||||||
@Table(name = "contacts")
 | 
					@Table(name = "contacts")
 | 
				
			||||||
@Inheritance(strategy = InheritanceType.JOINED)
 | 
					@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
 | 
				
			||||||
public abstract class Contact {
 | 
					public abstract class Contact {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Id
 | 
						@Id
 | 
				
			||||||
@@ -37,6 +27,7 @@ public abstract class Contact {
 | 
				
			|||||||
	protected long		id;
 | 
						protected long		id;
 | 
				
			||||||
	protected String	name;
 | 
						protected String	name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "creation_date")
 | 
				
			||||||
	@Temporal(TemporalType.TIMESTAMP)
 | 
						@Temporal(TemporalType.TIMESTAMP)
 | 
				
			||||||
	private Date creationDate;
 | 
						private Date creationDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ import java.util.stream.Collectors;
 | 
				
			|||||||
import javax.persistence.Entity;
 | 
					import javax.persistence.Entity;
 | 
				
			||||||
import javax.persistence.NamedQueries;
 | 
					import javax.persistence.NamedQueries;
 | 
				
			||||||
import javax.persistence.NamedQuery;
 | 
					import javax.persistence.NamedQuery;
 | 
				
			||||||
import javax.persistence.Table;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Represents a group inside the database. Referred to as "server group" as
 | 
					 * Represents a group inside the database. Referred to as "server group" as
 | 
				
			||||||
@@ -19,7 +18,6 @@ import javax.persistence.Table;
 | 
				
			|||||||
 * @since Envoy Server Standalone v0.1-alpha
 | 
					 * @since Envoy Server Standalone v0.1-alpha
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@Entity
 | 
					@Entity
 | 
				
			||||||
@Table(name = "groups")
 | 
					 | 
				
			||||||
@NamedQueries({
 | 
					@NamedQueries({
 | 
				
			||||||
	@NamedQuery(
 | 
						@NamedQuery(
 | 
				
			||||||
		name = Group.findByName,
 | 
							name = Group.findByName,
 | 
				
			||||||
@@ -46,17 +44,11 @@ public class Group extends Contact {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	public static final String findPendingGroups = "Group.findPendingGroups";
 | 
						public static final String findPendingGroups = "Group.findPendingGroups";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * {@inheritDoc}
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public envoy.data.Group toCommon() {
 | 
						public envoy.data.Group toCommon() {
 | 
				
			||||||
		return new envoy.data.Group(id, name, contacts.parallelStream().map(User.class::cast).map(User::toFlatCommon).collect(Collectors.toSet()));
 | 
							return new envoy.data.Group(id, name, contacts.parallelStream().map(User.class::cast).map(User::toFlatCommon).collect(Collectors.toSet()));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * {@inheritDoc}
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	protected envoy.data.Group toFlatCommon() { return toCommon(); }
 | 
						protected envoy.data.Group toFlatCommon() { return toCommon(); }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,7 @@ package envoy.server.data;
 | 
				
			|||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.persistence.ElementCollection;
 | 
					import javax.persistence.*;
 | 
				
			||||||
import javax.persistence.Entity;
 | 
					 | 
				
			||||||
import javax.persistence.Temporal;
 | 
					 | 
				
			||||||
import javax.persistence.TemporalType;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import envoy.data.MessageBuilder;
 | 
					import envoy.data.MessageBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,6 +21,7 @@ public class GroupMessage extends Message {
 | 
				
			|||||||
	@ElementCollection
 | 
						@ElementCollection
 | 
				
			||||||
	private Map<Long, envoy.data.Message.MessageStatus> memberMessageStatus;
 | 
						private Map<Long, envoy.data.Message.MessageStatus> memberMessageStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "last_status_change_date")
 | 
				
			||||||
	@Temporal(TemporalType.TIMESTAMP)
 | 
						@Temporal(TemporalType.TIMESTAMP)
 | 
				
			||||||
	protected Date lastStatusChangeDate;
 | 
						protected Date lastStatusChangeDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,7 +62,6 @@ public class GroupMessage extends Message {
 | 
				
			|||||||
			.setForwarded(forwarded)
 | 
								.setForwarded(forwarded)
 | 
				
			||||||
			.setStatus(status)
 | 
								.setStatus(status)
 | 
				
			||||||
			.setText(text)
 | 
								.setText(text)
 | 
				
			||||||
			// .setAttachment(attachment) TODO make this work
 | 
					 | 
				
			||||||
			.buildGroupMessage((envoy.data.Group) recipient.toCommon(), memberMessageStatus);
 | 
								.buildGroupMessage((envoy.data.Group) recipient.toCommon(), memberMessageStatus);
 | 
				
			||||||
		groupMessage.setReceivedDate(receivedDate);
 | 
							groupMessage.setReceivedDate(receivedDate);
 | 
				
			||||||
		groupMessage.setReadDate(readDate);
 | 
							groupMessage.setReadDate(readDate);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,12 +49,15 @@ public class Message {
 | 
				
			|||||||
	@JoinColumn
 | 
						@JoinColumn
 | 
				
			||||||
	protected Contact recipient;
 | 
						protected Contact recipient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "creation_date")
 | 
				
			||||||
	@Temporal(TemporalType.TIMESTAMP)
 | 
						@Temporal(TemporalType.TIMESTAMP)
 | 
				
			||||||
	protected Date creationDate;
 | 
						protected Date creationDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "received_date")
 | 
				
			||||||
	@Temporal(TemporalType.TIMESTAMP)
 | 
						@Temporal(TemporalType.TIMESTAMP)
 | 
				
			||||||
	protected Date receivedDate;
 | 
						protected Date receivedDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "read_date")
 | 
				
			||||||
	@Temporal(TemporalType.TIMESTAMP)
 | 
						@Temporal(TemporalType.TIMESTAMP)
 | 
				
			||||||
	protected Date readDate;
 | 
						protected Date readDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -88,7 +91,7 @@ public class Message {
 | 
				
			|||||||
		sender			= persistenceManager.getUserByID(message.getSenderID());
 | 
							sender			= persistenceManager.getUserByID(message.getSenderID());
 | 
				
			||||||
		recipient		= persistenceManager.getContactByID(message.getRecipientID());
 | 
							recipient		= persistenceManager.getContactByID(message.getRecipientID());
 | 
				
			||||||
		forwarded		= message.isForwarded();
 | 
							forwarded		= message.isForwarded();
 | 
				
			||||||
		// TODO: attachment = message.getAttachment().toByteArray();DOES NOT WORK YET
 | 
							// TODO: Attachment
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -104,7 +107,6 @@ public class Message {
 | 
				
			|||||||
			.setDate(creationDate)
 | 
								.setDate(creationDate)
 | 
				
			||||||
			.setStatus(status)
 | 
								.setStatus(status)
 | 
				
			||||||
			.setForwarded(forwarded)
 | 
								.setForwarded(forwarded)
 | 
				
			||||||
			// .setAttachment(attachment) TODO make this work
 | 
					 | 
				
			||||||
			.build();
 | 
								.build();
 | 
				
			||||||
		message.setReceivedDate(receivedDate);
 | 
							message.setReceivedDate(receivedDate);
 | 
				
			||||||
		message.setReadDate(readDate);
 | 
							message.setReadDate(readDate);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,6 @@ import envoy.data.User.UserStatus;
 | 
				
			|||||||
 * @since Envoy Server Standalone v0.1-alpha
 | 
					 * @since Envoy Server Standalone v0.1-alpha
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@Entity
 | 
					@Entity
 | 
				
			||||||
@Table(name = "users")
 | 
					 | 
				
			||||||
@NamedQueries({
 | 
					@NamedQueries({
 | 
				
			||||||
	@NamedQuery(
 | 
						@NamedQuery(
 | 
				
			||||||
		name = User.findByName,
 | 
							name = User.findByName,
 | 
				
			||||||
@@ -63,8 +62,10 @@ public class User extends Contact {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	public static final String searchByName = "User.searchByName";
 | 
						public static final String searchByName = "User.searchByName";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "password_hash")
 | 
				
			||||||
	private byte[] passwordHash;
 | 
						private byte[] passwordHash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Column(name = "last_seen")
 | 
				
			||||||
	@Temporal(TemporalType.TIMESTAMP)
 | 
						@Temporal(TemporalType.TIMESTAMP)
 | 
				
			||||||
	private Date lastSeen;
 | 
						private Date lastSeen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user