001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2009 SonarSource SA 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.api.database.model; 021 022 import org.apache.commons.lang.builder.EqualsBuilder; 023 import org.apache.commons.lang.builder.HashCodeBuilder; 024 import org.apache.commons.lang.builder.ToStringBuilder; 025 import org.sonar.api.database.BaseIdentifiable; 026 027 import java.util.Date; 028 import javax.persistence.*; 029 030 /** 031 * Class to map an aysync measure with hibernate model 032 */ 033 @Entity 034 @Table(name = "async_measure_snapshots") 035 public class AsyncMeasureSnapshot extends BaseIdentifiable { 036 037 @Column(name = "project_measure_id", updatable = true, nullable = true) 038 private Long measureId; 039 040 @Temporal(TemporalType.TIMESTAMP) 041 @Column(name = "measure_date", updatable = true, nullable = true) 042 private Date measureDate; 043 044 @Column(name = "snapshot_id", updatable = true, nullable = true) 045 private Integer snapshotId; 046 047 @Temporal(TemporalType.TIMESTAMP) 048 @Column(name = "snapshot_date", updatable = true, nullable = true) 049 private Date snapshotDate; 050 051 @Column(name = "metric_id", updatable = true, nullable = true) 052 private Integer metricId; 053 054 @Column(name = "project_id", updatable = true, nullable = true) 055 private Integer projectId; 056 057 /** 058 * This is the constructor to use 059 * 060 * @param measureId 061 * @param snapshotId the snapshot id to which the measure is attached 062 * @param measureDate the date of the measure 063 * @param snapshotDate the snapshot date 064 * @param metricId the metric the measure is attached to 065 * @param projectId the id of the project 066 */ 067 public AsyncMeasureSnapshot(Long measureId, Integer snapshotId, Date measureDate, Date snapshotDate, Integer metricId, Integer projectId) { 068 this.measureId = measureId; 069 this.measureDate = measureDate; 070 this.snapshotId = snapshotId; 071 this.snapshotDate = snapshotDate; 072 this.projectId = projectId; 073 this.metricId = metricId; 074 } 075 076 /** 077 * Default constructor 078 */ 079 public AsyncMeasureSnapshot() { 080 } 081 082 public Long getMeasureId() { 083 return measureId; 084 } 085 086 public void setMeasureId(Long measureId) { 087 this.measureId = measureId; 088 } 089 090 public Integer getSnapshotId() { 091 return snapshotId; 092 } 093 094 public void setSnapshotId(Integer snapshotId) { 095 this.snapshotId = snapshotId; 096 } 097 098 public Date getMeasureDate() { 099 return measureDate; 100 } 101 102 public void setMeasureDate(Date measureDate) { 103 this.measureDate = measureDate; 104 } 105 106 public Date getSnapshotDate() { 107 return snapshotDate; 108 } 109 110 public void setSnapshotDate(Date snapshotDate) { 111 this.snapshotDate = snapshotDate; 112 } 113 114 public Integer getMetricId() { 115 return metricId; 116 } 117 118 public void setMetricId(Integer metricId) { 119 this.metricId = metricId; 120 } 121 122 public Integer getProjectId() { 123 return projectId; 124 } 125 126 public void setProjectId(Integer projectId) { 127 this.projectId = projectId; 128 } 129 130 public void setMeasure(MeasureModel measure) { 131 setMeasureId(measure.getId()); 132 setMeasureDate(measure.getMeasureDate()); 133 } 134 135 @Override 136 public boolean equals(Object obj) { 137 if (!(obj instanceof AsyncMeasureSnapshot)) { 138 return false; 139 } 140 if (this == obj) { 141 return true; 142 } 143 AsyncMeasureSnapshot other = (AsyncMeasureSnapshot) obj; 144 return new EqualsBuilder() 145 .append(measureId, other.getMeasureId()) 146 .append(measureDate, other.getMeasureDate()) 147 .append(snapshotId, other.getSnapshotId()) 148 .append(snapshotDate, other.getSnapshotDate()) 149 .isEquals(); 150 } 151 152 @Override 153 public int hashCode() { 154 return new HashCodeBuilder(17, 37) 155 .append(measureId) 156 .append(measureDate) 157 .append(snapshotDate) 158 .append(snapshotId) 159 .toHashCode(); 160 } 161 162 @Override 163 public String toString() { 164 return new ToStringBuilder(this) 165 .append("id", getId()) 166 .append("measureId", measureId) 167 .append("measureDate", measureDate) 168 .append("snapshotId", snapshotId) 169 .append("snapshotDate", snapshotDate) 170 .toString(); 171 } 172 }