Author: bleny Date: 2012-04-02 16:35:39 +0200 (Mon, 02 Apr 2012) New Revision: 1594 Url: http://forge.codelutin.com/repositories/revision/wao/1594 Log: ajout d'une contrainte d'unicit?\195?\169 sur la relation WaoUser AllegroWallet Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/xmi/wao.properties trunk/wao-business/src/main/xmi/wao.zargo Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2012-04-02 13:04:49 UTC (rev 1593) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2012-04-02 14:35:39 UTC (rev 1594) @@ -30,6 +30,9 @@ import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.SynthesisId; import fr.ifremer.wao.bean.UserRole; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.hibernate.SQLQuery; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; @@ -39,6 +42,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -53,6 +57,11 @@ */ public class PostgresMigrationCallback extends WaoMigrationCallBack { + /** + * Logger + */ + private static final Log log = LogFactory.getLog(PostgresMigrationCallback.class); + @Override protected void createUserRoleColumn_1_1a(List<String> queries) { // Evo #2063 @@ -1133,4 +1142,41 @@ queries.add("CREATE INDEX idx_WaoUser_allegroWallet ON allegrowallet_waouser(waoUser); "); queries.add("CREATE INDEX idx_WaoUser_canReadBoats ON canreadboats_waouser(waoUser); "); } + + @Override + protected void addUniqueConstraintOnAllegroWallet_3_3_2(TopiaContextImplementor tx, List<String> queries) throws TopiaException { + + queries.add("DELETE FROM AllegroWallet_WaoUser"); + + SQLQuery query = tx.getHibernate(). + createSQLQuery("SELECT allegroWallet, waoUser FROM AllegroWallet_WaoUser;"); + + List<Object[]> result = query.list(); + + log.info(result.size() + " rows found in AllegroWallet_WaoUser relation in database"); + + Set<Pair<String, String>> associationsToPreserve = new HashSet<Pair<String, String>>(); + + String insertIntoAllegroWalletWaoUserSql = "INSERT INTO AllegroWallet_WaoUser (allegroWallet, waoUser) VALUES ('%s', '%s')"; + + for (Object[] row : result) { + + String allegroWalletTopiaId = (String) row[0]; + String waoUserTopiaId = (String) row[1]; + + boolean added = associationsToPreserve.add(Pair.of(allegroWalletTopiaId, waoUserTopiaId)); + + if (added) { + + queries.add(String.format(insertIntoAllegroWalletWaoUserSql, allegroWalletTopiaId, waoUserTopiaId)); + + } + } + + log.info(associationsToPreserve.size() + " rows will be preserved"); + + queries.add("ALTER TABLE AllegroWallet_WaoUser ADD CONSTRAINT AllegroWallet_WaoUser_pkey PRIMARY KEY (allegroWallet, waoUser)"); + + } + } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2012-04-02 13:04:49 UTC (rev 1593) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2012-04-02 14:35:39 UTC (rev 1594) @@ -191,7 +191,8 @@ VersionUtil.valueOf("3.0"), VersionUtil.valueOf("3.1"), VersionUtil.valueOf("3.2"), - VersionUtil.valueOf("3.3") + VersionUtil.valueOf("3.3"), + VersionUtil.valueOf("3.3.2") }; @Override @@ -641,4 +642,17 @@ protected abstract void deleteActivityCalendars_3_3(List<String> queries); + public void migrateTo_3_3_2(TopiaContextImplementor tx, + boolean showSql, + boolean showProgression) throws TopiaException { + + List<String> queries = new LinkedList<String>(); + + addUniqueConstraintOnAllegroWallet_3_3_2(tx, queries); + + String[] strings = queries.toArray(new String[queries.size()]); + executeSQL(tx, showSql, showProgression, strings); + } + + protected abstract void addUniqueConstraintOnAllegroWallet_3_3_2(TopiaContextImplementor tx, List<String> queries) throws TopiaException; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2012-04-02 13:04:49 UTC (rev 1593) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2012-04-02 14:35:39 UTC (rev 1594) @@ -1149,14 +1149,14 @@ if (boatAlreadyInWallet) { - if (log.isDebugEnabled()) { - log.debug("user " + observer + " already has " + boat + " in his allegroWallet"); + if (log.isInfoEnabled()) { + log.info("user " + observer + " already has " + boat + " in his allegroWallet"); } } else { - if (log.isDebugEnabled()) { - log.debug("user " + observer + " miss " + boat + " in his allegroWallet, adding"); + if (log.isInfoEnabled()) { + log.info("user " + observer + " miss " + boat + " in his allegroWallet, adding"); } String observerEmail = observer.getLogin(); Modified: trunk/wao-business/src/main/xmi/wao.properties =================================================================== --- trunk/wao-business/src/main/xmi/wao.properties 2012-04-02 13:04:49 UTC (rev 1593) +++ trunk/wao-business/src/main/xmi/wao.properties 2012-04-02 14:35:39 UTC (rev 1594) @@ -69,3 +69,5 @@ fr.ifremer.wao.entity.SampleRow.attribute.observers.tagValue.inverse=false fr.ifremer.wao.entity.WaoUser.attribute.SampleRow.tagValue.inverse=true + +fr.ifremer.wao.entity.WaoUser.attribute.allegroWallet.tagValue.unique=true Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ)