summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Bellingard <fabrice.bellingard@sonarsource.com>2012-09-27 09:58:53 +0200
committerFabrice Bellingard <fabrice.bellingard@sonarsource.com>2012-09-27 09:58:53 +0200
commitb723f9f83d33a962e9b949cfa05a8fb7d9e5f657 (patch)
tree6bceb6dedb5c091dcc7f89f31232e6ab3cbc83df
parentd999cece595da7c843de473fae9cc0631169a7fc (diff)
downloadsonarqube-b723f9f83d33a962e9b949cfa05a8fb7d9e5f657.tar.gz
sonarqube-b723f9f83d33a962e9b949cfa05a8fb7d9e5f657.zip
SONAR-3636 Add and feed a new column projects.created_at
=> The goal of this column is only to provide an additional piece of information when something wrong happens.
-rw-r--r--sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java2
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql1
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl3
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/database/model/ResourceModel.java66
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/db/migrate/330_add_created_at_on_projects.rb30
5 files changed, 78 insertions, 24 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
index 494807f1988..8aa94e8d2a5 100644
--- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
+++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
@@ -35,7 +35,7 @@ import java.util.List;
*/
public class DatabaseVersion implements BatchComponent, ServerComponent {
- public static final int LAST_VERSION = 321;
+ public static final int LAST_VERSION = 330;
public static enum Status {
UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL
diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql
index 1dc3d34d0e2..9b7211d2862 100644
--- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql
+++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql
@@ -171,6 +171,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('305');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('306');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('320');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('321');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('330');
INSERT INTO USERS(ID, LOGIN, NAME, EMAIL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT, REMEMBER_TOKEN, REMEMBER_TOKEN_EXPIRES_AT) VALUES (1, 'admin', 'Administrator', '', 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null);
ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2;
diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl b/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl
index df9d24c9993..a66ee4b5f0f 100644
--- a/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl
+++ b/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl
@@ -297,7 +297,8 @@ CREATE TABLE "PROJECTS" (
"LANGUAGE" VARCHAR(5),
"COPY_RESOURCE_ID" INTEGER,
"LONG_NAME" VARCHAR(256),
- "PERSON_ID" INTEGER
+ "PERSON_ID" INTEGER,
+ "CREATED_AT" TIMESTAMP
);
CREATE TABLE "REVIEWS" (
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/database/model/ResourceModel.java b/sonar-plugin-api/src/main/java/org/sonar/api/database/model/ResourceModel.java
index d4ff46a2f1a..ae8813822ac 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/database/model/ResourceModel.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/database/model/ResourceModel.java
@@ -29,8 +29,19 @@ import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.resources.ProjectLink;
import org.sonar.api.resources.Resource;
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -80,6 +91,10 @@ public class ResourceModel extends BaseIdentifiable implements Cloneable {
@Column(name = "person_id", updatable = true, nullable = true)
private Integer personId;
+ @Temporal(TemporalType.TIMESTAMP)
+ @Column(name = "created_at", updatable = true, nullable = true)
+ private Date createdAt;
+
@OneToMany(mappedBy = "resource", fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE})
@BatchSize(size = 8)
private List<ProjectLink> projectLinks = new ArrayList<ProjectLink>();
@@ -92,6 +107,7 @@ public class ResourceModel extends BaseIdentifiable implements Cloneable {
* Default constructor
*/
public ResourceModel() {
+ this.createdAt = new Date();
}
/**
@@ -104,6 +120,8 @@ public class ResourceModel extends BaseIdentifiable implements Cloneable {
* @param name the short name of the resource
*/
public ResourceModel(String scope, String key, String qualifier, Integer rootId, String name) {
+ // call this to have the "createdAt" field initialized
+ this();
this.scope = scope;
this.key = key;
this.rootId = rootId;
@@ -262,6 +280,10 @@ public class ResourceModel extends BaseIdentifiable implements Cloneable {
this.qualifier = qualifier;
}
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ResourceModel)) {
@@ -272,36 +294,36 @@ public class ResourceModel extends BaseIdentifiable implements Cloneable {
}
ResourceModel other = (ResourceModel) obj;
return new EqualsBuilder()
- .append(key, other.key)
- .append(enabled, other.enabled)
- .append(rootId, other.rootId)
- .isEquals();
+ .append(key, other.key)
+ .append(enabled, other.enabled)
+ .append(rootId, other.rootId)
+ .isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
- .append(key)
- .append(enabled)
- .append(rootId)
- .toHashCode();
+ .append(key)
+ .append(enabled)
+ .append(rootId)
+ .toHashCode();
}
@Override
public String toString() {
return new ToStringBuilder(this)
- .append("id", getId())
- .append("key", key)
- .append("scope", scope)
- .append("qualifier", qualifier)
- .append("name", name)
- .append("longName", longName)
- .append("lang", languageKey)
- .append("enabled", enabled)
- .append("rootId", rootId)
- .append("copyResourceId", copyResourceId)
- .append("personId", personId)
- .toString();
+ .append("id", getId())
+ .append("key", key)
+ .append("scope", scope)
+ .append("qualifier", qualifier)
+ .append("name", name)
+ .append("longName", longName)
+ .append("lang", languageKey)
+ .append("enabled", enabled)
+ .append("rootId", rootId)
+ .append("copyResourceId", copyResourceId)
+ .append("personId", personId)
+ .toString();
}
@Override
@@ -340,4 +362,4 @@ public class ResourceModel extends BaseIdentifiable implements Cloneable {
return model;
}
-} \ No newline at end of file
+}
diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/330_add_created_at_on_projects.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/330_add_created_at_on_projects.rb
new file mode 100644
index 00000000000..473941b29c8
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/330_add_created_at_on_projects.rb
@@ -0,0 +1,30 @@
+#
+# Sonar, open source software quality management tool.
+# Copyright (C) 2008-2012 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# Sonar is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# Sonar is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with Sonar; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+#
+
+#
+# Sonar 3.3
+#
+class AddCreatedAtOnProjects < ActiveRecord::Migration
+
+ def self.up
+ add_column 'projects', 'created_at', :datetime, :null => true
+ end
+
+end