Index: pom.xml
===================================================================
--- pom.xml	(révision 2566)
+++ pom.xml	(copie de travail)
@@ -277,6 +277,11 @@
         <version>1.2.2</version>
       </dependency>
       <dependency>
+        <groupId>postgresql</groupId>
+        <artifactId>postgresql</artifactId>
+        <version>8.3-603.jdbc3</version>
+      </dependency>
+      <dependency>
         <groupId>org.codehaus.woodstox</groupId>
         <artifactId>woodstox-core-lgpl</artifactId>
         <version>4.0.3</version>
Index: sonar-application/assembly.xml
===================================================================
--- sonar-application/assembly.xml	(révision 2566)
+++ sonar-application/assembly.xml	(copie de travail)
@@ -43,6 +43,14 @@
       <unpack>false</unpack>
       <scope>runtime</scope>
     </dependencySet>
+    <dependencySet>
+      <outputDirectory>extensions/jdbc-driver/postgre/</outputDirectory>
+      <includes>
+        <include>postgresql:postgresql</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+    </dependencySet>
   </dependencySets>
 
   <fileSets>
Index: sonar-application/pom.xml
===================================================================
--- sonar-application/pom.xml	(révision 2566)
+++ sonar-application/pom.xml	(copie de travail)
@@ -117,5 +117,10 @@
       <artifactId>jtds</artifactId>
       <scope>runtime</scope>
     </dependency>
+    <dependency>
+      <groupId>postgresql</groupId>
+      <artifactId>postgresql</artifactId>
+      <scope>runtime</scope>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file
Index: sonar-application/src/main/assembly/conf/sonar.properties
===================================================================
--- sonar-application/src/main/assembly/conf/sonar.properties	(révision 2566)
+++ sonar-application/src/main/assembly/conf/sonar.properties	(copie de travail)
@@ -47,6 +47,12 @@
 #sonar.jdbc.driverClassName:                net.sourceforge.jtds.jdbc.Driver
 #sonar.jdbc.validationQuery:                select 1
 
+# PostgreSQL
+# uncomment the 3 following lines to use PostgreSQL
+#sonar.jdbc.url:                            jdbc:postgresql://localhost/sonar
+#sonar.jdbc.driverClassName:                org.postgresql.Driver
+#sonar.jdbc.validationQuery:                select 1
+
 # generic settings
 sonar.jdbc.username:                       sonar
 sonar.jdbc.password:                       sonar
Index: sonar-application/src/main/assembly/conf/wrapper.conf
===================================================================
--- sonar-application/src/main/assembly/conf/wrapper.conf	(révision 2566)
+++ sonar-application/src/main/assembly/conf/wrapper.conf	(copie de travail)
@@ -39,7 +39,8 @@
 wrapper.java.classpath.4=../../extensions/jdbc-driver/mssql/*.jar
 wrapper.java.classpath.5=../../extensions/jdbc-driver/mysql/*.jar
 wrapper.java.classpath.6=../../extensions/jdbc-driver/oracle/*.jar
-wrapper.java.classpath.7=../../conf/
+wrapper.java.classpath.7=../../extensions/jdbc-driver/postgre/*.jar
+wrapper.java.classpath.8=../../conf/
 
 
 # Java Library Path (location of Wrapper.DLL or libwrapper.so)
Index: sonar-commons/src/main/java/org/sonar/commons/database/AbstractDatabaseConnector.java
===================================================================
--- sonar-commons/src/main/java/org/sonar/commons/database/AbstractDatabaseConnector.java	(révision 2566)
+++ sonar-commons/src/main/java/org/sonar/commons/database/AbstractDatabaseConnector.java	(copie de travail)
@@ -29,7 +29,6 @@
 import org.apache.commons.configuration.Configuration;
 import org.hibernate.dialect.DB2Dialect;
 import org.hibernate.dialect.HSQLDialect;
-import org.hibernate.dialect.PostgreSQLDialect;
 import org.hibernate.ejb.EntityManagerFactoryImpl;
 import org.hibernate.ejb.HibernateEntityManagerFactory;
 import org.hibernate.stat.QueryStatistics;
@@ -40,6 +39,7 @@
 import org.sonar.commons.database.dialect.MsSqlDialect;
 import org.sonar.commons.database.dialect.MySqlWithDecimalDialect;
 import org.sonar.commons.database.dialect.Oracle10gWithDecimalDialect;
+import org.sonar.commons.database.dialect.PostgreSQLWithDecimalDialect;
 
 public abstract class AbstractDatabaseConnector implements DatabaseConnector {
   protected static final Logger LOG_SQL = LoggerFactory.getLogger("org.hibernate.SQL");
@@ -237,7 +237,7 @@
       return Oracle10gWithDecimalDialect.class.getName();
     }
     if (DatabaseProperties.DIALECT_POSTGRE.equals(dialect)) {
-      return PostgreSQLDialect.class.getName();
+      return PostgreSQLWithDecimalDialect.class.getName();
     }
     return null;
   }
Index: sonar-commons/src/main/java/org/sonar/commons/database/DatabaseProperties.java
===================================================================
--- sonar-commons/src/main/java/org/sonar/commons/database/DatabaseProperties.java	(révision 2566)
+++ sonar-commons/src/main/java/org/sonar/commons/database/DatabaseProperties.java	(copie de travail)
@@ -42,7 +42,7 @@
   public static final String DIALECT_DB2 = "db2";
   public static final String DIALECT_MYSQL = "mysql";
   public static final String DIALECT_MSSQL = "mssql";
-  public static final String DIALECT_POSTGRE = "postgresql";
+  public static final String DIALECT_POSTGRE = "postgre";
   
   private DatabaseProperties() {
   }
Index: sonar-commons/src/main/java/org/sonar/commons/database/dialect/PostgreSQLWithDecimalDialect.java
===================================================================
--- sonar-commons/src/main/java/org/sonar/commons/database/dialect/PostgreSQLWithDecimalDialect.java	(révision 0)
+++ sonar-commons/src/main/java/org/sonar/commons/database/dialect/PostgreSQLWithDecimalDialect.java	(révision 0)
@@ -0,0 +1,36 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * 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
+ */
+package org.sonar.commons.database.dialect;
+
+import java.sql.Types;
+
+import org.hibernate.dialect.PostgreSQLDialect;
+import org.sonar.commons.database.id.PostgreSQLSequenceGenerator;
+
+public class PostgreSQLWithDecimalDialect extends PostgreSQLDialect {
+  public PostgreSQLWithDecimalDialect() {
+    super();
+    registerColumnType(Types.DOUBLE, "numeric($p,$s)");
+  }
+  
+  public Class getNativeIdentifierGeneratorClass() {
+    return PostgreSQLSequenceGenerator.class;
+  }
+}
\ No newline at end of file
Index: sonar-commons/src/main/java/org/sonar/commons/database/id/PostgreSQLSequenceGenerator.java
===================================================================
--- sonar-commons/src/main/java/org/sonar/commons/database/id/PostgreSQLSequenceGenerator.java	(révision 0)
+++ sonar-commons/src/main/java/org/sonar/commons/database/id/PostgreSQLSequenceGenerator.java	(révision 0)
@@ -0,0 +1,43 @@
+package org.sonar.commons.database.id;
+
+import java.util.Properties;
+
+import org.hibernate.MappingException;
+import org.hibernate.dialect.Dialect;
+import org.hibernate.id.PersistentIdentifierGenerator;
+import org.hibernate.id.SequenceGenerator;
+import org.hibernate.type.Type;
+
+/**
+ * if the underlying database is PostgreSQL, the sequence
+ * naming convention is different and includes the primary key
+ * column name
+ */
+public class PostgreSQLSequenceGenerator extends SequenceGenerator {
+
+  public static final String SEQUENCE_NAME_SEPARATOR = "_";
+  public static final String SEQUENCE_NAME_SUFFIX = "seq";
+
+  @Override
+  public void configure(Type type, Properties params, Dialect dialect)
+      throws MappingException {
+	
+    String tableName = params.getProperty(PersistentIdentifierGenerator.TABLE);
+    String columnName = params.getProperty(PersistentIdentifierGenerator.PK);
+
+    if (tableName != null && columnName != null) {
+      StringBuilder sequenceNameBuilder = new StringBuilder();
+
+      sequenceNameBuilder.append(tableName);
+      sequenceNameBuilder.append(SEQUENCE_NAME_SEPARATOR);
+      sequenceNameBuilder.append(columnName);
+      sequenceNameBuilder.append(SEQUENCE_NAME_SEPARATOR);
+      sequenceNameBuilder.append(SEQUENCE_NAME_SUFFIX);
+
+      params.setProperty(SEQUENCE, sequenceNameBuilder.toString());
+    }
+
+    super.configure(type, params, dialect);
+  }
+
+}
Index: sonar-web/src/main/webapp/WEB-INF/config/environment.rb
===================================================================
--- sonar-web/src/main/webapp/WEB-INF/config/environment.rb	(révision 2566)
+++ sonar-web/src/main/webapp/WEB-INF/config/environment.rb	(copie de travail)
@@ -116,11 +116,8 @@
   module PostgreSQL
     def modify_types(tp)
       tp[:primary_key] = "serial primary key"
-      tp[:string][:limit] = 255
       tp[:integer][:limit] = nil
       tp[:boolean][:limit] = nil
-
-      tp[:decimal] = { :name => "float8" }
       tp
     end
   end

