diff --git a/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegments.java b/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegments.java index d34beb5..f5d905f 100755 --- a/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegments.java +++ b/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegments.java @@ -1,148 +1,148 @@ -package org.kpmp.geneExpression; - -import java.io.Serializable; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; - -@Entity -@Table(name = "rt_segments") -public class RTExpressionDataAllSegments implements RTExpressionData, Serializable { - - private static final long serialVersionUID = 9029734049386312455L; - @Id - @Column(name = "id") - private Integer id; - @Column(name = "gene_symbol") - private String geneSymbol; - @Column(name = "segment") - private String segment; - @Column(name = "segment_name") - private String segmentName; - @Column(name = "fold_change") - private Double foldChange; - @Column(name = "p_val") - private Double pVal; - @Column(name = "std_dev") - private Double stdDev; - @Column(name = "p_val_log10") - private Double pValLog10; - @Column(name = "enrollment_category") - private String enrollmentCategory; - @Column(name = "adj_p_val") - private Double adjPVal; - @Column(name = "sample_count") - private Integer sampleCount; - - @Override - public Integer getId() { - return id; - } - - @Override - public void setId(Integer id) { - this.id = id; - } - - @Override - public String getGeneSymbol() { - return geneSymbol; - } - - @Override - public void setGeneSymbol(String geneSymbol) { - this.geneSymbol = geneSymbol; - } - - @Override - public String getSegment() { - return segment; - } - - @Override - public void setSegment(String segment) { - this.segment = segment; - } - - @Override - public Double getFoldChange() { - return foldChange; - } - - @Override - public void setFoldChange(Double foldChange) { - this.foldChange = foldChange; - } - - @Override - public Double getPVal() { - return pVal; - } - - @Override - public void setPVal(Double pVal) { - this.pVal = pVal; - } - - @Override - public Double getStdDev() { - return stdDev; - } - - @Override - public void setStdDev(Double stdDev) { - this.stdDev = stdDev; - } - - @Override - public Double getPValLog10() { - return pValLog10; - } - - @Override - public void setPValLog10(Double pValLog10) { - this.pValLog10 = pValLog10; - } - - @Override - public String getEnrollmentCategory() { - return enrollmentCategory; - } - - @Override - public void setEnrollmentCategory(String enrollmentCategory) { - this.enrollmentCategory = enrollmentCategory; - } - - @Override - public Integer getSampleCount() { - return sampleCount; - } - - @Override - public void setSampleCount(Integer sampleCount) { - this.sampleCount = sampleCount; - } - - @Override - public String getSegmentName() { - return segmentName; - } - - @Override - public void setSegmentName(String segmentName) { - this.segmentName = segmentName; - } - - @Override - public Double getAdjPVal() { - return adjPVal; - } - - @Override - public void setAdjPVal(Double adjPVal) { - this.adjPVal = adjPVal; - } -} +package org.kpmp.geneExpression; + +import java.io.Serializable; + +import jakarta.persistence.*; + +@Entity +@Table(name = "rt_segments") +@IdClass(RTExpressionDataId.class) +public class RTExpressionDataAllSegments implements RTExpressionData, Serializable { + + private static final long serialVersionUID = 9029734049386312455L; + @Id + @Column(name = "id") + private Integer id; + @Id + @Column(name = "gene_symbol") + private String geneSymbol; + @Column(name = "segment") + private String segment; + @Column(name = "segment_name") + private String segmentName; + @Column(name = "fold_change") + private Double foldChange; + @Id + @Column(name = "p_val") + private Double pVal; + @Column(name = "std_dev") + private Double stdDev; + @Column(name = "p_val_log10") + private Double pValLog10; + @Column(name = "enrollment_category") + private String enrollmentCategory; + @Column(name = "adj_p_val") + private Double adjPVal; + @Column(name = "sample_count") + private Integer sampleCount; + + @Override + public Integer getId() { + return id; + } + + @Override + public void setId(Integer id) { + this.id = id; + } + + @Override + public String getGeneSymbol() { + return geneSymbol; + } + + @Override + public void setGeneSymbol(String geneSymbol) { + this.geneSymbol = geneSymbol; + } + + @Override + public String getSegment() { + return segment; + } + + @Override + public void setSegment(String segment) { + this.segment = segment; + } + + @Override + public Double getFoldChange() { + return foldChange; + } + + @Override + public void setFoldChange(Double foldChange) { + this.foldChange = foldChange; + } + + @Override + public Double getPVal() { + return pVal; + } + + @Override + public void setPVal(Double pVal) { + this.pVal = pVal; + } + + @Override + public Double getStdDev() { + return stdDev; + } + + @Override + public void setStdDev(Double stdDev) { + this.stdDev = stdDev; + } + + @Override + public Double getPValLog10() { + return pValLog10; + } + + @Override + public void setPValLog10(Double pValLog10) { + this.pValLog10 = pValLog10; + } + + @Override + public String getEnrollmentCategory() { + return enrollmentCategory; + } + + @Override + public void setEnrollmentCategory(String enrollmentCategory) { + this.enrollmentCategory = enrollmentCategory; + } + + @Override + public Integer getSampleCount() { + return sampleCount; + } + + @Override + public void setSampleCount(Integer sampleCount) { + this.sampleCount = sampleCount; + } + + @Override + public String getSegmentName() { + return segmentName; + } + + @Override + public void setSegmentName(String segmentName) { + this.segmentName = segmentName; + } + + @Override + public Double getAdjPVal() { + return adjPVal; + } + + @Override + public void setAdjPVal(Double adjPVal) { + this.adjPVal = adjPVal; + } +} diff --git a/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegmentsRepository.java b/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegmentsRepository.java index 7227691..79a5d5e 100755 --- a/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegmentsRepository.java +++ b/src/main/java/org/kpmp/geneExpression/RTExpressionDataAllSegmentsRepository.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Repository; @Repository -public interface RTExpressionDataAllSegmentsRepository extends CrudRepository { +public interface RTExpressionDataAllSegmentsRepository extends CrudRepository { @Cacheable("rtExpGeneSymbolAndEnrollmentCategoryWithCounts") @Query(value = "SELECT rts.*, rsv.sample_count, s.segment_name FROM rt_segments rts " + "LEFT JOIN rt_summary_v rsv ON rts.segment = rsv.segment AND rts.enrollment_category = rsv.enrollment_category " diff --git a/src/main/java/org/kpmp/geneExpression/RTExpressionDataId.java b/src/main/java/org/kpmp/geneExpression/RTExpressionDataId.java new file mode 100644 index 0000000..88c78d2 --- /dev/null +++ b/src/main/java/org/kpmp/geneExpression/RTExpressionDataId.java @@ -0,0 +1,39 @@ +package org.kpmp.geneExpression; + +import java.io.Serializable; +import java.util.Objects; + +public class RTExpressionDataId implements Serializable { + + private Integer id; + private String geneSymbol; + private Double pVal; + + public RTExpressionDataId() {} + + public RTExpressionDataId(Integer id, String geneSymbol, Double pVal) { + this.id = id; + this.geneSymbol = geneSymbol; + this.pVal = pVal; + } + + public Integer getId() { return id; } + public void setId(Integer id) { this.id = id; } + public String getGeneSymbol() { return geneSymbol; } + public void setGeneSymbol(String geneSymbol) { this.geneSymbol = geneSymbol; } + public Double getPVal() { return pVal; } + public void setPVal(Double pVal) { this.pVal = pVal; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RTExpressionDataId that = (RTExpressionDataId) o; + return Objects.equals(id, that.id) && Objects.equals(geneSymbol, that.geneSymbol) && Objects.equals(pVal, that.pVal); + } + + @Override + public int hashCode() { + return Objects.hash(id, geneSymbol, pVal); + } +} diff --git a/src/test/java/org/kpmp/geneExpression/RTExpressionDataIdTest.java b/src/test/java/org/kpmp/geneExpression/RTExpressionDataIdTest.java new file mode 100644 index 0000000..876c325 --- /dev/null +++ b/src/test/java/org/kpmp/geneExpression/RTExpressionDataIdTest.java @@ -0,0 +1,46 @@ +package org.kpmp.geneExpression; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import org.junit.jupiter.api.Test; + +class RTExpressionDataIdTest { + + @Test + void testGettersAndSetters() { + RTExpressionDataId idData = new RTExpressionDataId(); + + idData.setId(101); + idData.setGeneSymbol("SOD1"); + idData.setPVal(0.05); + + assertEquals(101, idData.getId()); + assertEquals("SOD1", idData.getGeneSymbol()); + assertEquals(0.05, idData.getPVal()); + } + + @Test + void testConstructor() { + RTExpressionDataId idData = new RTExpressionDataId(202, "GAPDH", 0.001); + + assertEquals(202, idData.getId()); + assertEquals("GAPDH", idData.getGeneSymbol()); + assertEquals(0.001, idData.getPVal()); + } + + @Test + void testEqualsAndHashCode() { + RTExpressionDataId id1 = new RTExpressionDataId(1, "ALB", 0.01); + RTExpressionDataId id2 = new RTExpressionDataId(1, "ALB", 0.01); + RTExpressionDataId id3 = new RTExpressionDataId(2, "ALB", 0.01); + RTExpressionDataId id4 = new RTExpressionDataId(1, "INS", 0.01); + + assertEquals(id1, id2); + assertNotEquals(id1, id3); + assertNotEquals(id1, id4); + assertNotEquals(null, id1); + + assertEquals(id1.hashCode(), id2.hashCode()); + assertNotEquals(id1.hashCode(), id3.hashCode()); + } +}