Now using JPA with a container managed entity manager.
[utils] / mythtv / monitor / src / main / java / org / wamblee / mythtv / Recording.java
index ca0ab1cb93ed0b7e6276e60dcadc55b5e5e94841..da7220de36fa58427899eb84501e58ba32fcb844 100644 (file)
@@ -20,6 +20,7 @@ import java.io.Serializable;
 import java.util.Date;
 
 import javax.persistence.Column;
+import javax.persistence.EmbeddedId;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.IdClass;
@@ -27,36 +28,27 @@ import javax.persistence.JoinColumn;
 import javax.persistence.JoinColumns;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
 
 /**
  * 
  */
 @Entity
 @Table(name="recorded")
-//@IdClass(RecordingPk.class)
 public class Recording implements Serializable {
+    
+    private RecordingPk _id;
 
-    //@Id
-    @ManyToOne(targetEntity=Channel.class)
-    @JoinColumn(name="chanid")
-    private Channel _channel;
-    @Id
-    @Column(name="starttime")
-    private Date _starttime;
-
-    @Column(name="basename")
     private String _basename;
 
-    @Column(name="progstart")
     private Date _progstart;
 
-    @Column(name="title")
     private String _title;
-
-    @Column(name="subtitle")
+    
     private String _subtitle;
     
-    @Column(name="filesize")
     private long _filesize;
 
     protected Recording() {
@@ -66,48 +58,100 @@ public class Recording implements Serializable {
     /**
      * @return the channel
      */
-    public Channel getChannel() {
-        return _channel;
+    //@Id
+    //@ManyToOne(targetEntity=Channel.class)
+    //@JoinColumn(name="chanid")
+    
+    /**
+     * @return the id
+     */
+    @EmbeddedId
+    public RecordingPk getId() {
+        return _id;
     }
-
+    
+    /**
+     * @param aId the id to set
+     */
+    public void setId(RecordingPk aId) {
+        _id = aId;
+    }
+   
     /**
      * @return the basename
      */
+    @Column(name="basename")
     public String getBasename() {
         return _basename;
     }
-
+    
     /**
-     * @return the progstart
+     * @param aBasename the basename to set
      */
-    public Date getStartTime() {
-        return _starttime;
+    public void setBasename(String aBasename) {
+        _basename = aBasename;
     }
 
     /**
      * @return the progstart
      */
+    @Column(name="progstart")
+    @Temporal(TemporalType.TIMESTAMP)
     public Date getProgstart() {
         return _progstart;
     }
     
+    /**
+     * @param aProgstart the progstart to set
+     */
+    public void setProgstart(Date aProgstart) {
+        _progstart = aProgstart;
+    }
+    
+    @Transient
+    public Channel getChannel() { 
+        return _id.getChannel();
+    }
+    
+    @Transient
+    public Date getStarttime() { 
+        return _id.getStartTime();
+    }
+    
     /**
      * @return the title
      */
+    @Column(name="title")
     public String getTitle() {
         return _title;
     }
+    
+    /**
+     * @param aTitle the title to set
+     */
+    public void setTitle(String aTitle) {
+        _title = aTitle;
+    }
 
     /**
      * @return the subtitle
      */
+    @Column(name="subtitle")
     public String getSubtitle() {
         return _subtitle;
     }
     
+    /**
+     * @param aSubtitle the subtitle to set
+     */
+    public void setSubtitle(String aSubtitle) {
+        _subtitle = aSubtitle;
+    }
+    
     /**
      * @return the filesize
      */
+    @Column(name="filesize")
     public long getFilesize() {
         return _filesize;
     }
@@ -121,7 +165,7 @@ public class Recording implements Serializable {
      */
     @Override
     public String toString() {
-        return "Recording(" + _channel + "," + _basename + "," + _progstart + "," + _title + "," + _subtitle + ")";
+        return "Recording(" + _id + "," + _basename + "," + _progstart + "," + _title + "," + _subtitle + ")";
     }
     
     /* (non-Javadoc)
@@ -133,7 +177,7 @@ public class Recording implements Serializable {
             return false;
         }
         Recording recording = (Recording)aObj; 
-        return _channel.equals(recording._channel) && _starttime.equals(recording._starttime); 
+        return _id.equals(recording._id); 
     }
     
     /* (non-Javadoc)
@@ -141,7 +185,7 @@ public class Recording implements Serializable {
      */
     @Override
     public int hashCode() {
-        return _channel.hashCode()*10 + ((int)_starttime.getTime() %10); 
+        return _id.hashCode(); 
     }
 
 }