From 04ce8b3a3b8305fe8dba3b5e89fba23160e576d8 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 29 Mar 2013 11:51:27 +0100 Subject: [PATCH] added indexes and constraints --- .../java/com/commafeed/backend/feeds/OPMLImporter.java | 3 +-- src/main/java/com/commafeed/backend/model/Feed.java | 5 ++++- .../java/com/commafeed/backend/model/FeedCategory.java | 4 +++- src/main/java/com/commafeed/backend/model/FeedEntry.java | 7 ++++++- .../com/commafeed/backend/model/FeedEntryStatus.java | 3 +++ .../com/commafeed/backend/model/FeedSubscription.java | 5 ++++- src/main/java/com/commafeed/backend/model/User.java | 9 ++++++--- src/main/java/com/commafeed/backend/model/UserRole.java | 4 ++-- .../java/com/commafeed/backend/model/UserSettings.java | 4 +++- 9 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java b/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java index 0adab124..541903da 100644 --- a/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java +++ b/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java @@ -75,11 +75,10 @@ public class OPMLImporter { sub = new FeedSubscription(); sub.setFeed(feed); sub.setUser(user); - feedSubscriptionService.save(sub); } sub.setCategory(parent); sub.setTitle(outline.getText()); - feedSubscriptionService.update(sub); + feedSubscriptionService.saveOrUpdate(sub); } } } diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java index f75626bf..174fc50a 100644 --- a/src/main/java/com/commafeed/backend/model/Feed.java +++ b/src/main/java/com/commafeed/backend/model/Feed.java @@ -10,6 +10,8 @@ import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import org.hibernate.annotations.Index; + import com.google.common.collect.Sets; @Entity @@ -17,7 +19,8 @@ import com.google.common.collect.Sets; @SuppressWarnings("serial") public class Feed extends AbstractModel { - @Column(length = 2048) + @Column(length = 2048, nullable = false, unique = true) + @Index(name = "feed_index") private String url; @Temporal(TemporalType.TIMESTAMP) diff --git a/src/main/java/com/commafeed/backend/model/FeedCategory.java b/src/main/java/com/commafeed/backend/model/FeedCategory.java index d09b035f..e6bca674 100644 --- a/src/main/java/com/commafeed/backend/model/FeedCategory.java +++ b/src/main/java/com/commafeed/backend/model/FeedCategory.java @@ -4,6 +4,7 @@ import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; @@ -15,10 +16,11 @@ import com.google.common.collect.Sets; @SuppressWarnings("serial") public class FeedCategory extends AbstractModel { - @Column(length = 128) + @Column(length = 128, nullable = false) private String name; @ManyToOne + @JoinColumn(nullable = false) private User user; @ManyToOne diff --git a/src/main/java/com/commafeed/backend/model/FeedEntry.java b/src/main/java/com/commafeed/backend/model/FeedEntry.java index 4db44d40..08b0bed7 100644 --- a/src/main/java/com/commafeed/backend/model/FeedEntry.java +++ b/src/main/java/com/commafeed/backend/model/FeedEntry.java @@ -5,6 +5,7 @@ import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -13,16 +14,19 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.apache.commons.codec.binary.StringUtils; +import org.hibernate.annotations.Index; @Entity @Table(name = "FEEDENTRIES") @SuppressWarnings("serial") public class FeedEntry extends AbstractModel { - @Column(length = 2048) + @Column(length = 2048, nullable = false, unique = true) + @Index(name = "guid_index") private String guid; @ManyToOne + @JoinColumn(nullable = false) private Feed feed; @Column(length = 2048) @@ -35,6 +39,7 @@ public class FeedEntry extends AbstractModel { private String url; @Temporal(TemporalType.TIMESTAMP) + @Index(name = "updated_index") private Date updated; @OneToMany(mappedBy = "entry") diff --git a/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java b/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java index acd1434d..c1575891 100644 --- a/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java +++ b/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java @@ -2,6 +2,7 @@ package com.commafeed.backend.model; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @@ -11,9 +12,11 @@ import javax.persistence.Table; public class FeedEntryStatus extends AbstractModel { @ManyToOne + @JoinColumn(nullable = false) private User user; @ManyToOne + @JoinColumn(nullable = false) private FeedEntry entry; @Column(name = "read_status") diff --git a/src/main/java/com/commafeed/backend/model/FeedSubscription.java b/src/main/java/com/commafeed/backend/model/FeedSubscription.java index e62ca49f..1874af6a 100644 --- a/src/main/java/com/commafeed/backend/model/FeedSubscription.java +++ b/src/main/java/com/commafeed/backend/model/FeedSubscription.java @@ -2,6 +2,7 @@ package com.commafeed.backend.model; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @@ -11,12 +12,14 @@ import javax.persistence.Table; public class FeedSubscription extends AbstractModel { @ManyToOne + @JoinColumn(nullable = false) private User user; @ManyToOne + @JoinColumn(nullable = false) private Feed feed; - @Column(length = 128) + @Column(length = 128, nullable = false) private String title; @ManyToOne diff --git a/src/main/java/com/commafeed/backend/model/User.java b/src/main/java/com/commafeed/backend/model/User.java index 356a219f..69233810 100644 --- a/src/main/java/com/commafeed/backend/model/User.java +++ b/src/main/java/com/commafeed/backend/model/User.java @@ -8,6 +8,8 @@ import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.persistence.Table; +import org.hibernate.annotations.Index; + import com.google.common.collect.Sets; @Entity @@ -15,13 +17,14 @@ import com.google.common.collect.Sets; @SuppressWarnings("serial") public class User extends AbstractModel { - @Column(length = 32) + @Column(length = 32, nullable = false, unique = true) + @Index(name = "username_index") private String name; - @Column(length = 256) + @Column(length = 256, nullable = false) private byte[] password; - @Column(length = 8) + @Column(length = 8, nullable = false) private byte[] salt; @OneToMany(mappedBy = "user", cascade = CascadeType.PERSIST) diff --git a/src/main/java/com/commafeed/backend/model/UserRole.java b/src/main/java/com/commafeed/backend/model/UserRole.java index 0f9c2522..a9d51a54 100644 --- a/src/main/java/com/commafeed/backend/model/UserRole.java +++ b/src/main/java/com/commafeed/backend/model/UserRole.java @@ -12,10 +12,10 @@ import javax.persistence.Table; public class UserRole extends AbstractModel { @OneToOne - @JoinColumn(name = "user_id") + @JoinColumn(name = "user_id", nullable = false) private User user; - @Column(name = "roleName") + @Column(name = "roleName", nullable = false) private String role; public UserRole() { diff --git a/src/main/java/com/commafeed/backend/model/UserSettings.java b/src/main/java/com/commafeed/backend/model/UserSettings.java index 4bb3b303..aa823e3d 100644 --- a/src/main/java/com/commafeed/backend/model/UserSettings.java +++ b/src/main/java/com/commafeed/backend/model/UserSettings.java @@ -1,5 +1,6 @@ package com.commafeed.backend.model; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; @@ -17,10 +18,11 @@ public class UserSettings extends AbstractModel { } @OneToOne - @JoinColumn(name = "user_id") + @JoinColumn(name = "user_id", nullable = false) private User user; @Enumerated(EnumType.STRING) + @Column(nullable = false) private ReadingMode readingMode; public ReadingMode getReadingMode() {