diff --git a/src/main/java/org/tonality/model/Subscription.java b/src/main/java/org/tonality/model/Subscription.java index 6880fa67c9e2a602301b1d7f1c2cecdfed238fa4..95ae9c33f8cb13d5306631c9a8ba880828f0f981 100644 --- a/src/main/java/org/tonality/model/Subscription.java +++ b/src/main/java/org/tonality/model/Subscription.java @@ -10,28 +10,22 @@ import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import org.tonality.type.SubscriptionStatus; -import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.ColumnDefault; -import org.tonality.util.HibernateUtil; import javax.persistence.*; +import java.io.Serializable; import java.util.Date; @Getter @Setter @Entity(name = "subscription") @Table(name = "subscription") -public class Subscription { +@IdClass(SubscriptionId.class) +public class Subscription implements Serializable { @Id - @GeneratedValue(generator = "increment") - @GenericGenerator(name = "increment", strategy = "increment") - @Column(name = "subscription_id") - private long subscriptionId; - - @Column(name = "user_id", nullable = false) private long userId; - @Column(name = "album_id", nullable = false) + @Id private long albumId; @Column(name = "subscription_status", nullable = false) @@ -65,69 +59,6 @@ public class Subscription { } public String toString() { - return "Subscription: " + subscriptionId + " " + userId + " " + albumId + " " + status; - } - - // Test - public static void main(String[] args) { - SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); - - // Create subscription - try { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - - Subscription subscription = new Subscription(); - subscription.setUserId(1); - subscription.setAlbumId(1); - session.save(subscription); - tx.commit(); - session.close(); - } catch (Exception e) { - System.out.println("Error: " + e.getMessage()); - } - - // Get subscription from database - try { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - - Subscription lastSubsId = session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0); - Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId()); - System.out.println(subscription); - tx.commit(); - session.close(); - } catch (Exception e) { - System.out.println("Error: " + e.getMessage()); - } - - // Update subscription - try { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - - Subscription firstSubsId = session.createQuery("from subscription order by subscriptionId asc", Subscription.class).setMaxResults(1).list().get(0); - Subscription subscription = session.get(Subscription.class, firstSubsId.getSubscriptionId()); - subscription.setStatus(SubscriptionStatus.ACTIVE); - session.update(subscription); - tx.commit(); - session.close(); - } catch (Exception e) { - System.out.println("Error: " + e.getMessage()); - } - - // Delete subscription - try { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - - Subscription lastSubsId = session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0); - Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId()); - session.delete(subscription); - tx.commit(); - session.close(); - } catch (Exception e) { - System.out.println("Error: " + e.getMessage()); - } + return "Subscription: \n" + "userId :" + userId + " \nalbumId : " + albumId + " \nstatus: " + status; } } diff --git a/src/main/java/org/tonality/model/SubscriptionId.java b/src/main/java/org/tonality/model/SubscriptionId.java new file mode 100644 index 0000000000000000000000000000000000000000..6ad39bf9187689e396683abf5cfca1403565665c --- /dev/null +++ b/src/main/java/org/tonality/model/SubscriptionId.java @@ -0,0 +1,38 @@ +package org.tonality.model; + +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Column; +import java.io.Serializable; + +@Getter +@Setter +public class SubscriptionId implements Serializable { + @Column(name = "user_id", nullable = false) + private long userId; + + @Column(name = "album_id", nullable = false) + private long albumId; + + public SubscriptionId() {} + + public SubscriptionId(long userId, long albumId) { + this.userId = userId; + this.albumId = albumId; + } + + @Override + public boolean equals(Object o) { + if (o instanceof SubscriptionId) { + SubscriptionId other = (SubscriptionId) o; + return (userId == other.userId) && (albumId == other.albumId); + } + return false; + } + + @Override + public int hashCode() { + return (int) (userId + albumId); + } +} diff --git a/src/main/java/org/tonality/repository/Subscription.java b/src/main/java/org/tonality/repository/Subscription.java new file mode 100644 index 0000000000000000000000000000000000000000..17f85c5b6220b247c6fd8c8e08f4ce0a93a417d5 --- /dev/null +++ b/src/main/java/org/tonality/repository/Subscription.java @@ -0,0 +1,70 @@ +package org.tonality.repository; + +import org.tonality.model.SubscriptionId; + +import java.util.List; +import java.util.Map; + +public class Subscription extends BaseRepository<org.tonality.model.Subscription>{ + private static Subscription instance = null; + + @Override + protected Class<org.tonality.model.Subscription> getEntityClass() { + return org.tonality.model.Subscription.class; + } + + public static synchronized Subscription getInstance() { + if (instance == null) { + instance = new Subscription(); + } + return instance; + } + + // Test + public static void main(String[] args) { + Subscription subscription = Subscription.getInstance(); + + // add + org.tonality.model.Subscription entity = new org.tonality.model.Subscription(); + for (int i = 1; i < 4; i++) { + for (int j = 1; j < 4; j++) { + entity.setUserId(i); + entity.setAlbumId(j); + System.out.println(subscription.add(entity)); + } + } + + // update + entity.setStatus(org.tonality.type.SubscriptionStatus.ACTIVE); + System.out.println(subscription.update(entity)); + + // get by id + SubscriptionId id = new SubscriptionId(1, 1); + entity = subscription.getById(id); + System.out.println(entity); + + // get by conditions + Map<String, Object> andConditions = new java.util.HashMap<>(); + andConditions.put("albumId", 1); + java.util.Map<String, Object> orConditions = new java.util.HashMap<>(); + java.util.List<org.tonality.model.Subscription> entities = subscription.search(andConditions, orConditions); + for (org.tonality.model.Subscription e : entities) { + System.out.println(e + "\n"); + } + + // delete by id + id = new SubscriptionId(1, 2); + System.out.println(subscription.deleteById(id)); + + // delete by entity + entity = new org.tonality.model.Subscription(); + entity.setUserId(1); + entity.setAlbumId(3); + System.out.println("Successfully deleted : \n" + subscription.delete(entity)); + + // delete by conditions + andConditions = new java.util.HashMap<>(); + andConditions.put("albumId", 1); + System.out.println("Successfully deleted : \n" + subscription.delete(andConditions)); + } +}