Rapport des demandes du serveur Redmine

Sujet Description Statut Par Type Priorité Version Catégorie Date de création
[UI] Sur chaque page de traitement, mettre un bouton qui permettrait de rejouer le traitement Sur chaque page de traitement, rajouter un bouton « Refaire le traitement », qui permettrait de rejouer le traitement après une éventuelle intervention manuelle sur la base, sans avoir à rejouer tous les traitements du niveau. A condition que cela soit faisable sans risque, notamment par le jeu des flags qui permettent de déterminer quels traitements ont été faits/non faits. Proposition tchemit Evolution Bas Backlog - -
Renommer un champ (note pour plus tard...) Il faudrait renommer le champ samplespecies.supersamplenumber en samplespecies.subsamplenumber Annulée tchemit Evolution Bas Backlog - -
Améliorer l'UI de sélection des marées du N0 suite à la prise en compte des bases "sampleOnly" La possibilité d'importer des bases "sampleOnly" (bases échantillons espagnoles par exemple) produit un effet de bord : Alors que ces marées ne peuvent pas et ne doivent pas subir de traitements N0 (car elles n'ont pas de captures), elles influent sur les possibilités de sélection qui sont offertes à l'utilisateur : - des cases à cocher "Espagne" apparaissent sur la sélection Flotte et Pavillon - les bornes de dates peuvent être élargies Alors que les marées qui produisent ceci ne seront jamais traitées NO. Il faudrait donc améliorer les requêtes qui fabriquent ces filtres en éliminant les trips de type trip.samplesOnly=true Proposition tchemit Evolution Normal Backlog - -
Aligner les topiaid espèces sur ceux d'observe Est-ce possible ? la présence du FQN de la classe dans le topiaid pose-t-elle un problème ? Si c'est possible, la liste des couples topiaid/faoid d'observe est en PJ dans 2 fichiers. Sinon, y aurait-il une solution pas trop compliquée pour du moyen terme ? Par Moyen terme, j'entends : - préparer le terrain dans t3+ et placer cette entité dans un package indépendant du nom du projet. Du genre : fr.ird.commons.entites - dans une prochaine version d'ObServe (quand on aura des sous), faire de même ? Constatée tchemit Anomalie Normal Backlog - -
labellisation d'une marée Lorsqu'une marée est citée, où que ce soit, donc avec bateau+date débarquement, rajouter aussi le nom de l'océan, pour plus de facilité de lecture. Par exemple, dans la page des stats et dans les logs. Proposition tchemit Evolution Bas Backlog - -
Mise à niveau des calculs   En cours tchemit Evolution Normal Backlog - -
Retour sur les calculs du niveau 3   En cours tchemit Evolution Normal Backlog - -
Export balbaya - Operation Echantillon (validation) Valider l'opération et voir comment bien filtrer au début les échantillons exportables. En cours tchemit Tâche Normal Backlog - -
Export balbaya - Operation Activité (validation) Valider l'opération et voir comment bien filtrer au début les activités exportables (passé le niveau 2). En cours tchemit Tâche Normal Backlog - -
Symboliser une migration du modèle de données sur l'UI si elle se produit Mettre un message du genre "Votre base était en version x.x et vient d'être migrée en version y.y" Proposition tchemit Evolution Bas Backlog - -
Modifier le calcul du RF1 en prenant en compte le débarquement de Faux-poisson Une partie du poisson étant vendu sur le marché local, il figure dans les captures élémentaires mais pas dans les lots commerciaux. Pourtant le RF1 est le rapport lots commerciaux/captures élémentaires, puis est appliqué aux captures élémentaires. En toute rigueur il faut donc faire RF1 = (lots commerciaux+estimation FP)/captures élementaires. Cependant les estimations de FP sont très approximatives et pourraient porter préjudice à la qualité du RF1. A discuter avec les scientifiques de l'équipe avant l'implantation. Proposition pcauquil Evolution Normal Backlog - -
Créer un t3-tools Comme sous ObServe... ... l'outils en ligne de commande pour générer des topiaid, avec les nouvelles entités de référentiel Intégrer un .bat pour l'utiliser sous Windows Proposition tchemit Evolution Normal Backlog - -
Marées sans logbooks (i.e. objets du rf2) : gestion de leurs échantillons Les marées sans logbook (sans activités) peuvent tout-à-fait avoir des échantillons. Or, comme dans t3+ les échantillons-calée (SampleWell) sont rattachés à des Activity, la base ne peut pas les stocker (ni leurs positions, qui sont stockées dans l'entité Activity). Par contre AVDTH permet ceci car : * il n'y a pas de FK entre ECH_CALEE et ACTIVITE * la position LAT/LON des echantillons-calée est doublement présente : dans ACTIVITE (lorsqu'elle existe) et dans ECH_CALEE A terme il faudra pouvoir gérer correctement ces marées. La solution serait de créer lors de l'import des Activity fictives, de type "Calée +", et dont les champs Activity.latitude et Activity.longitude prendront les valeurs des champs AVDTH ECH_CALEE.V_LAT/V_LON (et non celles de ACTIVITE.V_LAT/V_LON comme dans le cas standard). Proposition - Evolution Normal Backlog - -
Export balbaya - Operation Marée (validation) Valider l'opération et voir comment bien filtrer au début les marées exportables. À faire tchemit Tâche Normal Backlog - -
Windows/Mauvais affichage des caractères accentués dans le navigateur Sous Windows (PG+Tomcat+navigateur), les caractères accentués des logs ne sont pas correctement affichés (problème de détection de l'encodage). Teste effectué sous Firefox 19.0 sous Windows XP, confirmé aussi sous Firefox 42 pour Windows 7. Je ne sais pas si c'est un problème côté serveur ou côté client, sanchant que j'exécute t3+ en local. Visiblement ça ne concerne que le texte des logs. Les libellés de l'interface sont corrects ! Il faut arranger ça. Constatée tchemit Anomalie Normal Backlog - -
N0.4 (Calcul du nombre de calées et durée des calées) - Petite erreur dans le log Le log de ce traitement donne 4 valeurs synthétiques : - Nombre de navires : ok - Nombre de marées : ok - Nombre de calées : ko - Nombre de calées positives : ok Nombre de calées : - actuellement le log retourne l'équivalent de la requête SELECT COUNT(*) FROM ACTIVITY (sur les trips concernés pas le traitement bien sûr) - il faut plutôt : SELECT COUNT(a.setcount) FROM ACTIVITY Car toutes les activités ne sont pas des calées, mais 1 ligne d'activité peut contenir plusieurs calées (d'où le count) Vérifier que le log "nombre de calées positives" fonctionne sur le même principe avec une requête du type : SELECT SUM(a.positivesetcount) FROM activity a Constatée tchemit Anomalie Normal Backlog - -
[IMPORT] Permettre d'importer automatiquement des données de référence Actuellement il existe une possibilité d'importer automatiquement dans le référentiel des bateaux qui ne seraient pas trouvés dans le référentiel de t3+. Ceci est permis par une option d'import, dans le cas particulier des bases "sample only". On aimerait étendre cette possibilité d'import automatique à toutes les entités du référentiel. Ceci nous faciliterait grandement les mises à jour annuelles de référentiel. La mise à jour de t3+ avec une base AVDTH de référence serait ainsi entièrement automatisée. Proposition tchemit Evolution Normal Backlog - -
Table de référence conversion ld1-lf à mettre à jour par IRD Les sommes des pourcentages données dans la table ld1-lf ne sont pas toutes égales à 100. Possible qu'il s'agit de simples questions d'arrondis sur le table d'origine. Fournir la table de référence mise à jour et l'intégrer dans le référentiel t3+.
-- Check that the sum of percentages of each ld1 class into LF class is equal to 1 for each specues and ocean
SELECT s.code,s.code3l,o.libelle,ld1class,SUM(ratio) AS test
FROM specieslengthstep sls INNER JOIN species s ON (sls.species=s.topiaid) INNER JOIN ocean o ON (sls.ocean=o.topiaid)
GROUP BY s.code,s.code3l,o.libelle,ld1class;
Proposition emmanuel.chassot@ird.fr Evolution Normal Backlog - -
Faciliter l'installation pour les utilisateurs peu avertis T3+ va être utilisé par des utilisateurs distants pour lesquels notre capacité à les aider est limitée. Certains vont inévitablement installer t3+ non pas sur un serveur, mais sur leur poste de travail (sous Windows). Il faut faciliter aux maximum cette installation. Idées : - Installation de PG : inévitable, mais très facile sous Windows, y compris PostGIS, géré par l'installeur automatique - Installation de Tomcat : On pourrait imaginer une version de t3+ avec un Jetty embarqué. A étudier. Sinon, installer Tomcat sous Win reste facile - Configuration de Tomcat : * augmenter sa mémoire (-Xmx). Valeur dépend de la RAM dispo, t3+ étant gourmand en RAM sur de gros traitements, il faut lui en donner un maximum. Je ne vois pas comment automatiser ce paramétrage. * définir le répertoire des logs de t3+ : actuellement sous forme de paramètre JVM (-Duser.log.dir). On peut sûrement se passer de ce paramétrage. Comment ? * Ne plus exiger la création manuelle du fichier t3-config pour une installation sous Windows dans les conditions par défaut, et ne plus exiger la modification de sa variable data.dir - Ne plus exiger d'opérations manuelles au niveau de Postgres (création d'une base vide, exécution du t3-installer). Scénario : * On démarre l'appli web, on s'identifie (on n'est pas encore connecté à une base t3) * Sur la page "Choisir une base de travail" et/ou "Editer mes préférences" devrait apparaître un bouton "Créer une nouvelle base t3" (ça peut aussi être une case à cocher "Créer cette base" sur la page de création d'un nouveau profil de connexion) * On remplit les paramètres habituels (uri jdbc, description, login, password), avec l'exigence que le login soit un role Postgres disposant des droits CREATE USER (pour créer automatiquement l'utilisateur 't3-admin' s'il n'existe pas encore) et CREATE DATABASE * La base est crée, et le t3-installer exécuté dessus * Si ok, la nouvelle base devient la base active Proposition tchemit Evolution Normal Backlog - -
Revoir le modèle de données pour mieux assurer l'immunité des données source Actuellement, lorsque des calculs sont réalisés : * soit de nouveaux enregistrements sont crées dans des tables dédiées * soit des marqueurs sont positionnés dans des enregistrements existants, notamment dans les données source (issues d'AVDTH) Ceci rend la réinitialisation des calculs compliquée, et exige d'aller écrire dans les données sources. Il serait sûrement judicieux de faire évoluer ceci de sorte que les enregistrements des données initiales puissent rester intacts, et donc probablement de rajouter des tables destinées aux calculs intermédiaires. Penser aussi à une table de gestion des états, plutôt que de stocker les états dans les mêmes tables que les données. Proposition tchemit Evolution Normal Backlog - -
[PERSISTENCE] Renommage de tables et champs Renommer l'entité SampleWell en SampleSet Renommer tous les champs libelle en label Renommer champ samplespecies.supersamplenumber en samplespecies.subsamplenumber Proposition tchemit Evolution Bas Backlog - -
[N3] Nouvelle option de configuration du traitement Sur l'écran de configuration du N3 on souhaite rajouter 2 boutons radio, qui conduiront aux comportements suivants : * extrapoler les échantillons proportionnellement aux captures des catégories -10/+10 kg (c'est l'algo actuel) * extrapoler les échantillons uniformément (ignorer la répartition +10/-10 kg des captures) En attente validation client tchemit Evolution Normal 2.0 - -
Problème sur l'import AVDTH sur version de développement *Constaté sur la version de développement (projet source exécuté depuis SVN/Maven)* Le projet compile, s'exécute, mais bloque sur les premières actions (ici en l'occurence, analyse de la source lors d'un import AVDTH), sûrement dû à l'évolution de certaines dépendances.
freemarker.core.InvalidReferenceException: Expression action.actionContext.actionName is undefined on line 24, column 3 in ftl/header.ftl.
    freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
    freemarker.core.Expression.getStringValue(Expression.java:118)
    freemarker.core.Expression.getStringValue(Expression.java:93)
    freemarker.core.DollarVariable.accept(DollarVariable.java:76)
    freemarker.core.Environment.visit(Environment.java:221)
    freemarker.core.MixedContent.accept(MixedContent.java:92)
    freemarker.core.Environment.visit(Environment.java:221)
    freemarker.core.Environment.include(Environment.java:1508)
    freemarker.core.Include.accept(Include.java:169)
    freemarker.core.Environment.visit(Environment.java:221)
    freemarker.core.MixedContent.accept(MixedContent.java:92)
    freemarker.core.Environment.visit(Environment.java:221)
    freemarker.core.Environment.process(Environment.java:199)
    freemarker.template.Template.process(Template.java:259)
    fr.ird.t3.services.FreeMarkerService.renderTemplate(FreeMarkerService.java:61)
    fr.ird.t3.web.actions.AbstractRunAction.buildActionResume(AbstractRunAction.java:191)
    fr.ird.t3.web.actions.AbstractRunAction.executeAction(AbstractRunAction.java:141)
    fr.ird.t3.web.actions.AbstractRunAction.execute(AbstractRunAction.java:118)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
    org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57)
    java.lang.Thread.run(Thread.java:744)

Constatée tchemit Anomalie Bas 2.0 - -
[IMPORT] Imperfection dans l'import AVDTH Lorsque des codes espèces requis par des données AVDTH sont absents du référentiel Species de t3+, celui-ci l'indique lors d'une tentative d'import et refuse cet import. Par contre, si le code espèce existe, mais qu'une catégorie logbook manque dans t3+, l'import se fait et le champ elementarycatch.weightcategorylogbook est mis à NULL. Ceci se solde par une NullPointerException lors du calcul des RF1. Il faut détecter ce cas et bloquer l'import, tout comme cela est fait pour l'absence d'une code espèce requis. En attente validation client tchemit Anomalie Haut 2.0 - -
[N2] Comportement de l'algorithme lorsque la dernière strate échantillon est atteinte Ce problème #7788 est toujours présent malgré le traitement du ticket. A corriger aussitôt que possible Terminée pcauquil Anomalie Immédiat 2.0 - -
Retour sur les calculs du niveau 2   Terminée tchemit Evolution Normal 2.0 - -
[N2] Certaines calées ne sont pas traitées au N2 Certaines calées ne sont pas traitées au N2. Exemple : fr.ird.t3.entities.data.Activity#1454431295143#0.2823949958628842 ( CAP SAINTE MARIE(600) # Date débarquement 2014−07−28 # Date activité 2014−06−30) On souhaite comprendre pourquoi (quel critère les exclut du traitement N2) ? Terminée tchemit Anomalie Urgent 2.0 - -
Souci de mise en page web Sur la page "Gérer les marées", la mise en page déborde de l'écran à droite. Voir la PJ. Cela génère un ascenseur horizontal, pourtant inutile. Constatée tchemit Anomalie Bas 2.0 - -
[H2] Base H2 parfois corrompue sur déconnexion/reconnexion à l'application Lorsqu’on s’identifie/se déconnecte plusieurs fois de l’UI de t3+, il arrive qu’il ne soit plus possible de de se ré identifier. L’UI indique : Mot de passe incorrect, alors qu’il est correct. A ce moment là dans les logs on trouve seulement ceci :
2015/11/12 12:41:09  INFO (ImportInputSourceAction.java:157) Import trip MANAPANY - Sat Aug 01 00:00:00 GST 2015
2015/11/12 12:41:09  INFO (ImportInputSourceAction.java:157) Import trip CAP SAINT VINCENT 2 - Tue Sep 08 00:00:00 GST 2015
2015/11/12 12:41:09  INFO (ImportInputSourceAction.java:157) Import trip TORRE GIULIA - Tue Apr 07 00:00:00 GST 2015
2015/11/12 12:41:44  INFO (T3ApplicationContext.java:110) Destroy user session for [admin]
2015/11/12 12:41:44  INFO (T3Session.java:456) Close user session for [admin]
2015/11/12 12:41:44  INFO (T3EntityHelper.java:319) release database jdbc:postgresql://localhost/t3-151-03-sc
2015/11/12 12:41:44  INFO (CheckLogguedInterceptor.java:62) No user loggued!
2015/11/12 12:41:44  INFO (AbstractCheckInterceptor.java:67) Will redirect to user/login!input?redirectAction=/home
2015/11/12 12:43:18  INFO (CommonsLogger.java:42) try to log for user admin
2015/11/12 12:43:28  INFO (CommonsLogger.java:42) try to log for user admin
2015/11/12 12:43:37  INFO (CommonsLogger.java:42) try to log for user admin
Après avoir redémarré l’application (pas Tomcat), on trouve ceci :
nov. 12, 2015 12:47:36 PM org.apache.catalina.core.ApplicationContext log
INFOS: HTMLManager: list: Listing contexts for virtual host 'localhost'
nov. 12, 2015 12:47:37 PM org.apache.catalina.core.ApplicationContext log
INFOS: HTMLManager: start: Starting web application '/t3-web-1.5.1'
nov. 12, 2015 12:47:38 PM org.apache.jasper.servlet.TldScanner scanJars
INFOS: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
nov. 12, 2015 12:47:40 PM org.apache.catalina.core.ApplicationContext log
INFOS: HTMLManager: list: Listing contexts for virtual host 'localhost'
nov. 12, 2015 12:52:10 PM org.apache.catalina.core.ApplicationContext log
INFOS: HTMLManager: stop: Stopping web application '/t3-web-1.5.1'
nov. 12, 2015 12:52:10 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
AVERTISSEMENT: The web application [t3-web-1.5.1] registered the JDBC driver [org.postgresql.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
nov. 12, 2015 12:52:10 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
AVERTISSEMENT: The web application [t3-web-1.5.1] registered the JDBC driver [org.h2.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
nov. 12, 2015 12:52:10 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
AVERTISSEMENT: The web application [t3-web-1.5.1] appears to have started a thread named [H2 File Lock Watchdog C:/var/local/t3/db/t3-user.lock.db] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Thread.sleep(Native Method)
 org.h2.store.FileLock.run(FileLock.java:492)
 java.lang.Thread.run(Unknown Source)
nov. 12, 2015 12:52:10 PM org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalMapForLeaks
GRAVE: The web application [t3-web-1.5.1] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@220ddf2d]) and a value of type [com.opensymphony.xwork2.inject.ContainerImpl] (value [com.opensymphony.xwork2.inject.ContainerImpl@70837a2b]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
nov. 12, 2015 12:52:10 PM org.apache.catalina.core.ApplicationContext log
INFOS: HTMLManager: list: Listing contexts for virtual host 'localhost'

On parvient à relancer l'application en supprimant le dossier qui contient la base H2. Ces logs proviennent d'un Tomcat 64 bits sur OS Windows 7 et JVM 1.8.0_51, mais le problème a aussi été identifié sous Ubuntu.
Constatée tchemit Anomalie Bas 2.0 - -
Revoir les traductions Je fournis un fichier de traductions à complêter / corriger / améliorer. Il pourra être intégrer lors de la prochaine version. Pour plus de facilité pour l'avenir, le fichier sera publié dans l'onglet *fichiers* du projet à chaque nouvelle livraison. En cours pcauquil Tâche Normal 2.0 - -
Gestion de valeurs nulles dans le référentiel Il se peut que dans les tables de référence, certaines données, optionnelles, soient à null. Exemple : Vessel.searchMaximum peut être null. Dans ce cas, lors de l'analyse d'une source de données avant import, mais probablement en d'autres endroits, le processus plante et ce message se retrouve dans les logs. Pour autant, l'interface graphique n'affiche rien qui explique le problème. Cf. la capture d'écran en PJ qui montre de plus que le message d'erreur est erroné : on affiche "0 marées de la source de données ne peuvent pas être importées." alors qu'aucune marée des 55 présentes n'est importée. Explication : on essaye d'attribuer une valeur nulle au setter d'un type primitif (Vessel.searchMaximum dans ce cas). Peut-être faut-il changer ces propriétés en types objets ?
2014/02/07 04:21:23 ERROR (AnalyzeInputSourceAction.java:170) Error while init input pilot
org.nuiton.topia.TopiaException: Une erreur est apparue pendant le recherche (requête FROM fr.ird.t3.entities.reference.Vessel) : Null value was assigned to a property of primitive type setter of fr.ird.t3.entities.reference.VesselImpl.searchMaximum
    at org.nuiton.topia.framework.TopiaContextImpl.findAll(TopiaContextImpl.java:1016)
    at org.nuiton.topia.framework.TopiaQuery.execute(TopiaQuery.java:1389)
    at org.nuiton.topia.framework.TopiaQuery.executeToEntityList(TopiaQuery.java:1409)
    at org.nuiton.topia.persistence.TopiaDAOImpl.findAllByQuery(TopiaDAOImpl.java:481)
    at org.nuiton.topia.persistence.TopiaDAOImpl.findAll(TopiaDAOImpl.java:442)
    at fr.ird.t3.actions.io.input.AnalyzeInputSourceAction.getSafeReferences(AnalyzeInputSourceAction.java:670)
    at fr.ird.t3.actions.io.input.AnalyzeInputSourceAction.prepareAction(AnalyzeInputSourceAction.java:156)
    at fr.ird.t3.actions.T3Action.run(T3Action.java:82)
    at fr.ird.t3.web.actions.AbstractRunAction.executeAction(AbstractRunAction.java:132)
    at fr.ird.t3.web.actions.AbstractRunAction.execute(AbstractRunAction.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
    at org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57)
    at java.lang.Thread.run(Thread.java:701)
Caused by: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of fr.ird.t3.entities.reference.VesselImpl.searchMaximum
    at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:143)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:583)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:229)
    at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3848)
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982)
    at org.hibernate.loader.Loader.doQuery(Loader.java:857)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2542)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:459)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:365)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.nuiton.topia.framework.TopiaContextImpl.findAll(TopiaContextImpl.java:1012)
    ... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set float field fr.ird.t3.entities.reference.VesselAbstract.searchMaximum to null value
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
    at sun.reflect.UnsafeFloatFieldAccessorImpl.set(UnsafeFloatFieldAccessorImpl.java:80)
    at java.lang.reflect.Field.set(Field.java:736)
    at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:139)

Terminée tchemit Evolution Normal 2.0 - -
[N3] Changer l'ordre d'affichage et la valeur par défaut d'un paramètre de configuration Dans la configuration N3 on souhaite inverser les 2 options de "Traitement à appliquer aux échantillons" : * 1er choix : Conserver leurs échantillons en l'état (sélectionné par défaut) * 2d choix : Appliquer les structures de tailles de la strate échantillons Terminée tchemit Evolution Normal 2.0 - -
[INSTALLEUR] L'installeur génère des erreurs (sans conséquences) L'installeur génère des erreurs. Elle sont sans conséquences mais si possible on aimerait les éviter.
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Well_wellSetAllSpecies
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_well_wellsetallspecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Well_wellPlan
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_well_wellplan » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Activity_extrapolatedAllSetSpeciesFrequency
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_activity_extrapolatedallsetspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Activity_correctedElementaryCatch
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_activity_correctedelementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Activity_setSpeciesCatWeight
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_activity_setspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Activity_setSpeciesFrequency
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_activity_setspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Activity_elementaryCatch
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_activity_elementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Activity_activityFishingContext
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_activity_activityfishingcontext » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_SampleWell_sampleSetSpeciesCatWeight
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_samplewell_samplesetspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_SampleWell_sampleSetSpeciesFrequency
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_samplewell_samplesetspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_StandardiseSampleSpecies_standardiseSampleSpeciesFrequency
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_standardisesamplespecies_standardisesamplespeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_LocalMarketSampleSpecies_localMarketSampleSpeciesFrequency
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_localmarketsamplespecies_localmarketsamplespeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Sample_standardiseSampleSpecies
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_sample_standardisesamplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Sample_sampleSpecies
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_sample_samplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Sample_sampleWell
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_sample_samplewell » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_localMarketSample
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_localmarketsample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_localMarketBatch
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_localmarketbatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_localMarketSurvey
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_localmarketsurvey » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_well
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_well » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_sample
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_sample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_elementaryLanding
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_elementarylanding » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_Trip_activity
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_trip_activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_LocalMarketSample_localMarketSampleWell
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_localmarketsample_localmarketsamplewell » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_LocalMarketSample_localMarketSampleSpecies
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_localmarketsample_localmarketsamplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: DROP INDEX idx_SampleSpecies_sampleSpeciesFrequency
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: l'index « idx_samplespecies_samplespeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30FE60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30FAC27D6C0
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30FEF8C812
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30F23C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30FE80F1750
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30FAFE2AF80
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activity drop constraint FK9D4BF30F4B757F28
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activity » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activityFishingContext drop constraint FK5EEA94B4CFB063C0
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activityfishingcontext » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table activityFishingContext drop constraint FK5EEA94B42E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « activityfishingcontext » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table correctedElementaryCatch drop constraint FK95A31A6678C8B8EE
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « correctedelementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table correctedElementaryCatch drop constraint FK95A31A66D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « correctedelementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table correctedElementaryCatch drop constraint FK95A31A662E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « correctedelementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table elementaryCatch drop constraint FKBF73282FD9A2D978
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « elementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table elementaryCatch drop constraint FKBF73282FB019A4A0
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « elementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table elementaryCatch drop constraint FKBF73282F2E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « elementarycatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table elementaryLanding drop constraint FK8B0DE68B92AC2C
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « elementarylanding » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table elementaryLanding drop constraint FK8B0DE68B1B8D3CD8
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « elementarylanding » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table elementaryLanding drop constraint FK8B0DE68BE60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « elementarylanding » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table extrapolatedAllSetSpeciesFrequency drop constraint FKE9F4B1502E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « extrapolatedallsetspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table extrapolatedAllSetSpeciesFrequency drop constraint FKE9F4B150D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « extrapolatedallsetspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table fishingContext drop constraint FK12E1DBC5EF8C812
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « fishingcontext » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table fpaZone drop constraint FKD85BE123592106D6
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « fpazone » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table harbour drop constraint FK2982D9C323C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « harbour » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table lengthWeightConversion drop constraint FK1631A0B4D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « lengthweightconversion » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table lengthWeightConversion drop constraint FK1631A0B423C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « lengthweightconversion » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketBatch drop constraint FK89D51FF31744B7CE
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketbatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketBatch drop constraint FK89D51FF3D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketbatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketBatch drop constraint FK89D51FF3E60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketbatch » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketPackaging drop constraint FKFF769BBCE4D69662
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketpackaging » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketPackaging drop constraint FKFF769BBC36E12CB0
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketpackaging » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSample drop constraint FKCDCE44118524C920
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSample drop constraint FKCDCE4411E60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSampleSpecies drop constraint FK4FD30FEBD38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsamplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSampleSpecies drop constraint FK4FD30FEB365AE7B1
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsamplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSampleSpeciesFrequency drop constraint FKCDDE4DB1680BA007
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsamplespeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSampleWell drop constraint FKF624E87F365AE7B1
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsamplewell » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSurvey drop constraint FKCEEA75C1D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsurvey » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table localMarketSurvey drop constraint FKCEEA75C1E60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « localmarketsurvey » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table rF1SpeciesForFleet drop constraint FKF6655504D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « rf1speciesforfleet » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table rF1SpeciesForFleet drop constraint FKF6655504592106D6
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « rf1speciesforfleet » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table raisingFactor2 drop constraint FKD4464EDA36E12CB0
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « raisingfactor2 » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table raisingFactor2 drop constraint FKD4464EDA592106D6
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « raisingfactor2 » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table raisingFactor2 drop constraint FKD4464EDA3130DD9A
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « raisingfactor2 » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sample drop constraint FKC9C775AAFB2820B4
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « sample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sample drop constraint FKC9C775AA10D65B7E
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « sample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sample drop constraint FKC9C775AA9B3A9A6D
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « sample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sample drop constraint FKC9C775AAAE2BAB9
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « sample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sample drop constraint FKC9C775AAE60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « sample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSetSpeciesCatWeight drop constraint FKF75E028A769DF796
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplesetspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSetSpeciesCatWeight drop constraint FKF75E028AD38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplesetspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSetSpeciesCatWeight drop constraint FKF75E028AA97A8A21
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplesetspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSetSpeciesFrequency drop constraint FKADDF91F8D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplesetspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSetSpeciesFrequency drop constraint FKADDF91F8A97A8A21
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplesetspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSpecies drop constraint FKC8E49032D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSpecies drop constraint FKC8E4903246C55E5
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleSpeciesFrequency drop constraint FK70DB2D4AAFDF8F53
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplespeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleWell drop constraint FK889A5982E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplewell » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table sampleWell drop constraint FK889A59846C55E5
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « samplewell » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setDuration drop constraint FKFFD6EC16592106D6
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setduration » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setDuration drop constraint FKFFD6EC1623C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setduration » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setDuration drop constraint FKFFD6EC16EF8C812
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setduration » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setSpeciesCatWeight drop constraint FKA95F7494D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setSpeciesCatWeight drop constraint FKA95F7494769DF796
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setSpeciesCatWeight drop constraint FKA95F74942E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setspeciescatweight » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setSpeciesFrequency drop constraint FK5FE10402D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table setSpeciesFrequency drop constraint FK5FE104022E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « setspeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table speciesLengthStep drop constraint FK3409952ED38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « specieslengthstep » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table speciesLengthStep drop constraint FK3409952E23C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « specieslengthstep » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table standardiseSampleSpecies drop constraint FKA1130C34D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « standardisesamplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table standardiseSampleSpecies drop constraint FKA1130C3446C55E5
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « standardisesamplespecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table standardiseSampleSpeciesFrequency drop constraint FK67CB138880E613F9
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « standardisesamplespeciesfrequency » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table trip drop constraint FK3674258FFD9E02
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « trip » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table trip drop constraint FK367425AE2BAB9
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « trip » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table trip drop constraint FK36742584B7E93C
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « trip » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table vessel drop constraint FKCF212236B4C315EA
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « vessel » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table vessel drop constraint FKCF212236ED894296
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « vessel » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table vessel drop constraint FKCF21223683ABA3C0
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « vessel » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table vessel drop constraint FKCF2122362C6615C8
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « vessel » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table vessel drop constraint FKCF21223692660524
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « vessel » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table vesselType drop constraint FK38E11A903130DD9A
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « vesseltype » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryLanding drop constraint FK346E51A1D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « weightcategorylanding » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryLogBook drop constraint FK4BE027D7D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « weightcategorylogbook » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategorySample drop constraint FK603744E023C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « weightcategorysample » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryTreatment drop constraint FK799BD58223C0E826
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « weightcategorytreatment » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryTreatment drop constraint FK799BD582EF8C812
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « weightcategorytreatment » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table well drop constraint FK37A0CE7E090692
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « well » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table well drop constraint FK37A0CEE60BD9B
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « well » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellPlan drop constraint FKE6E4891723CA7350
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellplan » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellPlan drop constraint FKE6E48917D38B9722
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellplan » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellPlan drop constraint FKE6E489172E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellplan » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellPlan drop constraint FKE6E489179B3A9A6D
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellplan » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellSetAllSpecies drop constraint FKD6DC4C2F2E0505EF
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellsetallspecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellSetAllSpecies drop constraint FKD6DC4C2F23CA7350
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellsetallspecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table wellSetAllSpecies drop constraint FKD6DC4C2F9B3A9A6D
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « wellsetallspecies » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table zoneET drop constraint FK868E3DCEEF8C812d67ef15b
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « zoneet » n'existe pas
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table zoneET drop constraint FK868E3DCE23C0E826d67ef15b
03 févr. 2016 16:04:58 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « zoneet » n'existe pas
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table lengthWeightConversion add constraint _UniqueKey unique (sexe, beginDate, species, ocean)
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « _uniquekey » existe déjà
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryLanding add constraint _UniqueKey unique (code, species)
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « _uniquekey » existe déjà
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryLogBook add constraint _UniqueKey unique (code, species)
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « _uniquekey » existe déjà
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:425) perform - HHH000389: Unsuccessful: alter table weightCategoryTreatment add constraint _UniqueKey unique (min, max, ocean, schoolType)
03 févr. 2016 16:04:59 ERROR [main] (org.hibernate.tool.hbm2ddl.SchemaExport:426) perform - ERREUR: la relation « _uniquekey » existe déjà
Constatée tchemit Anomalie Bas 2.0 - -
[REFERENTIEL] Mettre à jour les scripts d'initialisation de l'installeur Mettre à jour les scripts d'initialisation de l'installeur avec le contenu du fichier en PJ Terminée pcauquil Evolution Normal 2.0 - -
[N1.5] Réorganisation du calcul des poids des échantillons et du RFContext h1. Constats Voici une requête de diagnostic à exécuter sur la base t3-151-04-sc fournie séparément.
SELECT 
  vessel.code, 
  trip.landingdate::date, 
  activity.date::date AS activity_date,
  sample.topiaid AS sample,
  sample.minus10weight, 
  sample.plus10weight, 
  sample.globalweight, 
  sample.propminus10weight, 
  sample.propplus10weight, 
  samplequality.libelle, 
  sampletype.libelle, 
  sample.convertsetspeciesfrequencytoweight, 
  samplewell.topiaid AS samplewell,
  samplewell.weightedweight,
  samplewell.propweightedweight, 
  samplewell.weightedweightminus10, 
  samplewell.weightedweightplus10, 
  samplewell.totalsampleweight, 
  samplewell.rftot, 
  samplewell.rfminus10, 
  samplewell.rfplus10,
  '###' AS ccc,

  -- Poids des échantillons depuis SampleSpeciesCatWeight (avec les CategoryTreatment)
  (SELECT sum(ssscw2.weight) as weight FROM samplesetspeciescatweight ssscw2 INNER JOIN weightcategorytreatment wct2 ON (wct2.topiaid=ssscw2.weightcategorytreatment) WHERE ssscw2.samplewell=samplewell.topiaid AND wct2.libelle='-10 kg' ) as sampleweight_m10,
  (SELECT sum(ssscw3.weight) as weight FROM samplesetspeciescatweight ssscw3 INNER JOIN weightcategorytreatment wct3 ON (wct3.topiaid=ssscw3.weightcategorytreatment) WHERE ssscw3.samplewell=samplewell.topiaid AND wct3.libelle='+10 kg' ) as sampleweight_p10,
  (SELECT sum(ssscw4.weight) as weight FROM samplesetspeciescatweight ssscw4 INNER JOIN weightcategorytreatment wct4 ON (wct4.topiaid=ssscw4.weightcategorytreatment) WHERE ssscw4.samplewell=samplewell.topiaid AND wct4.libelle='Indéfini' ) as sampleweight_ind,  
  (SELECT sum(ssscw5.weight) as weight FROM samplesetspeciescatweight ssscw5 INNER JOIN weightcategorytreatment wct5 ON (wct5.topiaid=ssscw5.weightcategorytreatment) WHERE ssscw5.samplewell=samplewell.topiaid AND wct5.libelle='10-30 kg' ) as sampleweight_1030,
  (SELECT sum(ssscw6.weight) as weight FROM samplesetspeciescatweight ssscw6 INNER JOIN weightcategorytreatment wct6 ON (wct6.topiaid=ssscw6.weightcategorytreatment) WHERE ssscw6.samplewell=samplewell.topiaid AND wct6.libelle='+30 kg' ) as sampleweight_p30,
  -- REcalcul des rfX
  (SELECT samplewell.weightedweight/sum(ssscw2.weight) AS weight FROM samplesetspeciescatweight ssscw2 INNER JOIN weightcategorytreatment wct2 ON (wct2.topiaid=ssscw2.weightcategorytreatment) WHERE ssscw2.samplewell=samplewell.topiaid AND (wct2.libelle='-10 kg' OR wct2.libelle='+10 kg')) AS rftot_recalcule,
  (SELECT samplewell.weightedweightminus10/sum(ssscw2.weight) AS weight FROM samplesetspeciescatweight ssscw2 INNER JOIN weightcategorytreatment wct2 ON (wct2.topiaid=ssscw2.weightcategorytreatment) WHERE ssscw2.samplewell=samplewell.topiaid AND (wct2.libelle='-10 kg')) AS rfm10_recalcule,
  (SELECT samplewell.weightedweightplus10/sum(ssscw2.weight) AS weight FROM samplesetspeciescatweight ssscw2 INNER JOIN weightcategorytreatment wct2 ON (wct2.topiaid=ssscw2.weightcategorytreatment) WHERE ssscw2.samplewell=samplewell.topiaid AND (wct2.libelle='+10 kg')) AS rfp10_recalcule,
  (SELECT samplewell.weightedweightplus10/sum(ssscw2.weight) AS weight FROM samplesetspeciescatweight ssscw2 INNER JOIN weightcategorytreatment wct2 ON (wct2.topiaid=ssscw2.weightcategorytreatment) WHERE ssscw2.samplewell=samplewell.topiaid AND (wct2.libelle IN ('+10 kg', '10-30 kg', '+30 kg'))) AS rfp1030_recalcule,
  -- Espèces échantillonnées
  (SELECT array_agg(DISTINCT s11.code3l) as species FROM samplesetspeciescatweight ssscw11 INNER JOIN species s11 ON (ssscw11.species=s11.topiaid) WHERE ssscw11.samplewell=samplewell.topiaid) AS sampled_species

FROM 
  public.trip, 
  public.sample, 
  public.vessel, 
  public.samplequality, 
  public.sampletype, 
  public.samplewell,
  public.activity
WHERE 
  trip.vessel = vessel.topiaid AND
  sample.trip = trip.topiaid AND
  sample.samplequality = samplequality.topiaid AND
  sample.sampletype = sampletype.topiaid AND
  samplewell.sample = sample.topiaid AND
  samplewell.activity = activity.topiaid AND
  samplequality.libelle LIKE '%Super%' AND 
  sampletype.libelle LIKE '%Débarquement%' AND 
  trip.landingdate BETWEEN '2012-10-01' AND '2015-05-31'
  --AND vessel.code = 760 AND activity.date::date = '2012-10-05'
  --AND vessel.code = 770 AND trip.landingdate::date = '2013-06-05'
  
ORDER BY
  vessel.code,
  trip.landingdate,
  activity.date;
A gauche de ### -> calculs full t3+ A droite de ### -> données recalculées en SQL partir des poids d'échantillons calculés par t3+ Prenons les 3 exemples suivants (3 calées différentes d'un même échantillon/d'une même cuve) :
"code";"landingdate";"sample";"minus10weight";"plus10weight";"globalweight";"propminus10weight";"propplus10weight";"libelle";"libelle";"convertsetspeciesfrequencytoweight";"samplewell";"weightedweight";"propweightedweight";"weightedweightminus10";"weightedweightplus10";"totalsampleweight";"rftot";"rfminus10";"rfplus10";"ccc";"sampleweight_m10";"sampleweight_p10";"sampleweight_ind";"rftot_recalcule";"rfm10_recalcule";"rfp10_recalcule"
760;"2012-10-08 00:00:00";"fr.ird.t3.entities.data.Sample#1447393859725#0.5214654531399313";64;2;0;0.969697;0.030303;"Super ";"Débarquement";t;"fr.ird.t3.entities.data.SampleWell#1447393859725#0.3761500488287751";16;0.197531;15.5152;0.484848;;45.6305;55.5508;6.79573;"###";0.281396;0.0692467;;45.6305;55.1364;7.00176
760;"2012-10-08 00:00:00";"fr.ird.t3.entities.data.Sample#1447393859725#0.5214654531399313";64;2;0;0.969697;0.030303;"Super ";"Débarquement";t;"fr.ird.t3.entities.data.SampleWell#1447393859725#0.4826295433092771";20;0.246914;19.3939;0.606061;;45.6305;55.5508;6.79573;"###";0.351745;0.0865584;;45.6305;55.1364;7.00176
760;"2012-10-08 00:00:00";"fr.ird.t3.entities.data.Sample#1447393859725#0.5214654531399313";64;2;0;0.969697;0.030303;"Super ";"Débarquement";t;"fr.ird.t3.entities.data.SampleWell#1447393859725#0.489357865433962";45;0.555556;43.6364;1.36364;;45.6305;55.5508;6.79573;"###";0.791426;0.194756;;45.6305;55.1364;7.00175
Et plus particulièrement le premier SampleWell (échantillon-calée) :
"code";"landingdate";"sample";"minus10weight";"plus10weight";"globalweight";"propminus10weight";"propplus10weight";"libelle";"libelle";"convertsetspeciesfrequencytoweight";"samplewell";"weightedweight";"propweightedweight";"weightedweightminus10";"weightedweightplus10";"totalsampleweight";"rftot";"rfminus10";"rfplus10";"ccc";"sampleweight_m10";"sampleweight_p10";"sampleweight_ind";"rftot_recalcule";"rfm10_recalcule";"rfp10_recalcule"
760;"2012-10-08 00:00:00";"fr.ird.t3.entities.data.Sample#1447393859725#0.5214654531399313";64;2;0;0.969697;0.030303;"Super ";"Débarquement";t;"fr.ird.t3.entities.data.SampleWell#1447393859725#0.3761500488287751";16;0.197531;15.5152;0.484848;;45.6305;55.5508;6.79573;"###";0.281396;0.0692467;;45.6305;55.1364;7.00176
rftot = weightedweight / (sampleweight_m10+sampleweight_p10) rftot = 13 / (0.525265+0.149858) = 19.2557 Le recalcul en SQL donne strictement le même résultat que le calcul par t3+. Il n'y a jamais d'erreur sur le rftot. rfminus10 = weightedweightminus10 / sampleweight_m10 rfminus10 = 9.87037 / 0.525265 = 18.7912 Le recalcul en SQL (18.7912) ne donne pas exactement le même résultat que t3+ (19.3528) La formule rfminus10 = sum(weightedweightminus10) de l'échantillon / sum(sampleweight_m10) de la calée est aussi applicable et donne le même résultat SQL. rfplus10 = weightedweightplus10 / sampleweight_p10 rfplus10 = 3.12963 / 0.149858 = 20.8839 Le recalcul en SQL (20.8839) ne donne pas exactement le même résultat que t3+ (18.9559) La formule rfplus10 = sum(weightedweightplus10) de l'échantillon / sum(sampleweight_p10) de la calée est aussi applicable et donne le même résultat SQL. Notes : * On constate que lorsque les calculs t3+ et SQL concordent parfaitement pour une calée, alors ils concordent parfaitement pour toutes les calées de l'échantillon/la cuve. Exemples d'échantillons : > * fr.ird.t3.entities.data.Sample#1447393861805#0.08754887408297707 > * fr.ird.t3.entities.data.Sample#1447393861805#0.35834444076235883 * Dans certains cas les écarts SQL/t3+ peuvent être importants (de l'ordre de 10). Exemple d'échantillon : > * fr.ird.t3.entities.data.Sample#1447393861365#0.8505395432962528 (12 points d'écart sur le rfp10) On souhaite *identifier l'origine de ces écarts*, pourquoi ils se produisent *sur certains échantillons et pas sur d'autres*, et si un problème est découvert, le corriger. h2. Analyse Au N1.4 (_ConvertSampleSetSpeciesFrequencyToWeightAction_) t3+ calcule et stocke les poids d'échantillons *par WeightCategoryTreatment* (samplespeciescatweight.weightcategorytreatment). Or ces WeightCategoryTreatmentsont sont destinées à convertir les CAT_TAILLE d'AVDTH des captures en catégories utilisables pour les traitements t3 et ne devraient pas être utilisées pour manipuler les échantillons. En effet les échantillons doivent être catégorisés exclusivement en -10kg et +10kg. Or les WeightCategoryTreatment contiennent aussi d'autres fourchettes (10-30kg, +30kg, Indéfini). D'ailleurs, les rfX des échantillons sont explicitement nommés rfMinus10 et rfPlus10. L'utilisation ici des WeightCategoryTreatment est donc conceptuellement invalide. En pratique, actuellement, ce défaut du N1.4 (_ConvertSampleSetSpeciesFrequencyToWeightAction_) n'a pas de répercussions sur les traitements suivants car, curieusement, ce résultat n'est pas exploité par le N1.5 (_ExtrapolateSampleWeightToSetAction_), calcul et application des rfX). En effet le calcul des poids d’échantillons par -10 et +10kg (les catégories correctes), nécessaire au calcul des rfX, est fait à la volée dans ce niveau. Son résultat n'est pas persisté mais il est utilisé pour calculer des rfTot, rfMinus10 et rfPlus10 a priori corrects. Donc des deux résultats différents obtenus dans la requête de ce ticket, celui fourni par t3+ est le bon. Néanmoins on souhaite apporter des modifications de principe, pour que le résultat du N1.4 (dans SampleSpeciesCatWeight) soit valide, utile, et que son résultat soit réutilisé par le N1.5 (calcul et application des rfX) sans que ce dernier n'ai à faire ce calcul. h2. Actions On souhaite : * *Créer une nouvelle table de référence* WeightCategorySample qui contiendra deux catégories : -10kg et + 10kg. Structure de la table : #colonnes topia # min (kg) # max (kg) # ocean # label La colonne ocean n'est pas requise dans l'immédiat mais on souhaite la lui mettre par souci de généricité. * Les enregistrements de la table seront : > * indien # -10kg > * indien # +10kg > * atlantique # -10kg > * atlantique # +10kg * *Retirer la notion de WeightCategoryTreatment* de SampleSpeciesCatWeight et la remplacer par WeightCategorySample * Au N1.4 (_ConvertSampleSetSpeciesFrequencyToWeightAction_) calculer et stocker les poids d'échantillons dans SampleSpeciesCatWeight selon ces nouvelles catégories * *Ajouter dans SampleSpeciesCatWeight un champ (nommé count) contenant le nombre d'individus (l'effectif) correspondant à chaque ligne*. Ce champ permettra d'assurer le comptage des individus dans chaque catégorie -10kg/+10kg demandé dans #7895 * *Ne plus recalculer* les poids d'échantillons pour le calcul des rfX (N1.5, _ExtrapolateSampleWeightToSetAction_) mais utiliser celui qui vient d'être stocké dans SampleSpeciesCatWeight (par sommation de SampleSpeciesCatWeight.weight) * De la même manière que sur SampleSpeciesCatWeight, changer les catégories de WeightCategoryTreatment par WeightCategorySample sur l'entité SetSpeciesCatWeight * Dans _ConvertSetSpeciesFrequencyToWeightAction_, après extrapolation par les rfX, stocker les résultats dans SampleSpeciesCatWeight selon ces nouvelles catégories
Terminée tchemit Anomalie Urgent 2.0 - -
[N0.5] Améliorations sur le calcul des efforts de pêche (surtout le temps de pêche) *Rappels* t3+ contient à la fois les temps de mer et temps de pêche fournis par AVDTH d'une part (calculés avec des durées arbiraires de 12h de pêche/jour dans l'OA, 13h dans l'OI), et recalculés par t3+ et l'algorithme SunTimes d'autre part. Le but était de tenter une transition vers l'automatisation sans perdre les données brutes d'AVDTH. Nous comparons ici les résultats obtenus avec ces 2 sources. *Observations* Les champs trip.timeatsea et trip.fishingtime sont égaux à la somme des activity.timeatsea et activity.fishingtime. Ok t3+ Le calcul du temps de mer trip.computedtimeatsean0 est bon (d'un point de vue technique) mais diffère légèrement (de quelques heures) des saisies faites dans AVDTH (donc du champ trip.timeatsea, essentiellement du fait des corrections apportées au niveau de l'heure de départ et d'arrivée par les saisisseurs alors que les dates de départ et d'arrivée ne sont pas précisées au niveau de l'heure. Ok t3+ Le calcul du temps de pêche avec SunTimes trip.computedfishingtimen0 donne un résultat parfois identique, parfois très différent de la somme des temps de pêche des activités activity.fishingtime (ou de son équivalent sommé trip.fishingtime). t3+ KO Par conséquent, le calcul du temps de recherche trip.computedsearchtimen0, dérivé de trip.computedfishingtimen0, diffère également du temps de recherche fourni par AVDTH (par voir manuelle), dans les cas où trip.computedfishingtimen0 s'éloigne de activity.fishingtime. L'erreur étant due au temps de pêche, l'algorithme temps de recherche est bon. t3+ Ok Concentrons donc les recherches sur le fautif : le calcul automatique des temps de pêche. La requête suivante sur une base t3+ donne une base de reflexion :
SELECT
  RQ1.vesselcode, 
  RQ1.vessellibelle, 
  RQ1.departuredate,
  RQ1.landingdate, 
  RQ1.duration_dates,
  count(RQ1.act_fishingtime) AS nb_activities,
  RQ1.trip_fishingtime, 
  RQ1.trip_computed_fishingtime, 
  sum(RQ1.act_fishingtime) AS sum_act_fishingtime, 
  RQ1.delta_trip,
  RQ1.delta_trip_percent,
  array_agg(RQ1.act_fishingtime) AS fishing_time_by_days

FROM (

SELECT 
  vessel.code AS vesselcode, 
  vessel.libelle AS vessellibelle, 
  trip.departuredate AS departuredate,
  trip.landingdate AS landingdate, 
  (trip.landingdate - trip.departuredate) AS duration_dates,
  trip.fishingtime AS trip_fishingtime, 
  trip.computedfishingtimen0 AS trip_computed_fishingtime, 
  activity.fishingtime AS act_fishingtime, 
  (trip.computedfishingtimen0 - trip.fishingtime) AS delta_trip,
  (CASE trip.fishingtime WHEN 0 THEN NULL ELSE (trip.computedfishingtimen0 - trip.fishingtime)*100/trip.fishingtime END) AS delta_trip_percent--,
FROM 
  public.trip, 
  public.activity,
  public.vessel
WHERE 
  trip.vessel = vessel.topiaid AND
  activity.trip = trip.topiaid AND
  trip.computedfishingtimen0 IS NOT NULL

ORDER BY 
  vessel.code,
  trip.landingdate,
  activity.date

  ) AS RQ1
  
GROUP BY
  RQ1.vesselcode, 
  RQ1.vessellibelle, 
  RQ1.departuredate,
  RQ1.landingdate,
  RQ1.duration_dates,
  RQ1.trip_fishingtime, 
  RQ1.trip_computed_fishingtime,  
  RQ1.delta_trip,
  RQ1.delta_trip_percent

--HAVING
  -- Erreurs > 20%
  --@RQ1.delta_trip_percent > 20

ORDER BY
  RQ1.delta_trip_percent DESC;
On y voit que trip.fishingtimen0 : * est exactement égal au temps de pêche fourni par AVDTH pour 50% des marées de 2014 Ce sont les cas traités par ce code (1). Il serait intéressant de connaître les durées calculées via SunTimes dans ces cas. Les écarts doivent être faibles. * présente un écart <10% pour 80% des marées de 2014. Sachant que la référence est un choix arbitraire de 13h de jour/journée, t3+ avec son algorithme précis est probablement plus proche de la réalité. * peut présenter des écarts très importants (entre 10 et 210%) sur les 20% de marées restantes
(1) Comportement demandé par le cahier des charges initial : si le temps de pêche calculé est inférieur à celui fourni par AVDTH, on recopie celui d'AVDTH

if (setFishingTime > tripFishingTime) {
    result = setFishingTime;
} else {
    result = tripFishingTime;
}
*Etude de cas* +Cas 1 : marée de 4j et 90% d'écart+ Prenons un exemple qui présente 4 jours de mer et 90% d'écart entre le temps de pêche défini manuellement dans AVDTH et celui recalculé par t3+ via l'algorithme SunTimes : la marée C_BAT=760#D_DBQ=25/02/2015 (voir capture). Le bateau part le 22/02/2015 (probablement le soir) et revient le 25/02/2015 (probablement le matin). Dans AVDTH il est compté 13h de pêche pour les 23 et 24/02/2015, soit 26h. Les premiers et derniers jours sont considérés comme trajet de/vers le port et aucun temps de pêche n'y sont comptabilisés. t3+ fait un calcul par jour de mer, soit ~13h (determinés pas SunTimes)*4j, soit ~52h. Sur ce type de marées, faute de plus d'informations, le recalcul automatique ne peut pas faire mieux. Faudrait-il retirer les premiers et derniers jours dans le calcul automatique des temps de mer, sur toutes les marées ? +Cas 2 : marée de 20j et 210% d'écart+ Prenons un exemple qui présente 20 jours de mer et 210% d'écart entre le temps de pêche défini manuellement dans AVDTH et celui recalculé par t3+ via l'algorithme SunTimes : la marée C_BAT=887#D_DBQ=04/04/2014 (voir capture). Le bateau part le 15/03/2015, jour pour lequel AVDTH compte 4h de pêche. t3+ n'est pas en mesure de faire cette estimation qui nécessite une connaissance annexe, et compte 13h. Ensuite du 21/03 au 04/04 AVDTH ne compte qu'une fois 13h de pêche, pour le 24/03. En fait le bateau a fait 2 jours de route sans veille puis a passé 13j au port (voir PJ). t3+ n'est pas en mesure de faire cette estimation qui nécessite une connaissance annexe, et compte 13h*15j=195h... à moins d'un traitement ad-hoc décrit ci-dessous.
SELECT 
  vessel.code, 
  vessel.libelle, 
  trip.landingdate, 
  activity.date, 
  vesselactivity.libelle, 
  activity.fishingtime AS act_fishing_time, 
  trip.fishingtime AS trip_fishing_time, 
  trip.computedfishingtimen0 AS trip_computed__fishing_time
FROM 
  public.trip, 
  public.activity, 
  public.vessel, 
  public.vesselactivity
WHERE 
  trip.vessel = vessel.topiaid AND
  activity.trip = trip.topiaid AND
  activity.vesselactivity = vesselactivity.topiaid AND
  --vessel.code = 887 AND trip.landingdate = '2014-04-04'
  --vessel.code = 861 AND trip.landingdate = '2014-01-20'
  --vessel.code = 861 AND trip.landingdate = '2014-05-02'
  --vessel.code = 891 AND trip.landingdate = '2014-04-20'
  vessel.code = 798 AND trip.landingdate = '2014-01-09'
  
ORDER BY
  activity.date ASC;
*Conclusion* *Le calcul des temps de pêche est techniquement bon*, SunTimes fonctionne bien. Les différences, parfois importantes, proviennent d'une information métier dont t3+ n'a pas connaissance. *On doit commencer par supprimer le bout de code (1) qui écrase le résultat automatique s'il est inférieur au temps AVDTH* : il parasite le résultat et ne semble pertinent. Il fait perdre le bénéfice de SunTimes dans tous ces cas. Ensuite, nous pouvons améliorer sensiblement les résultats fournis par le mécanisme automatique en mettant en place quelques comportements _ad-hoc_ : * Ajustement du temps de pêche des premier et dernier jours de marée -> Pour chacun de ces 2 jours: >* Ne pas calculer de temps de jour (=pêche) avec SunTimes (ce qui surestimerait le temps de pêche réel) >* Si de l'information est disponible dans le champ *activity.fishingtime* (information saisie manuellement), l'utiliser (i.e. l'additionner au temps de pêche cumulé calculé par SunTimes pour les autres jours) >* Sinon, *temps de pêche = 0* * Jours de marée sans temps de pêche (avaries ?) : pour les jours pour lesquels il n'y a que des activités de type 'au port' ET/OU 'route sans veille' -> *temps de pêche = 0*
Terminée tchemit Anomalie Haut 2.0 - -
[N1] Inhibition des rfminus10 et rfplus10 lorsqu'un rfminus10 se retrouve calculé suite au glissement d'individus dans cette catégorie par la clé de conversion LD1/LF +*Analyse*+ Une fois les facteurs d'extrapolation RFPlus10, RFMinus10 et RFTot calculés, plusieurs conditions conduisent à l'inhibition des RFPlus10, RFMinus10 (et à l'adoption du RFTot en remplacement) : * RFPlus10 OU RFMinus10 == NULL * RFPlus10 OU RFMinus10 == 0 * RFPlus10 OU RFMinus10 > Seuil (500 par défaut) Malgré ces tests il reste un cas particulier pour lequel les rf±10 restent utilisés alors qu'ils ne le devraient pas. Il s'agit du cas où : * Un échantillon, pour une espèce, ne contient que des mesurés en LD1 (donc que des gros) * Lors de la conversion LD1/LF de ces individus via la clé de conversion, une fraction des individus convertis en LF glisse vers des tailles LF qui relèvent de la catégorie -10kg. Cela arrive, c'est un effet de bord de l'utilisation de cette clé de conversion et ceci est valide. Quelques individus se retrouvent alors esseulés dans cette catégorie (puisque l'échantillon initial ne contient pas d'individus dans cette catégorie), catégorie qui se retrouve ainsi avec un rfminus10 calculable (et calculé) alors qu'elle ne devrait pas en avoir (il devrait être NULL). Dans ce cas les rfX10 doivent aussi être inhibés. t3old ne connait pas ce problème car il détermine violemment la présence/absence de petits et de gros dans l'échantillon en regardant si les mesures ont été faites exclusivement en LF, exclusivement en LD1 ou les deux. En contrepartie ce n'est absolument pas générique et cela ne lui permet pas de s'adapter à un changement de protocole sur les mensurations (changement de la limite de mesure LF/LD1, changement de longueur de pied à coulisse, etc). Par exemple t3old ne peut pas exploiter correctement les échantillons faits sur les SAPMER car les mesures y sont toujours faites en LF (car trop de glace au niveau du trou sous la première dorsale qu'on utilise pour les mesures en LD1). Il faudrait donc trouver un moyen de savoir si, à l'origine, avant conversion LD1/LF, il y a ou pas des individus mesurés entrant dans la catégorie -10kg. Or sans conversion LD1/LF on ne sait pas convertir tailles en poids. Donc ce n'est pas possible. On propose une autre solution. +*Solution*+ Sachant qu'on ne peut pas connaître le nombre d'individus/catégorie avant les conversions, et sachant de plus qu'il n'est pas bon d'utiliser un échantillon dont le nombre d'individus est trop faible (on considère en effet qu'il faut 50 individus bien répartis dans un histogramme de tailles pour que celui-ci soit fiable), on propose de fixer un seuil de nombre d'individus/catégorie en deçà duquel l'échantillon ne devra pas être exploité en différenciant -10/+10 (i.e. rfMinus10/rfPlus10), mais en groupant ses individus (rtTot). Si la catégorie -10kg ne comptait aucun individu ou pas suffisamment avant conversion LD1/LF, elle n'en comptera probablement pas assez même après conversion, et on basculera sur rfTot. Et si le rajout d'individus issus de la conversion LD1/LF en catégorie -10 kg fait franchir le seuil, il sera à propos de rester sur les rfMinus/Plus10. Le seuil test sera donc de 25 (paramétrable) individus mesurés par catégorie -10/+10. +*Action*+ Rajouter deux paramètres dans la configuration N1.5 : * un seuil minimum d'individus mesurés dans la catégorie -10kg * un seuil minimum d'individus mesurés dans la catégorie +10kg Par défaut les deux seront fixés à *75* mais on pourra les modifier, indépendamment, lors du traitement via l'UI. Lors de l'utilisation des rfX et de la détermination rfMinus/Plus10 ou rfTot, tester le nombre d'individus ce chaque catégorie avec ces seuils. Ce test est rendu possible grace au champ SampleSpeciesCatWeight.count dont le rajout est demandé dans #7765. Si le seuil de l'une des deux catégories n'est pas atteint, on bascule sur l'utilisation du rfTot. Finalement les conditions d'inhibition des rfMinus/Plus10 seront : * RFPlus10 OU RFMinus10 == NULL * RFPlus10 OU RFMinus10 == 0 * RFPlus10 OU RFMinus10 > Seuil (500 par défaut) * Nombre d'individus dans la catégorie -10kg < Seuil (25 par défaut) * Nombre d'individus dans la catégorie +10kg < Seuil (25 par défaut) h4. Ajout du status d'utilisation des rf±10 Ajout à la table *SampleWell* de deux nouvelles colonnes de type entier pour contenir l'état d'utilisation des rf±10 :
rfMinus10UsageStatus
rfPlus10UsageStatus
Les valeurs possibles sont les suivantes :
0 : rf utilisé
1 : rf non utilisé par désactivation par configuration
2 : rf non utilisé car non défini
3 : rf non utilisé car vaut 0
4 : rf non utilisé car dépasse le seuil maximum défini dans la configuration
5 : rf non utilisé car pas assez d'échantillon trouvé
Terminée tchemit Evolution Urgent 2.0 - -
Adapter driver, import et modèle de données à AVDTH v3.5 ou v3.6 On souhaite : * Gérer l'import des données du modèle actuel 3.5 * Gérer l'import des données du futur modèle 3.6 On propose de : * Conserver le driver 3.3 en l'état * Le cloner et l'adapter pour en faire le driver 3.5 * Cloner le driver 3.5 et l'adapter pour en faire le driver 3.6 L'adaptation de t3+ aux modèles 3.5 et 3.6 implique : * Mise à jour du modèle de données t3+ avec ajout de tables de référence et de champs de clés étrangères * Développement du/des driver(s) * Mise à jour de la procédure d'import * Pas d'impact sur les traitements et les données de sortie pour le moment (les données Faux-poissons seront ultérieurement utilisées pour calculer des RF1 plus précis) h3. Nouveautés 3.3 → 3.5 * données dcp * données Faux poisson * zone de pêche déclaré * avenir d'un lot commercial * nouvelles colonnes sur la table des bateaux * nouvelles colonnes sur la table des activités h4. Ajout Avenir d'un lot commercial Ajout table ElementaryLandingFate
code    → String
libelle → String
status  → boolean
Ajout ElementaryLanding.elementaryLandingFate (LOT_COM.C_DEST) h4. Ajout dans la table Vessel
speedMaximum      → Float
validityStartDate → Date
validityEndDate   → Date
faoCode           → String
ctoiCode          → String
iattcCode         → String
h4. Ajout taille moyenne et poids moyen par espèce Ajouter sur la table *LengthWeightConversion*
meanWeight → Float
meanSize   → Float
h4. Zone de pêche déclarée Ajouter un nouveu référentiel *FpaZone* :
code    → String
subCode → String
libelle → String
country → Country
status  → boolean
Ajouter un lien Activity.fpaZone (ACTIVITE.C_Z_FPA) h4. DCP Nouveau référentiel TYPE_OBJET (ObjectType)
code      → int
rfmosCode → String
libelle   → String
status    → boolean
Nouveau référentiel TYPE_BALISE (TransmittingBuoyType)
code    → int
libelle → String
status  → boolean
h4. Ajout de champs sur la table Activity
V_VENT_DIR        (windDirection        → Float)
V_VENT_VIT        (windSpeed            → Float)
C_TYP_OBJET       (objectType           → ObjectType)
F_DCP_ECO         (ecologicalObject     → Integer)
F_PROP_BALISE     (buyoOwnership        → Integer)
C_TYP_BALISE      (transmittingBuoyType → TransmittingBuoyType)
V_ID_BALISE       (buoyId               → String)
V_POIDS_ESTIM_DCP (buoyRelatedWeight    → Float)
L_COM_A           (comment              → text)
C_Z_FPA           (fpaZone              → FpaZone)
Passer aussi plusieurs champs de float en Float et int en Integer. h4. Partie Faux poissons Referential LocalMarketPackagingType
code    → int
libelle → String
status  → boolean
Referential LocalMarketPackaging
code               → int
harbour            → Harbour
startDate          → Date
endDate            → Date
libelle            → String
localPackagingType → LocalMarketPackagingType
weight             → Float
status             → boolean
Data FP_LOT (LocalMarketBatch)
*C_BAT
*D_DBQ
*N_LOT        (batchId              → String)
 C_ESP        (species              → Species)
 C_COND       (localMarketPackaging → LocalMarketPackaging)
 N_UNIT       (count                → Float)
 V_POIDS_PESE (weight               → Float)
 L_ORIGINE    (origin               → text)
 L_COM        (comment              → text)
Data FP_ECHANTILLON (LocalMarketSample)
*C_BAT
*D_DBQ
*N_ECH      (sampleId   → String)
 D_ECH      (date       → Date)
 C_BAT_REEL (realVessel → Vessel)
Data FP_ECH_ESP (LocalMarketSampleSpecies)
*C_BAT
*D_DBQ
*N_ECH    (sampleId      → String)
*C_ESP    (species       → Species)
*F_LDLF   (ldlfFlag      → int)
 V_NB_MES (measuredCount → float)
Data FP_ECH_FREQT (LocalMarketSampleSpeciesFrequency)
*C_BAT
*D_DBQ
*N_ECH
*C_ESP
*F_LDLF
*V_LONG (lengthClass → float)
 V_EFF  (number      → int)
Data FP_ECH_CUVE (LocalMarketSampleWell)
*C_BAT
*D_DBQ
*N_ECH
*N_CUVE     (wellNumber   → int)
*C_POSITION (wellPosition → int)
Data FP_SONDAGE (LocalMarketSurvey)
*C_BAT
*D_DBQ
*N_SOND (surveyId   → String)
*C_ESP  (species    → Species)
 V_PROP (proportion → float)
h4. Ajout du champs status sur les référentiels ? Ajouter un champs *status* sur tous les référentiels + le mettre à *true* h3. Nouveautés 3.5 -> 3.6 : h4. Ajout destion d'une capture élémentaire CAPT_ELEM_DESTIN (ElementaryCatchFate)
C_DEST (code    → int)
L_DEST (libelle → String)
STATUT (status  → boolean)
Ajout association ElementaryCatch.elementaryCatchFate (C_DEST) h4. Ajout Armement ARMEMENT (Company)
C_ARMEMENT (code    → int)
L_ARMEMENT (libelle → String)
STATUT     (status  → boolean)
Ajout association Vessel.company (C_ARMEMENT) h4. Ajout lien Port / Océan Ajout association Harbour.ocean (C_OCEAN) Référentiel : * Prévoir ajout des codes VesselActivity 19 et FishingContext 98 et 100 (récupérer leur libellé et leurs caractéristiques dans une base AVDTH v3.5 ou v3.6)
En attente validation client tchemit Evolution Urgent 2.0 - -
[N2][N3] Permettre de sélectionner un sous-ensemble d'échantillons (sur les critères type et qualité) à la configuration du N2 et du N3 Actuellement, à partir de la plage temporelle et de l'océan qu'on lui indique, le N2 sélectionne et utilise tous les échantillons (correctement préparés au N1) qu'il trouve. En fait la sélection des qualités et des types d'échantillon (sampletype et samplequality) se fait seulement au N1. Or on souhaiterait pouvoir restreinte les échantillons utilisés au N2 à un sous-ensemble de ceux qui ont été préparés au N1. Au N2, il faudrait donc pouvoir sélectionner à nouveau, parmi les échantillons qui ont été traités au N1, les qualités (samplequality) et les types (sampletype) à exploiter. Dans l'UI, les filtres sur les qualités et les types seront le même que ceux du N1 (listes à cocher), et ne proposerons que les types/qualités pour lesquels des échantillons candidats (traités N1) sont disponibles. Raison : On veut pouvoir traiter au N1 plus d'échantillons qu'on ne veut réellement en exploiter au N2, car il auront leur utilisé (en dehors de t3+), même s'ils ne doivent pas être exploités par le N2 (pour raison de qualité douteuse). Exactement sur le même principe, proposer à la configuration du N3 la possibilité de sub filtrer les échantillons traités au N1 (Rappel : le N3 prend en entrée les échantillons sortis du N1 ; N2 et N3 sont indépendants). Annulée tchemit Evolution Haut 2.0 - -
[N2] Lors du traitement, exception en lien avec le champ zone FPA Lors du traitement, exception en lien avec le champ zone ET :
[runLevel2ActionBackgroundThread] 2016/02/01 06:39:11 ERROR (AbstractRunAction.java:136) An error occurs while action
org.nuiton.topia.TopiaException: Une erreur est apparue pendant le recherche (requête FROM fr.ird.t3.entities.reference.zone.ZoneET WHERE (versionId = :versionId) AND (ocean = :ocean) AND (schoolType = :schoolType)) : Null value was assigned to a property of primitive type setter of fr.ird.t3.entities.reference.zone.ZoneETImpl.status
	at org.nuiton.topia.framework.TopiaContextImpl.findAll(TopiaContextImpl.java:953)
	at org.nuiton.topia.framework.TopiaQuery.execute(TopiaQuery.java:1389)
	at org.nuiton.topia.framework.TopiaQuery.executeToEntityList(TopiaQuery.java:1409)
	at org.nuiton.topia.persistence.TopiaDAOImpl.findAllByQuery(TopiaDAOImpl.java:481)
	at org.nuiton.topia.persistence.TopiaDAOImpl.findAllByProperties(TopiaDAOImpl.java:475)
	at org.nuiton.topia.persistence.TopiaDAOImpl.findAllByProperties(TopiaDAOImpl.java:467)
	at fr.ird.t3.entities.reference.zone.ZoneStratumAwareDAOImpl.findAllByOceanSchoolTypeAndZoneVersion(ZoneStratumAwareDAOImpl.java:37)
	at fr.ird.t3.entities.reference.zone.AbstractZoneStratumAwareMeta.getZones(AbstractZoneStratumAwareMeta.java:83)
	at fr.ird.t3.actions.data.level2.Level2Action.prepareAction(Level2Action.java:205)
	at fr.ird.t3.actions.T3Action.run(T3Action.java:82)
	at fr.ird.t3.web.actions.AbstractRunAction.executeAction(AbstractRunAction.java:132)
	at fr.ird.t3.web.actions.AbstractRunAction.execute(AbstractRunAction.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
	at org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of fr.ird.t3.entities.reference.zone.ZoneETImpl.status
	at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:143)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:710)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:371)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4499)
	at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:185)
	at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:137)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1103)
	at org.hibernate.loader.Loader.processResultSet(Loader.java:960)
	at org.hibernate.loader.Loader.doQuery(Loader.java:910)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
	at org.hibernate.loader.Loader.doList(Loader.java:2516)
	at org.hibernate.loader.Loader.doList(Loader.java:2502)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)
	at org.hibernate.loader.Loader.list(Loader.java:2327)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
	at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1268)
	at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
	at org.nuiton.topia.framework.TopiaContextImpl.findAll(TopiaContextImpl.java:949)
	... 19 more
Caused by: java.lang.IllegalArgumentException: Can not set boolean field fr.ird.t3.entities.reference.zone.ZoneAbstract.status to null value
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
	at sun.reflect.UnsafeBooleanFieldAccessorImpl.set(Unknown Source)
	at java.lang.reflect.Field.set(Unknown Source)
	at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:139)
	... 38 more
[runLevel2ActionBackgroundThread] 2016/02/01 06:39:11 ERROR (Log4JLoggerFactory.java:96) Template processing error: "get(maximumSizeForStratum) failed on instance of fr.ird.t3.actions.data.level2.Level2Action"

get(maximumSizeForStratum) failed on instance of fr.ird.t3.actions.data.level2.Level2Action
The problematic instruction:
----------
==> assignment: headerSize=action.maximumSizeForStratum [on line 24, column 1 in ftl/fr/ird/t3/actions/data/level2/Level2Action.ftl]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: get(maximumSizeForStratum) failed on instance of fr.ird.t3.actions.data.level2.Level2Action
	at freemarker.ext.beans.BeanModel.get(BeanModel.java:224)
	at freemarker.core.Dot._getAsTemplateModel(Dot.java:76)
	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
	at freemarker.core.Assignment.accept(Assignment.java:90)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:259)
	at fr.ird.t3.services.FreeMarkerService.renderTemplate(FreeMarkerService.java:61)
	at fr.ird.t3.web.actions.AbstractRunAction.buildActionResume(AbstractRunAction.java:191)
	at fr.ird.t3.web.actions.AbstractRunAction.executeAction(AbstractRunAction.java:141)
	at fr.ird.t3.web.actions.AbstractRunAction.execute(AbstractRunAction.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
	at org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866)
	at freemarker.ext.beans.BeanModel.invokeThroughDescriptor(BeanModel.java:277)
	at freemarker.ext.beans.BeanModel.get(BeanModel.java:184)
	... 20 more
Caused by: java.lang.NullPointerException
	at fr.ird.t3.actions.data.level2.Level2Action.getMaximumSizeForStratum(Level2Action.java:1049)
	... 27 more
Terminée tchemit Anomalie Haut 2.0 - -
Le bouton "importer une nouvelle base" ne fonctionne pas
java.lang.NullPointerException
	java.io.File.(Unknown Source)
	fr.ird.t3.web.actions.io.input.ConfigureImportDataAction.doPrepareAnalyze(ConfigureImportDataAction.java:283)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
	com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
	org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
Terminée tchemit Anomalie Normal 2.0 - -
Erreur lors de l'accès à la page Statistiques sur la base Lors de l'accès à la page Statistiques sur la base, sur une base : * constituée avec la version 2.0 beta * données importées OI 2013-2015 * traitements N0 et N1 faits Ce message apparaît :
type Rapport d''exception

message org.apache.jasper.JasperException: Method "hasActionMessages" failed for object fr.ird.t3.entities.reference.OceanImpl@1dd38a3f - Class: com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

exception

java.lang.RuntimeException: org.apache.jasper.JasperException: Method "hasActionMessages" failed for object fr.ird.t3.entities.reference.OceanImpl@1dd38a3f - Class: com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor
File: CompoundRootAccessor.java
Method: callMethod
Line: 249 - com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java:249:-1
	com.opensymphony.sitemesh.webapp.decorator.BaseWebAppDecorator.render(BaseWebAppDecorator.java:39)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:84)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)

note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/8.0.24.
Log complet en PJ.
Terminée tchemit Anomalie Normal 2.0 - -
[N0] Sur 2 calées (sur 1642) les poids avant/après conversion des catégories de poids ne sont pas conservés Sur 2 calées (sur 1642) les poids avant/après conversion des catégories de poids ne sont pas conservés. Dans la base de test il s'agit de : * fr.ird.t3.entities.data.Activity#1454431288189#0.02910789240446232 (572/2014-01-26) * fr.ird.t3.entities.data.Activity#1454431303669#0.9769617376060147 (600/2014-12-26) Requête de diagnostic :
SELECT 
  RQ2.*

FROM

(
SELECT
RQ1.vesselcode, 
RQ1.vessellabel, 
RQ1.landingdate, 
RQ1.lat, 
RQ1.lon, 
RQ1.activitydate, 
RQ1.activitynumber,
RQ1.activityid,
RQ1.schooltype, 
--substring(array_agg(DISTINCT zoneet.gid)::text FROM 2 FOR length(array_agg(DISTINCT zoneet.gid)::text)-2) AS zet_gid,
--substring(array_agg(DISTINCT zoneet.libelle)::text FROM 3 FOR length(array_agg(DISTINCT zoneet.libelle)::text)-4) AS zet_label,
--array_agg(DISTINCT zoneet.libelle) AS zet,
RQ1.species,
RQ1.samplescount,
RQ1.stratum_n2,

sum(RQ1.catchraw) AS catchraw, 
sum(RQ1.catchrf1) AS catchrf1, 
sum(RQ1.catchrf2) AS catchrf2,
sum(RQ1.catchn0) AS catchn0, 
sum(RQ1.catchn2) AS catchn2

FROM
(
(
SELECT 
vessel.code AS vesselcode, 
vessel.libelle AS vessellabel, 
trip.landingdate::date AS landingdate, 
activity.latitude AS lat, 
activity.longitude AS lon, 
activity.date::date AS activitydate, 
activity.number AS activitynumber,
activity.topiaid AS activityid,
schooltype.libelle4 AS schooltype, 
--substring(array_agg(DISTINCT zoneet.gid)::text FROM 2 FOR length(array_agg(DISTINCT zoneet.gid)::text)-2) AS zet_gid,
--substring(array_agg(DISTINCT zoneet.libelle)::text FROM 3 FOR length(array_agg(DISTINCT zoneet.libelle)::text)-4) AS zet_label,
--array_agg(DISTINCT zoneet.libelle) AS zet,
species.code3l AS species,

0 AS catchraw, 
0 AS catchrf1, 
0 AS catchrf2,
sum(correctedelementarycatch.catchweight) AS catchn0, 
sum(correctedelementarycatch.correctedcatchweight) AS catchn2,

(SELECT count(sw4.topiaid) FROM public.samplewell sw4 WHERE sw4.activity=activity.topiaid) AS samplescount,
activity.stratumleveln2 AS stratum_n2

FROM 
public.trip
INNER JOIN public.vessel  ON (trip.vessel = vessel.topiaid)
INNER JOIN public.activity ON (activity.trip = trip.topiaid)
--INNER JOIN public.zoneet ON (ST_Intersects(activity.the_geom, zoneet.the_geom) AND activity.schooltype=zoneet.schooltype )
INNER JOIN public.correctedelementarycatch ON (correctedelementarycatch.activity = activity.topiaid)
INNER JOIN public.species ON (correctedelementarycatch.species = species.topiaid)
INNER JOIN public.schooltype ON (activity.schooltype = schooltype.topiaid)

WHERE 
activity.date BETWEEN '2014-01-01' AND '2014-12-31'

GROUP BY 
vessel.code, 
vessel.libelle, 
trip.landingdate, 
activity.latitude, 
activity.longitude, 
activity.date, 
activity.topiaid, 
schooltype.libelle4, 
--zoneet.gid,     
--zoneet.libelle,
species.code3l,
correctedelementarycatch.species

ORDER BY
trip.landingdate ASC, 
vessel.code ASC, 
species.code3l ASC

) UNION (

SELECT 
vessel.code AS vesselcode, 
vessel.libelle AS vessellabel, 
trip.landingdate::date AS landingdate, 
activity.latitude AS lat, 
activity.longitude AS lon, 
activity.date::date AS activitydate, 
activity.number AS activitynumber,
activity.topiaid AS activityid,
schooltype.libelle4 AS schooltype, 
--substring(array_agg(DISTINCT zoneet.gid)::text FROM 2 FOR length(array_agg(DISTINCT zoneet.gid)::text)-2) AS zet_gid,
--substring(array_agg(DISTINCT zoneet.libelle)::text FROM 3 FOR length(array_agg(DISTINCT zoneet.libelle)::text)-4) AS zet_label,
--array_agg(DISTINCT zoneet.libelle) AS zet,
species.code3l AS species,

sum(elementarycatch.catchweight) AS catchraw, 
sum(elementarycatch.catchweightrf1) AS catchrf1, 
sum(elementarycatch.catchweightrf2) AS catchrf2,
0 AS catchn0, 
0 AS catchn2,

(SELECT count(sw4.topiaid) FROM public.samplewell sw4 WHERE sw4.activity=activity.topiaid) AS samplescount,
activity.stratumleveln2 AS stratum_n2

FROM 
public.trip
INNER JOIN public.vessel  ON (trip.vessel = vessel.topiaid)
INNER JOIN public.activity ON (activity.trip = trip.topiaid)
-INNER JOIN public.zoneet ON (ST_Intersects(activity.the_geom, zoneet.the_geom) AND activity.schooltype=zoneet.schooltype )-
INNER JOIN public.elementarycatch ON (elementarycatch.activity = activity.topiaid)
INNER JOIN public.weightcategorylogbook ON (elementarycatch.weightcategorylogbook = weightcategorylogbook.topiaid)
INNER JOIN public.species ON (weightcategorylogbook.species = species.topiaid)
INNER JOIN public.schooltype ON (activity.schooltype = schooltype.topiaid)

WHERE 
activity.date BETWEEN '2014-01-01' AND '2014-12-31'

GROUP BY 
vessel.code, 
vessel.libelle, 
trip.landingdate, 
activity.latitude, 
activity.longitude, 
activity.date, 
activity.topiaid, 
schooltype.libelle4, 
--zoneet.gid,     
--zoneet.libelle,
species.code3l,
weightcategorylogbook.species

ORDER BY
trip.landingdate ASC, 
vessel.code ASC, 
species.code3l ASC

) ) AS RQ1

GROUP BY
RQ1.vesselcode, 
RQ1.vessellabel, 
RQ1.landingdate, 
RQ1.lat, 
RQ1.lon, 
RQ1.activitydate, 
RQ1.activitynumber,
RQ1.activityid,
RQ1.schooltype, 
RQ1.species,
RQ1.samplescount,
RQ1.stratum_n2

) AS RQ2

WHERE @(RQ2.catchrf2 - catchn0) > 1
Annulée pcauquil Anomalie Urgent 2.0 - -
[N1] Changements sur le calcul et l'utilisation des rfX D'après nos investigations le mode de calcul et l'utilisation des facteurs rfX (niveaux 1.3 à 1.5) posent toujours quelques problèmes. Voici un lot de corrections qui devraient améliorer les choses. Ce ticket sert à ordonancer plusieurs évolutions qui touchent des parties communes du code. +*1) Déplacer le test d'éviction d'un rfMinus10 ou rfPlus10 d'un dépassement du seuil défini dans la configuration (500 par défaut)*+ Actuellement le test de dépassement des seuils de la config (500 par défaut) des rfMinus10 et rfPlus10 est faite dans computeRFContext(...), où le rf est dans ce cas mis à NULL (et perdu). On souhaite la déplacer dans computeRf(...) sous la forme d'un test, de sorte à les conserver en base même si leur valeur est trop forte (sans les utiliser). Détails : #7780 +*2) Lorsque l'un des deux rfMinus10 ou rfPlus10 est à 0 ou NULL, faire en sorte qu'aucun des deux ne soit utilisé*+ Dans ce cas, utiliser systématiquement et uniquement le rfTot (ce n'est pas le cas actuellement). Détails : #7795 *+3) Ordonancement du calcul du poids de l'échantillon et du calcul des rfX+* L'ordre dans lequel le calcul des rfX (actuellment en premier) et le calcul/stockage des poids des échantillons dans SampleSetSpeciesFrequency/SampleSetSpeciesCatWeight (actuellement en deuxième) devrait être inversé, et le calcul des rfX devrait se baser sur les poids d'échantillons stockés dans SampleSetSpeciesCatWeight.weight (par sommation par catégorie -10/+10). Détails : #7765 +*4) En plus de (2), rajouter un tests pour vérifier la cohérence entre échantillons et calées*+ Malgré les tests destinés à ne pas utiliser rfminus10 et rfplus10 lorsque l'une d'eux vaut NULL, 0 ou >500, il reste un cas particulier pour lequel les rf±10 restent utilisés à tord. Il s'agit du cas où des échantillons initialement en LD1 (donc des gros) glissent vers des tailles relevant de la catégorie -10kg (les petits) lors de la conversion LD1/LF via la clé de conversion. Quelques individus se retrouvent alors, virtuellement, esseulés dans cette catégorie, qui se retrouve ainsi avec un rfminus10 (très grand) alors qu'elle ne devrait pas en avoir. Dans ce cas les rf±10 doivent aussi être inhibés. Détails : #7895 +*5) Introduire dans la configuration N1 2 options qui permettront d'influer sur l'utilisation des rfX pour l'extrapolation (après leur calcul, donc)*+ Une fois (1) et (2) mis en œuvre, la configuration N1 va proposer deux alternatives pour l'exploitation des rfX calculés. Détails : #7779 Terminée tchemit Evolution Urgent 2.0 - -
[N0] Ajouter 3 clauses d'exclusion sur le calcul du temps de pêche Nous avons récemment fait évoluer le calcul des temps de pêche avec ceci #7802 Le résultat est convaincant. On a notamment mis en oeuvre ceci :
pour les jours pour lesquels il n'y a que des activités de type 'au port' ET/OU 'route sans veille' -> temps de pêche = 0
A cette clause on veut rajouter 3 activités :
pour les jours pour lesquels il n'y a que des activités de type 'au port' ET/OU 'route sans veille' ET/OU 'avarie' ET/OU 'à la cape' ET/OU 'en attente' -> temps de pêche = 0
Les topiaid correspondants sont : * avarie : fr.ird.t3.entities.reference.VesselActivity#1297580528726#0.5194053553101096 * à la cape : fr.ird.t3.entities.reference.VesselActivity#1297580528727#0.6506575462628384 * en attente : fr.ird.t3.entities.reference.VesselActivity#1297580528727#0.7228961100082824 En effet des marées présentent un profil comme celui montré en PJ (des journées avec seule une avarie/cape/attente mentionnée, et dont le temps de pêche ne doit pas être comptabilisé).
En attente validation client tchemit Evolution Haut 2.0 - -
[N2] Sur quelques rares calées, non conservation des poids entre N0 et N2 Sur quelques rares calées, non conservation (gain ou perte) des poids entre N0 et N2 Exemple sur la base de test : fr.ird.t3.entities.data.Activity#1454431292559#0.3379547566466643 (AVEL VAD(572) # 2014-05-05 # 2014-04-12) Requête de diagnostic :
SELECT
RQ1.*,
(RQ1.catchn0 - RQ1.catchn2) AS delta

FROM

(SELECT 
vessel.code AS vesselcode, 
vessel.libelle AS vessellabel, 
trip.landingdate::date AS landingdate, 
activity.latitude AS lat, 
activity.longitude AS lon, 
activity.date::date AS activitydate, 
activity.number AS activitynumber,
activity.topiaid AS activityid,
schooltype.libelle4 AS schooltype, 
sum(correctedelementarycatch.catchweight) AS catchn0, 
sum(correctedelementarycatch.correctedcatchweight) AS catchn2

FROM 
public.trip
INNER JOIN public.vessel  ON (trip.vessel = vessel.topiaid)
INNER JOIN public.activity ON (activity.trip = trip.topiaid)
INNER JOIN public.correctedelementarycatch ON (correctedelementarycatch.activity = activity.topiaid)
INNER JOIN public.schooltype ON (activity.schooltype = schooltype.topiaid)

GROUP BY 
vessel.code, 
vessel.libelle, 
trip.landingdate, 
activity.latitude, 
activity.longitude, 
activity.date, 
activity.topiaid, 
schooltype.libelle4
) AS RQ1


WHERE @(RQ1.catchn0 - RQ1.catchn2) > 1

ORDER BY delta
Constatée pcauquil Anomalie Bas 2.0 - -
Lorsqu'on arrête l'application, les connexions à la base PostgreSQL ne sont pas libérées Lorsqu'on arrête l'application, les connexions à la base PostgreSQL ne sont pas libérées. Le seul moyen de les libérer est d'arrêter Tomcat. Constatée tchemit Anomalie Normal 2.0 - -
[IMPORT] Améliorer la lisibilité des logs Les logs d'imports AVDTH sont utilisés par nos techniciens de saisie pour corriger les erreurs dans les bases AVDTH. Les messages qu'ils délivrent sont très complet et permettent d'identifier toutes les erreurs. Toutefois ils sont difficiles à lire. Pour faciliter leur lecture on souhaiterait simplement : * Changer le format d'affichage des dates de 'Fri May 24 00:00:00 CEST 2013' en '24/05/2013' (donc faire disparaître l'heure) * faire précéder les valeurs des champs de leur appellation dans t3+ Par exemple
Il manque sur la marée 526 - SANTA GEMA QUINTO - 03/07/2003 des clefs étrangères type SampleWell [526, Thu Jul 03 00:00:00 CEST 2003, Wed Jun 25 00:00:00 CEST 2003, 1, 77] vers Activity [526, Thu Jul 03 00:00:00 CEST 2003, Wed Jun 25 00:00:00 CEST 2003, 1]
Devient
Il manque sur la marée 526 - SANTA GEMA QUINTO - 03/07/2003 des clefs étrangères type SampleWell [vessel code = 526, landing date = 03/07/2003,  activity date = 25/06/2003, activity number = 1, sample number = 77] vers Activity [vessel code = 526, landing date = 03/07/2003, activity date = 25/06/2003, activity number = 1]
Appliquer ce type de patron sur tous les messages de logs de type défaut de clé étrangère.
En attente validation CL tchemit Evolution Bas 2.0 - -
correction de la mise à jour des zone fao La requète de mise à jour des status n'est pas syntaxiquement valide. Terminée pcauquil Anomalie Normal t3-data-1.0.1 - -
Mise en place du projet t3-data Ce projet permet de conserver les données publiques du projet T3+ (scripts sql principalement). Terminée tchemit Evolution Normal t3-data-1.0 - -
Mettre à jour le fichier referentiel-data.sql avec celui-ci Nous avons mis à jour le fichier referentiel-data.sql de l'installeur de sorte qu'il initialise un référentiel à jour jusqu'aux données 2015. Il suffit de remplacer le referentiel-data.sql de l'installeur par celui fourni en PJ pour qu'il soit inclu dans la prochaine release. Terminée tchemit Evolution Immédiat 1.6.1 - -
Mise à jour des données des référentiels vessel et vesselactivity Inclure le SQL de mise à jour des données du référentiel bateaux fourni en PJ Annulée tchemit Evolution Normal 1.6.1 - -
[N2] Rajouter une option dans la configuration N2 On souhaite rajouter 2 fonctions/2 boutons radio sur la configuration du N2 : * Corriger les calées échantillonnées avec leur propre échantillon (c'est le traitement actuel, choix par défaut) * Corriger les calées échantillonnées avec les échantillons de leur strate échantillon (donc sans chercher à déterminer si elles ont été échantillonnées) Terminée tchemit Evolution Normal 1.6.1 - -
[N3] Rajouter une option dans la configuration N3 On souhaite rajouter 2 fonctions/2 boutons radio sur la configuration du N3 : * Pour les calées échantillonnées, conserver leurs échantillons en l'état, c'est-à-dire ne pas leur appliquer les structures de tailles de la strate échantillon (choix par défaut) * Appliquer aux calées échantillonnées les structures de tailles de la strate échantillons (donc sans chercher à déterminer si elles ont été échantillonnées) Terminée tchemit Evolution Normal 1.6.1 - -
[UI] A la fin d'un import AVDTH, ajouter un bouton "Importer une autre base" A la fin d'un import AVDTH, ajouter un bouton "Importer une autre base" pour accélérer les imports. Terminée tchemit Evolution Bas 1.6.1 - -
[N1.1][RF1] Mise à jour d'un paramètres de traitement par défaut Actuellement le seuil maximum acceptable du rf1 vaut 1.5 *Il faut le passer à 1.2* Terminée tchemit Evolution Urgent 1.6.1 - -
[INSTALLEUR] Mettre à jour le fichier referentiel-data.sql, 2ème prise Mettre à jour le fichier referentiel-data.sql dans les sources de l'installeur avec celui-ci (dernière mise à jour le 2015-12-01 à 14h25). Terminée tchemit Evolution Immédiat 1.6.1 - -
[N1] Modifier l'ordre d'exécution de deux traitements [TICKET A PRECISER] Il semble que les rfX soient calculés (ce qui nécessite calcul du poids des échantillon-calées (pour les -10 et pour les +10)), puis que ce calcul soit fait une seconde fois de sorte à stocker ses résultats dans SetSpecieFrequency et SetSpecieCatWeight. Ce comportement est peut-être à l'origine des incohérences constatées ici : #7765 Il serait plus logique que : # L'échantillon (par cuves) soit réparti sur les calées de la cuve # Les fréquences de taille de chaque calée soient conveties en poids et stockées ainsi dans SetSpecieCatWeight # Ensuite, les rfX soient calculés en venant chercher le poids des échantillon calées dans SetSpecieCatWeight (calcul ainsi déjà fait) Annulée pcauquil Evolution Urgent 1.6.1 - -
[N1.5] Corriger les modes d'annulation de rfp10 et rfm10 Dans fr.ird.t3.actions.data.level1.ExtrapolateSampleWeightToSetAction se trouve le calcul des rfX
    /**
     * Given the {@code sampleSet} compute his {@code rf context}.
     *
     * @param sampleWellStr sampleWell decorate value
     * @param setWeight     the sampleSet weight computed
     * @param sampletWeight the sampleSet weight computed
     * @return the computed rf context for the given sample set
     * @throws TopiaException if any pb while requesting the database
     */
    protected RFContext computeRFContext(String sampleWellStr,
                                         SampleWellSetWeight setWeight,
                                         SampleWellSampleWeight sampletWeight) throws TopiaException {


        // pondt, pondm, pondp are in tons but need them in kilogramms
        float pondt = setWeight.getTotalWeight() * 1000;
        Float pondp = setWeight.getPlus10Weight();
        Float pondm = setWeight.getMinus10Weight();

        // compute rftot
        float pdecht = sampletWeight.getTotalWeight();
        float rftot = pondt / pdecht;

        // compute rfMinus10
        Float pdechm = sampletWeight.getMinus10Weight();
        Float rfMinus10 = null;
        if (pdechm != null && pdechm > 0 && pondm != null) {
            // pondt, pondm, pondp are in tons but need them in kilogramms
            rfMinus10 = 1000 * pondm / pdechm;
        }

        // compute rfPlus10
        Float pdechp = sampletWeight.getPlus10Weight();
        Float rfPlus10 = null;
        if (pdechp != null && pdechp > 0 && pondp != null) {
            // pondt, pondm, pondp are in tons but need them in kilogramms
            rfPlus10 = 1000 * pondp / pdechp;
        }

        if (rftot > getConfiguration().getRfTotMax()) {
            addWarningMessage(l_(locale, "t3.level1.extrapolateSampleWeightToSet.warning.rftot.too.high",
                                 sampleWellStr, rftot));
        }

        if (rfMinus10 != null && rfMinus10 > getConfiguration().getRfMinus10Max()) {

            // not any sample to use this, use instead the rftot
            addWarningMessage(l_(locale, "t3.level1.extrapolateSampleWeightToSet.warning.rfMinus10.too.high",
                                 sampleWellStr, rfMinus10, rftot));
            rfMinus10 = null;
        }

        if (rfPlus10 != null && rfPlus10 > getConfiguration().getRfPlus10Max()) {

            // not any sample to use this, use instead the rftot
            addWarningMessage(l_(locale, "t3.level1.extrapolateSampleWeightToSet.warning.rfPlus10.too.high",
                                 sampleWellStr, rfPlus10, rftot));
            rfPlus10 = null;
        }

        RFContext rfContext = RFContext.create(rftot, rfMinus10, rfPlus10);

        String message = l_(locale, "t3.level1.extrapolateSampleWeightToSet.resume.for.sample.rfContext",
                            sampleWellStr, rfContext.getRfTot(), rfContext.getRfMinus10(),
                            rfContext.getRfPlus10());
        addInfoMessage(message);
        if (log.isDebugEnabled()) {
            log.debug(message);
        }
        return rfContext;
    }
La fin de la méthode élimine le rfMinus10 s'il dépasse le seuil de la configuration (500 par défaut) et le rfPlus10 s'il dépasse le seuil de la configuration (500 par défaut) :
       if (rfMinus10 != null && rfMinus10 > getConfiguration().getRfMinus10Max()) {

            // not any sample to use this, use instead the rftot
            addWarningMessage(l_(locale, "t3.level1.extrapolateSampleWeightToSet.warning.rfMinus10.too.high",
                                 sampleWellStr, rfMinus10, rftot));
            rfMinus10 = null;
        }

        if (rfPlus10 != null && rfPlus10 > getConfiguration().getRfPlus10Max()) {

            // not any sample to use this, use instead the rftot
            addWarningMessage(l_(locale, "t3.level1.extrapolateSampleWeightToSet.warning.rfPlus10.too.high",
                                 sampleWellStr, rfPlus10, rftot));
            rfPlus10 = null;
        }
Or, à partir du moment ou l'un des deux rf est annulé, les deux doivent être annulés, de sorte à ce que toute l'extrapolation par la suite se fasse exclusivement avec le rfTot (en effet si les rfMinus10 et rfPlus10 sont utilisés, ils doivent l'être ensemble. A défaut l'extrapolation serait biaisée). Plutôt que d'annuler ici en bloc les deux facteurs, *on préfère les laisser et mettre un warning*, comme c'est fait pour le rftot > getConfiguration().getRfTotMax(), avec un message du type "rfMinus10 (et/ou rfPlus10 > [getConfiguration().getRfPlus10Max()/getRfMinus10Max()]. Il ne sera pas utilisé." Le rf douteux sera stocké en base et le test sera fait plus tard, *dans RFContext.computeRf(int lfLengthClass*, int plus10LengthClass), où rfMinus10 et rfPlus10 ne seront jamais utilisés si l'un des deux dépasse sa valeur limite (500).
Terminée tchemit Evolution Urgent 1.6.1 - -
[INSTALLEUR] Mettre à jour le fichier referentiel-data.sql Mettre à jour le fichier referentiel-data.sql dans les sources de l'installeur avec celui-ci (dernière mise à jour le 2015-12-01 à 11h50). Il contient notamment la correction de la clé de conversion LD/LF YFT OI qui était connue pour être fausse. Cette mise à jour va corriger le petit écart de nombre de poissons qu'on observait sur l'YFT avant et après conversion LD-LF. Terminée tchemit Evolution Immédiat 1.6.1 - -
[N0.2] Shunt du RF2 invalide ON avait demandé ici #7761 une modification du comportement du calcul des RF2. Il était dit
Il faut modifier l'UI pour qu'elle accepte qu'aucune coche ne soit cochée dans les filtres.
Dans le cas où des marées seront sélectionnées par la plage temporelle, mais exclues par les filtres, on veillera bien à ce que ces marées soient affublées d'un rf2=1 (rf2 neutre) et à ce que ce rf2 neutre soit appliqué à ses captures, de sorte à ce que le poids elementraycatch.catchrf1 se retrouve, non altéré, dans elementraycatch.catchrf2.
Or dans la 1.6 lorsqu'on définit une plage temporelle mais aucune sélection dans les filtres (cf. PJ), l'UI permet de continuer mais N'AFFECTE PAS rf2=1 ET N'APPLIQUE PAS catcheweightrf2 = catchweightrf1 * rf2 (= catcheweightrf1). Les champs catcheweightrf2 restent vide.

Le résultat de l'action  indique d'ailleurs 

Opération du niveau 0 : Calcul du rf2

L'opération a démarré à  2 déc. 2015 10:35:37 et terminée à 2 déc. 2015 10:35:37.

Résumé de la configuration
--------------------------

Aucun port de débarquement, type de navire et flotte sélectionné, le calcul de RF2 n'est pas effectué.
L'action suivante, sur la même période temporelle, plante en NullPointerException. Il faut que sur la période temporelle sélectionnée, aucun rf2 ne doit être à NULL : * ceux des trips sélectionnée par les filtres doivent être calculés selon l'algo existant * ceux des trips exclus par les filtres doivent être mis à rf2=1 Forts de ces rf2, catcheweightrf2 doit toujours être calculé avec catcheweightrf2 = catchweightrf1 * rf2 Pour le moment on parvient à continuer les traitements grâce aux updates suivants :
UPDATE elementarycatch SET catchweightrf2=catchweightrf1 WHERE catchweightrf1 IS NOT NULL;
UPDATE trip SET rf2=1 WHERE rf1 IS NOT NULL;
Terminée tchemit Anomalie Immédiat 1.6.1 - -
[N2] Comportement de l'algorithme lorsque la dernière strate échantillon est atteinte +*Rappels*+ Pour chaque strate capture, l'algorithme cherche à constituer un pool d'échantillons utilisables pour l'extrapoler : c'est l'algorithme de cumul de strates échantillons (appelé anciennement substitution de strates). Pour chaque strate échantillon atteinte, sa qualité est évaluée. Si elle est rejetée, on lui cumule les échantillons de la strate échantillons suivante. +*Scénario*+ Il se peut que l'algorithme atteigne le dernier niveau de substitution défini, sans réussir à la valider (trop peu d'échantillons). Dans ce cas, actuellement, la correction de composition spécifique n'est pas appliquée, les poids captures ne sont pas reportés de CorrectedElementaryCatch.CatchWeight vers CorrectedElementaryCatch.CorrectedCatchWeight et la capture est perdue. C'est mauvais. +*Solution*+ Dans ce cas il faut simplement reporter tous les poids CorrectedElementaryCatch.CatchWeight dans CorrectedElementaryCatch.CorrectedCatchWeight, sans correction. De sorte à ce que la biomasse ne soit pas perdue. Je mets en PJ une représentation graphique qui montre la perte des captures entre les captures en sortie de N0 et en sortie de N2 (en saumon les résultats t3 old). Terminée tchemit Evolution Urgent 1.6.1 - -
[N1.5] Nouvelles options de configuration N1 Sur la configuration du N1 on souhaite rajouter un groupe de 2 boutons radio qui vont influer sur l'utilisation des facteurs rfX à l'étape 1.5 (EXTRAPOLATE_SAMPLE_WEIGHT_TO_SET, classe ExtrapolateSampleWeightToSet). Rappel : Dans ce niveau on fabrique des individus de sorte que le poids échantillonné, qui représente en entrée une fraction de la calée, représente en fin de traitement le poids total de la calée échantillonnée. Cette élévation est faite selon les cas, soit avec un facteur rfTot appliqué globalement à la calée, soit de façon ciblée sur les -10kg d'une part, et les +10kg d'autre part (utilisation des rfMinus10 et rfPlus10). On souhaite pouvoir agir sur l'utilisation de ces facteurs, avec 2 nouvelles options possibles : * Pas de forçage (utilisation de l'algorithme standard après application des évolutions (1) et (2) de #7793). Choix par défaut dans l'UI * Forcer l'utilisation du rfTot en toutes circonstances (le rfTot étant toujours calculé et disponible), i.e. ignorer l'existence des rfMinus10 et rfPlus10 But : pouvoir étudier la sensibilité des traitements aux rfMinus10 et rfPlus10. Terminée tchemit Evolution Urgent 1.6.1 - -
[N1.5] Lorsque l'un des deux rfMinus10 ou rfPlus10 est à 0 ou NULL, faire en sorte qu'aucun des deux ne soit utilisé Nous avons défini en #7780 que les rfMinus10/rfPlus10 dépassant leur seuil limite seront tout de même stockés en base, et que leur éviction se fera dans RFContext.computeRf(int lfLengthClass, int plus10LengthClass) Nous y avons aussi défini qu'à partir du moment ou au moins l'un des deux ne sera pas valide, il faudra utiliser exclusivement rfTot. Dans ce ticket nous rajoutons qu'en plus de l'éviction en raison des seuils, ni rfMinus10 ni rfPlus10 ne devront être utilisés si au moins l'un des deux vaut 0 ou NULL. En résumé, à partir du moment ou au moins l'un des deux (rfMinus10 ou rfPlus10) vaut NULL, 0 ou >seuil, seul rfTot devra être utilisé pour l'extrapolation (des gros comme des petits). Les évolutions de ce ticket prendront place dans cette méthode, de même que le test des valeurs seuil des rfMinus10 et rfPlus10 défini en #7780

        public Float computeRf(int lfLengthClass, int plus10LengthClass) {

            Float result;

            if (lfLengthClass <= plus10LengthClass) {

                // use rf-10
                result = rfMinus10;
            } else {

                // use rf+10
                result = rfPlus10;
            }

            if (result == null) {

                // use only the rfTot
                result = rfTot;
            }
            return result;
        }
Terminée tchemit Evolution Urgent 1.6.1 - -
Renommage de tables et champs Renommer : - table SampleWell en SampleSet - champ samplespecies.supersamplenumber en samplespecies.subsamplenumber Annulée tchemit Evolution Normal 1.6 - -
Paramètres par défaut sur N3 Les valeurs par défaut sur les tests de qualité du N3 doivent être changées : rapport capturé/mesurés : 250.0 (au lieu de 40.0) nombres d'échantillons requis : YFT 150 ; SKJ 150 ; BET 180 ; autres 25 (au lieu de 300; valeurs identiques pour BO et BI) Annulée tchemit Evolution Normal 1.6 - -
Mettre à jour les seuils et ratios de qualité des N2 et N3 Ratio capturés/mesurés : remplacer 40.0 par 250.0 sur N2 et N3 Pour le N3 changer la valeur actuelle 300 par : Actuellement par défaut on a 300 partout - YFT 150 - SKJ 150 - BET 180 - autres espèces 25 Annulée tchemit Evolution Bas 1.6 - -
Assistance pour compiler le projet dans un IDE   Terminée tchemit Tâche Normal 1.6 - -
Modification de l'algo de test de qualité N3 Contrairement au N2, il suffit que l'un des deux tests (ratio capturé/échantillonné OU seuil d'effectif) soit validé pour que la strate échantillon soit validée. Alors qu'actuellement il faut valider les 2. Au N2 par contre, on continue à valider l'un ET l'autre. Terminée tchemit Evolution Normal 1.6 - -
Avoid commons-loggin memory leak when hot-deploy in tomcat See http://wiki.apache.org/commons/Logging/FrequentlyAskedQuestions#A_memory_leak_occurs_when_undeploying.2Fredeploying_a_webapp_that_uses_Commons_Logging._How_do_I_fix_this.3F Terminée tchemit Tâche Normal 1.6 - -
Can't redeploy t3 in a tomcat The internaldb is not well released when undeployed t3 (there is still a lock on internaldb). Terminée tchemit Anomalie Normal 1.6 - -
Updates topia to 2.8.1.3   Terminée tchemit Tâche Normal 1.6 - -
Même quand n2 et n3 sont faits, la page de stats n'affiche que des marées avec données "partiellement calculés" Or une fois le n3 fait, les marées doivent être placées dans un onglet "Toutes données calculées". Peut-être est-ce une conséquence de [[http://forge.codelutin.com/issues/2286]] Terminée tchemit Anomalie Normal 1.6 - -
[PERSISTENCE] Renommer les champs libelle en label Renommer tous les champs libelle en label Annulée tchemit Evolution Bas 1.6 - -
[N0.2] Possibilité de shunter le calcul RF2 +*Rappels*+ Le calcul du RF2 (N0.2) vise à corriger l’absence éventuelle de logbooks pour certaines marées. Ceci n’est utile/pertinent que pour un cas particulier (les canneurs de Dakar), mais par souci de généricité on a permis de l'appliquer à toute capture, l'utilisateur devant sélectionner les données à traiter par application des filtres proposés sur l'interface graphique (voir la capture d'écran en PJ). A partir de la configuration N0.2 fournie par l'utilisateur : * On calcule les rf2 (un rf2 par marée concernée) sur les marées concernées par la configuration du traitement, et on les stocke dans trip.rf2 * Pour les marées concernées par la plage temporelle de la configuration mais exclues par les filtres "Type de bateau", "Port de débarquement" ou "Flotte", on fixe trip.rf2 = 1 * Pour toutes ces marées (celles pour lesquelles un rf2 a été déterminé) on calcule elementarycatch.catchweightrf2 = elementarycatch.catchweightrf1*trip.rf2 Ainsi le poids de capture est systématiquement reporté dans elementarycatch.catchweightrf2, soit conservé soit modifié par le rf2, que la calée ait été sélectionnée ou exclue par les filtres. Ceci est nécessaire puisque le champ de capture utilisé comme source pour les traitements suivants est elementarycatch.catchweightrf2, et plus jamais catchweightrf1. *+Problème+* Les filtres proposés par l'UI sont : dates, type de bateau, port de débarquement, flotte Or cette UI exige qu'au moins une entrée par filtre soit sélectionnée. Cela implique : * Si les données ne contiennent que des marées senneur par exemple, on est obligé de cocher "Senneur", et donc d'appliquer le calcul du rf2 aux senneurs même si on ne le veut pas * Idem pour les ports * Idem pour les flottes. Par exemple si les données ne contiennent que des marées françaises mais qu'on ne veut pas appliquer le traitement sur les marées françaises, on est coincé, l'UI exige la sélection de la flotte "France". Voir la capture d'écran en PJ. *+Solution+* Il faut modifier l'UI pour qu'elle accepte qu'aucune coche ne soit cochée dans les filtres. Dans le cas où des marées seront sélectionnées par la plage temporelle, mais exclues par les filtres, on veillera bien à ce que ces marées soient affublées d'un rf2=1 (rf2 neutre) et à ce que ce rf2 neutre soit appliqué à ses captures, de sorte à ce que le poids elementraycatch.catchrf1 se retrouve, non altéré, dans elementraycatch.catchrf2. Terminée tchemit Evolution Urgent 1.6 - -
Initialisation correcte des index spatiaux La création d'index spatiaux sur les colonnes PostGIS améliore drastiquement les performances, notamment lors de la recherche de calées ou lors du zonage de celles-ci. Pour ceci il suffit, après la création des colonnes géométriques par l'installeur, fichier scripts/postgis-structure.sql, de créer des index GiST comme ceci : CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometrycolumn] ); Placer aussi un VACUUM ANALYZE après le remplissage des tables de zones. Annulée tchemit Evolution Haut 1.6 - -
Updates mavenpom to 6.1   Terminée tchemit Tâche Normal 1.6 - -
[N1.4] Petite correction dans la conversion des individus mesurés en poids Rappel : Les facteurs rfX (rftot, rf-10 et rf+10) calculés au niveau 1.5 servent à extrapoler les poids d'échantillons au poids total de leur(s) calée(s) respective(s). En simplifié, poids échantillon*rfX = poids calée. Mais il faut d'abord calculer le facteur rfX... En analysant les rfX (tot, m10, p10) calculés par t3+ d'une part, et t3- d'autre part, on constate une surestimation, faible mais constante, de ce facteur par t3+. Nous pensons que ceci provient d'une approximation réalisée par t3+ sur les mesures en classes de taille de 1cm. Explications. A l'étape 1.4 (1.4b plus exactement), le but est de convertir chaque individu (mesuré en taille) en poids. Pour cela l'algorithme applique sur chaque individu la relation taille-poids qui lui correspond. En sommant ces individus convertis en poids on en retire ensuite le poids total échantillonné (qui n'est pas connu avant ce calcul). Plus précisément on en retire le poids total échantillonné pour la catégorie -10kg d'une part, et la +10kg d'autre part, la relation taille-poids permettant aussi de connaître la taille seuil à partir de laquelle un individu appartient à la catégorie +10kg. Sur le terrain les mesures sont faites selon des classes de taille de 1cm ou 2 cm généralement (ceci est spécifié dans le référentiel, species.lflengthclassstep). Pour que la conversion taille-poids soit la plus fidèle possible, il faut : * Selon l'espèce, déterminer l'intervalle de classe de taille utilisé * Appliquer à chaque individu longueur = classe de taille + intervalle/2 * Appliquer la formule de conversion taille poids sur cette longueur Ainsi, en prenant le milieu de la classe comme base de conversion (et non pas le cm inférieur), on ne sous-estimera pas de façon générale le poids des individus. Or il semble, au moins pour les classes de taille de 1cm, que la conversion soit appliquée au cm inférieur, ce qui conduit à une sous-estimation des poids d'échantillons (et par conséquent une surestimation du rfX). Il faudrait vérifier comment est déterminée la taille d'un individu qui est utilisée pour la conversion : * Est-ce simplement la classe de taille (et dans ce cas toutes les espèces sont sous-estimées) * Est-ce le milieu de la classe de taille, mais avec arrondi au cm inférieur si classe de taille à décimale trouvée (par exemple 22.5cm arrondie à 22cm) ? Dans ce cas seules les classes de 1 cm seraient touchées (et celles de 3cm, 5cm... si elles existaient). Cas le plus probable. * Est-ce tout va bien et dans ce cas, nous devons chercher ailleurs la raison de notre biais Si cette approximation est confirmée, la corriger. Terminée tchemit Evolution Urgent 1.6 - -
Mise à jour des paramètres de traitement par défaut +Niveau 1+ Le seuil "RF tot maximum" par défaut doit être mis à 250 (actuellement il vaut 500). Rf minus 10 et RF plus 10 restent à 500. +Niveau 2+ Seuil minimal de poids échantillonné/capturé : mettre à 250 par défaut (actuellement 40) Note : le libellé correct de ce paramètres est en fait : Seuil minimal de poids capturé/échantillonné +Niveau 3+ Seuil minimal de poids échantillonné/capturé : mettre à 250 par défaut (actuellement 40) Note : le libellé correct de ce paramètres est en fait : Seuil minimal de poids capturé/échantillonné Seuils par espèce et type de banc : > BO (tailles) YFT : 150 > BO (tailles) SKJ : 150 > BO (tailles) BET : 180 > BO (tailles) ALB : 25 > BO (tailles) LTA : 25 > BO (tailles) FRI : 25 > BL (tailles) YFT : 150 > BL (tailles) SKJ : 150 > BL (tailles) BET : 25 > BL (tailles) ALB : 25 > BL (tailles) LTA : 25 > BL (tailles) FRI : 25 Terminée tchemit Evolution Immédiat 1.6 - -
Page d'infos "Marée" : "Niveau 2 calculé" et "Niveau 3 calculé" non gérés Les informations "Niveau 2 calculé" et "Niveau 3 calculé" de la page d'informations sur les marées (/trip/tripDetail) ne sont pas gérées correctement. L'info reste à "Non" même si les calculs n2 et n2 ont été faits. Pour le diagnostic j'ai cherché des activités de marées dont activity.stratumleveln2 et activity.stratumleveln3 ont des valeurs (preuve que les n2 et n3 ont été faits), et j'ai vérifié les valeurs deux valeurs en question sur la page d'infos marée de quelques marées. Terminée tchemit Anomalie Normal 1.6 - -
Ajouter des index sur les champs Postgis Soit une requête type (agréger des calées par zones EE). Sans indexes, exécution = des dizaines de minutes Avec indexes, exécution = 3 secondes ! Il suffit d'ajouter ceci sur la base :
CREATE INDEX idx_activity_gist ON activity USING GIST (the_geom);

CREATE INDEX idx_zoneee_gist ON zoneee USING GIST (the_geom);
CREATE INDEX idx_zonecwp_gist ON zonecwp USING GIST (the_geom);
CREATE INDEX idx_zoneet_gist ON zoneet USING GIST (the_geom);
CREATE INDEX idx_zonefao_gist ON zonefao USING GIST (the_geom);
Les index sur les tables de zones doivent donc être créés pour chaque table de zone, et doivent donc certainement se trouver dans les fichiers de zones .zip
Terminée tchemit Anomalie Normal 1.6 - -
Arrrg ! bug jsp au lancement du n2 Sur version 1.5 --------------- n0 et 1 faits, on configure le n2 (cf image PJ) et au lancement l'erreur suivante se produit :
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.jsp.data.level2.level2ConfigurationStep2_jsp
	org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:177)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)
	org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
	com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)

cause mère

java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.jsp.data.level2.level2ConfigurationStep2_jsp
	java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132)
	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)
	org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)
	org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
	com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
Terminée tchemit Anomalie Immédiat 1.5.1 - -
Non utilisation du banc de type dans la sélection du SetDuration à utiliser Voir le 4) de la description du ticket #2240 Terminée tchemit Anomalie Normal 1.5 - -
Mise à jour des librairies *eugene* -> 2.6.2 *struts2* -> 2.3.14 *jquery* -> 3.5.1 *slf4j* -> 2.7.5 Terminée tchemit Tâche Normal 1.5 - -
Petite correction nécessaire sur le calcul du rf2 On calcule un rf2 par strate port dbq/pays/type engin/mois. Pour cela actuellement on fait : 1- on repère les marées concernées (cad celles qui correspondent à la strate, qui ont nécessairement des elementaryLandings, et qui ont ou pas des elementaryCatch) 2- on fait rf2 = somme(elementarylanding.weight) / somme(elementarycatch.catchweightrf1) 3- on applique le rf2 : elementarycatch.catchweightrf2 = elementarycatch.catchweightrf1*rf2 Or il se trouve que de cette manière, on sélectionne pour le calcul 1- aussi bien les marées simples, que les partielles (que ce soient les marées intermédiaires ou la marée finale d'une marée composée). Et cela fausse les rf2 dans une grande proportion. Exemple :
2 marée(s) pour la Strate (18) [DIEGO SUAREZ/France/Senneur/03-2012]
Marée 572 - AVEL VAD - 26/03/2012 [fr.ird.t3.entities.data.Trip#1363944124991#0.35325550116794824] Poids total des captures rf1isées 758.1888 / Poids total des ventes 216.82999
Marée 767 - TREVIGNON - 27/03/2012 [fr.ird.t3.entities.data.Trip#1363944122277#0.12178048565145416] Poids total des captures rf1isées 528.16003 / Poids total des ventes 528.16
Poids cumulé des captures rf1isées 1286.3489  / Poids cumulé des ventes 744.99
Valeur du rf2 calculé pour la strate : 0.5791508
Marée 572 - AVEL VAD - 26/03/2012, rf2 utilisé 0.5791508
Marée 767 - TREVIGNON - 27/03/2012, rf2 utilisé 0.5791508
On voit ici que la '572 - AVEL VAD - 26/03/2012' est partielle : captures=758.1888; landings=216.82999 D'ailleurs sont trip.fishholdempty=false (partielle) Elle plombe le rf2 à 0.5791508 Or c'est une marée qui a bien un logbook (elle a des elementarycatch), et qui ne doit pas influer le rf2. On devrait avoir pour cette strate rf2=1 Et cette marée fausse le rf2 de al strate du mois suivant, à cause de son débarquement final.
4 marée(s) pour la Strate (19) [DIEGO SUAREZ/France/Senneur/04-2012]
Marée 706 - CAP SAINT VINCENT 2 - 03/04/2012 [fr.ird.t3.entities.data.Trip#1363944124617#0.6808468844574763] Poids total des captures rf1isées 765.16003 / Poids total des ventes 765.16003
Marée 572 - AVEL VAD - 03/04/2012 [fr.ird.t3.entities.data.Trip#1363944124290#0.45452316566156137] Poids total des captures rf1isées 118.35141 / Poids total des ventes 659.71
Marée 770 - DRENNEC - 10/04/2012 [fr.ird.t3.entities.data.Trip#1363944122051#0.7169145447340524] Poids total des captures rf1isées 861.0098 / Poids total des ventes 861.00995
Marée 600 - CAP SAINTE MARIE - 16/04/2012 [fr.ird.t3.entities.data.Trip#1363944120845#0.19408644189157542] Poids total des captures rf1isées 825.8171 / Poids total des ventes 825.817
Poids cumulé des captures rf1isées 2570.3384  / Poids cumulé des ventes 3111.6973
Valeur du rf2 calculé pour la strate : 1.2106178
Marée 706 - CAP SAINT VINCENT 2 - 03/04/2012, rf2 utilisé 1.2106178
Marée 572 - AVEL VAD - 03/04/2012, rf2 utilisé 1.2106178
Marée 770 - DRENNEC - 10/04/2012, rf2 utilisé 1.2106178
Marée 600 - CAP SAINTE MARIE - 16/04/2012, rf2 utilisé 1.2106178
Ici c'est le contraire : La '572 - AVEL VAD - 03/04/2012' débarque tout, y compris ce qui avait été pêché sur l'épisode précédent mais pas débarqué. captures=118.35141;landings=659.71 Le rf2 est faussé en sens inverse : 1.2106178 Et s'il y a dans la strate '04-2012' d'autres marées partielles (intermédiaires ou finales), les erreurs se multiplient. Solution -------- Il faut : - soustraire d'une strate les marées en fishholdempty=false (et calculer le rf2 sans elles), - réutiliser l'algo du rf1 qui permet d'identifier les marées partielles et de les regrouper en marées complètes, - pour cumuler sur la strate du débarquement final d'une marée composée l'ensemble de ses captures et landings, et calculer ainsi son rf2, - ne pas appliquer le rf2 d'une strate à ses marées en fishholdempty=false - appliquer le rf2 d'une strate sur les marées complètes "qui s'y terminent"
Terminée tchemit Anomalie Normal 1.5 - -
Exception sur N3 J'ai lancé le N3 une première fois sur une base : exécution ok Deuxième exécution sur une autre base : j'obtiens l'exception fournie en PJ Ce peut-être un manque de données, mais le message d'erreur ne permet pas de l'identifier. Le dump de la base en cause est fourni par ailleurs. Terminée tchemit Anomalie Haut 1.5 - -
Résultats suspects au N3 Concerne le N3, donc le passage de SetSpeciesFrequency.number à ExtrapolatedAllSetSpeciesFrequency.number. Le but du N3 est de créer des échantillons sur les calées qui n'ont pas été échantillonnées. Donc : - Les effectif des calées qui ont été échantillonnées ne doivent pas bouger : c'est ok - Les effectif des calées qui n'ont pas été échantillonnées (donc =0) doivent obtenir des enregistrements espèces/classes de taille/effectifs dont le total converti en poids doit être égal au poids de la calée : ko Le dump de base fourni séparément contient des données FR OI 2010-2012t1, traitées jusqu'au N3 inclus (pas de bug bloquant sur cette base). Exécuter la requête suivante :
select a.topiaid, a.date, va.libelle as type_act, 
t.rf1, t.rf2,
sum(ec.catchweight) as elemCatchBase, 
sum(ec.catchweightrf1) as elemCatchRf1, 
sum(ec.catchweightrf2) as elemCatchRf2, 
sum(cec.catchweight) as elemCatch_sortie_n0,
sum(cec.correctedcatchweight) as corrElemCatch_sortie_n2,
sum(ssf.number) as nb_sortie_n1, 
sum(esf.number) as nb_sortie_n3 

from trip t
inner join activity a on (a.trip=t.topiaid)
inner join vesselactivity va on (a.vesselactivity=va.topiaid)
left outer join elementarycatch ec on (ec.activity=a.topiaid)
left outer join correctedelementarycatch cec on (cec.activity=a.topiaid)
left outer join setspeciesfrequency ssf on (ssf.activity=a.topiaid)
left outer join extrapolatedallsetspeciesfrequency esf on (esf.activity=a.topiaid)  

--where extract (year from a.date)=2011
where a.date between '2011-03-01' and '2011-04-01'
group by t.rf1, t.rf2, a.topiaid, a.date, va.libelle
order by a.date
Elle est limitée à 04/2011 pour une exécution pas trop longue. On peut élargir à tout 2011... On voit que : - les activités qui ne sont pas des types "coup positif" n'ont pas de captures ni d'échantillons : ok - entre elemcatch_rf2 et elemencath_sortie_n0 il y a de gros écarts alors que ça devrait être identique (c'est le ticket #2085) - certaines activités ont une valeur en nb_sortie_n1 ET en nb_sortie_n2 : ce sont les calées échantillonnées. Le nb d'individus entre n1 et n3 e bouge pas : ok - pour les calées qui n'ont pas de valeur en nb_sortie_n1 mais qui en ont en nb_sortie_n2 (cad les calées non échantillonnées), des individus ont été créés (puisque nb_sortie_n2 <> null), mais dans une proportion trop faible : sachant que l'effectif d'individus doit, en sortie de N3, représenter le poids total de la calée, l'ordre de grandeur du rapport entre corr_elem_catch_sortie_n2 (en t) et nb_sortie_n3 (en nombre) doit être équivalent pour les calées échantillonnées et non échantillonnées. Or il y a un facteur ~10000. Il s'agit peut-être d'une simple erreur d'unité quelque part ?
Terminée tchemit Anomalie Haut 1.5 - -
MAJ d'un libellé Remplacer le titre de la page "Traitement du niveau 3 : ..." par "Traitement du niveau 3 : extrapolation des échantillons aux captures totales" Terminée tchemit Anomalie Normal 1.5 - -
Packager les zip de zones géo avec l'installeur L'idée, si ça ne présente pas trop d'inconvénients, est d'englober les scripts de zone : * zones-cwp-1x1 * zones-cwp-5x5 * zones-cwp-10x10 * zones-ee * zones-fao Dans le zip de l'installeur, plutôt que d'avoir à les recopier à chaque dézippage de l'installeur. Terminée tchemit Evolution Normal 1.5 - -
Micro bug dans le script Windows installer/install.bat Il manque un '"' dans la commande : java -Xmx512M -Xms512M -jar t3-installer-1.4.jar "db.properties" ***"***scripts\postgis-structure.sql" "scripts\referentiel-data.sql" "scripts\postgis-data" Terminée tchemit Anomalie Haut 1.5 - -
Sélection impossible des marées et échantillons lors de la config du N1 Ce problème avait déjà été relevé sur certaines bases. Nous avions décidé de l'ajourner. Il se reproduit à présent sur une BD tout à fait propre. Symptôme : Après avoir importé des données (ici, OI 2007-2012) puis passé tout le n0, on essaye de configurer et lancer le n1. Or l'UI signale qu'aucune marée et aucun échantillon utilisable n'est trouvé. Impossibilité de poursuivre. Je fournis en parallèle un dump de base t3 et les bases Access qui y ont été importées. Terminée tchemit Anomalie Urgent 1.5 - -
Valeurs suspectes sur correctedcatchweight.catchweight (n0) alors qu'elles étaient bonnes auparavant J'ai refait des tests sur les résultats intermédiaires du n0, notamment avec les requêtes de test écrites l'an dernier. Une test qu'on avait réussi à passer (après des corrections de bug) semble ne plus passer. (Je fourni par ailleurs un dump de base sur lequel reproduire la chose) Cette requête donne les captures (en t) rf2isées (avant conversion aux catégories de poids traitement ; soit elementaryCatch.catchweightrf2) et après conversion (soit correctedelementarycatch.catchweight ; qui, contrairement à ce que laisse penser le nom de la table, ne sont pas encore corrigés par le N2). On constate déjà des écarts d'un facteur 2 :
select t.landingdate::date, t.rf1, t.rf2, a.topiaid as activity,
sum(ec.catchweightrf2) as catchrf2,
sum(cec.catchweight) as catchnewcat
from activity a
inner join trip t on (a.trip=t.topiaid)
inner join elementarycatch ec on (ec.activity=a.topiaid)
inner join correctedelementarycatch cec on (cec.activity=a.topiaid)
group by t.landingdate::date,t.rf1, t.rf2, a.topiaid
order by t.landingdate::date
La requête suivante limite le résultat aux écarts qui dépassent un certain seuil, et donne le facteur multiplicatif d'erreur (souvent > 2) :
select t.landingdate::date, a.topiaid, a.date::date,
s.code, s.code3l,
sum(ec.catchweightrf2) as catchrf2,
sum(cec.catchweight) as catchnewcat,
(sum(ec.catchweightrf2)-sum(cec.catchweight)) as delta,
(sum(ec.catchweightrf2)/sum(cec.catchweight)) as factor
from activity a
inner join trip t on (a.trip=t.topiaid)
inner join elementarycatch ec on (ec.activity=a.topiaid)
inner join weightcategorylogbook wcl on
(ec.weightcategorylogbook=wcl.topiaid)
inner join species s on (wcl.species=s.topiaid)
left outer join correctedelementarycatch cec on (cec.activity=a.topiaid)
where t.landingdate::date >= '2008-01-01'
group by t.landingdate::date,a.topiaid,a.date::date,s.code, s.code3l
having (sum(ec.catchweightrf2)-sum(cec.catchweight))<-0.01 or
(sum(ec.catchweightrf2)-sum(cec.catchweight))>0.01
order by s.code
Les sommes (en t) devraient être identiques ou très proches avant et après ce traitement.
Terminée tchemit Anomalie Normal 1.5 - -
Mises au point du calcul des durées des calées (n0.3) Nous avons identifié des imperfections dans le calcul de la durée des calées (champ activity.setduration). Rappel : la formule générale de calcul de cette durée est durée d = b + a*capture si calée positive, d = nullsetvalue si calée négative. Cette requête passée sur une base sur laquelle au moins le n0 a été effectué montre les cas de figure
select a.topiaid, a.date::date, a.setduration, sc.libelle,
sd.year as sdyear, sd.parametera, sd.parameterb, sd.nullsetvalue,
va.libelle,
o.libelle,
sum(cec.catchweight) as capt

FROM trip t
INNER JOIN activity a ON (a.trip=t.topiaid)
INNER JOIN schooltype sc ON (a.schooltype=sc.topiaid)
INNER JOIN vessel v ON (t.vessel=v.topiaid)
INNER JOIN vesselactivity va ON (a.vesselactivity=va.topiaid)
INNER JOIN ocean o ON (a.ocean=o.topiaid)
INNER JOIN setduration sd ON (v.flagcountry=sd.country AND a.schooltype=sd.schooltype AND a.ocean=sd.ocean AND extract(year from a.date)=sd.year)
LEFT OUTER JOIN correctedelementarycatch cec ON (cec.activity=a.topiaid)

GROUP BY a.topiaid, a.date::date, a.setduration,sc.libelle,
sd.year, sd.parametera, sd.parameterb, sd.nullsetvalue,
va.libelle,o.libelle

ORDER BY va.libelle, date
(1) On constate que la formule (d = b + a*capture) est appliquée à tous les types d'activités (sauf le type "coup nul"). Donc elle est appliquée même pour les types "avarie", "pose de dcp", "recherche", transbordement, en attente, etc... et comme dans ces cas capture=0, et bien setduration=b Or pour ces types d'activités on doit avoir setduration = null. Donc mettre setduration = null pour toutes les activités de type autre que "coup positif", "coup nul", "chavire la poche" et "détail inconnu". (2) Le cas "détail inconnu" doit être traité comme un "coup positif" C'est-à-dire (d = b + a*capture) (3) Le cas "chavire la poche" doit être traité comme un "coup nul" : setduration = nullsetduration (4) Pour un "coup nul" on doit avoir setduration = nullsetvalue Or il semble que ce ne soit pas le cas pour les calées de type Banc libre (BL) : - Dans les cas "coup nul" su BO, nullsetvalue=110 (exemple pour l'année 2011) et setduration=110. OK - Dans les cas "coup nul" su BL, nullsetvalue=91.5 (exemple pour l'année 2011) et setduration=110. KO Il doit y avoir un bug sur la sélection du paramètre nullsetvalue en fonction du type banc (qui fait bien partie de la clé métier de l'entité setduration).
Terminée tchemit Anomalie Haut 1.5 - -
Libellés Mettre les versions anglaises de ces libellés : t3.common.user.t3Databases : List of configured working databases t3.common.user.outputDatabases : List of configured target databases (page Préférences) Terminée tchemit Anomalie Normal 1.5 - -
Exception si tentative N1 sans N0 Sur une base contenant des marées (2009-2012), l'import a été fait, mais aucun traitement. Si on clique sur "Lancer un traitement de Niveau 1" on a l'erreur :
java.lang.NullPointerException
	com.google.common.base.Preconditions.checkNotNull(Preconditions.java:191)
	fr.ird.t3.actions.data.level1.Level1Configuration.getMatchingTrips(Level1Configuration.java:274)
	fr.ird.t3.web.actions.data.level1.ManageLevel1ConfigurationAction.prepare(ManageLevel1ConfigurationAction.java:159)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:167)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	fr.ird.t3.web.interceptors.AbstractCheckInterceptor.intercept(AbstractCheckInterceptor.java:74)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:544)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
	org.nuiton.web.filter.TopiaTransactionFilter.doFilter(TopiaTransactionFilter.java:228)
Visiblement le check des conditions requises ne fonctionne pas.
Terminée tchemit Anomalie Haut 1.5 - -
Mettre à jour le rérférentiel setduration avec les INSERT fournis ici Les valeurs du référentiel setduration actuel couvrent jusqu'à fin 2011. Il faudrait ajouter les inserts suivants pourqu'ils soient exécutés lors d'une nouvelle installation, tout comme lors d'une migration 1.4 -> 1.5 J'ai générer de nouveaux topiaid... c'est prêt à l'emploi.
--2012
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704815#0.5049529393542529', 0, '2013-04-02 14:46:09.578', 103, 0.966000021, 137.029999, 2012, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.15856146285780426', 0, '2013-04-02 14:46:09.579', 108, 0.966000021, 137.029999, 2012, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.6961528932833749', 0, '2013-04-02 14:46:09.580', 121, 0.598999977, 122.716003, 2012, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.7043376036298982', 0, '2013-04-02 14:46:09.581', 109, 0.598999977, 122.716003, 2012, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.7263571290343775', 0, '2013-04-02 14:46:09.582', 110, 0.488000005, 117.164001, 2012, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.3077376458732498', 0, '2013-04-02 14:46:09.583', 91.5, 0.488000005, 117.164001, 2012, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.5397255030401867', 0, '2013-04-02 14:46:09.584', 126, 0.476000011, 138.011002, 2012, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364906704816#0.6573985843031241', 0, '2013-04-02 14:46:09.585', 110, 0.476000011, 138.011002, 2012, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

-- 2013
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704815#0.5049529393542529', 0, '2013-04-03 14:46:09.578', 103, 0.966000021, 137.029999, 2013, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.15856146285780426', 0, '2013-04-03 14:46:09.579', 108, 0.966000021, 137.029999, 2013, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.6961528932833749', 0, '2013-04-03 14:46:09.580', 121, 0.598999977, 122.716003, 2013, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.7043376036298982', 0, '2013-04-03 14:46:09.581', 109, 0.598999977, 122.716003, 2013, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.7263571290343775', 0, '2013-04-03 14:46:09.582', 110, 0.488000005, 117.164001, 2013, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.3077376458732498', 0, '2013-04-03 14:46:09.583', 91.5, 0.488000005, 117.164001, 2013, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.5397255030401867', 0, '2013-04-03 14:46:09.584', 126, 0.476000011, 138.011002, 2013, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364907704816#0.6573985843031241', 0, '2013-04-03 14:46:09.585', 110, 0.476000011, 138.011002, 2013, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

-- 2014
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704815#0.5049529393542529', 0, '2013-04-04 14:46:09.578', 103, 0.966000021, 137.029999, 2014, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.15856146285780426', 0, '2013-04-04 14:46:09.579', 108, 0.966000021, 137.029999, 2014, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.6961528932833749', 0, '2013-04-04 14:46:09.580', 121, 0.598999977, 122.716003, 2014, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.7043376036298982', 0, '2013-04-04 14:46:09.581', 109, 0.598999977, 122.716003, 2014, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.7263571290343775', 0, '2013-04-04 14:46:09.582', 110, 0.488000005, 117.164001, 2014, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.3077376458732498', 0, '2013-04-04 14:46:09.583', 91.5, 0.488000005, 117.164001, 2014, 'fr.ird.t3.entities.reference.Country#1297580528738#0.29786909155244845', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');

INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.5397255030401867', 0, '2013-04-04 14:46:09.584', 126, 0.476000011, 138.011002, 2014, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445');
INSERT INTO setduration VALUES ('fr.ird.t3.entities.reference.SetDuration#1364908704816#0.6573985843031241', 0, '2013-04-04 14:46:09.585', 110, 0.476000011, 138.011002, 2014, 'fr.ird.t3.entities.reference.Country#1297580528739#0.021872879219458463', 'fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396', 'fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473');
merci
Terminée tchemit Evolution Normal 1.5 - -
Vérification de l'algo n0.4 (durée des calées) Pourrais-tu vérifier l'algo qui calcule la durée des calées ? Il semble qu'il y ait des résultats bizarres. Il faut : Si activity.vesselactivity='fr.ird.t3.entities.reference.VesselActivity#1297580528706#0.4362868564425493' (cad coup nul; code=0) { activity.setduration = setduration.nullsetvalue pour l'océan/type de banc/pays concerné } Si activity.vesselactivity='fr.ird.t3.entities.reference.VesselActivity#1297580528726#0.6977540500177304' (cad coup positif; code=1) { activity.setduration = setduration.parameterb + (setduration.parametera * sum(elementarycatch.catchweightrf2 de l'activity) pour l'océan/type de banc/pays concerné } Annulée tchemit Anomalie Normal 1.5 - -
Export balbaya - Operation Activité   Terminée tchemit Tâche Normal 1.4 - -
N3 n'est pas implémenté Il va falloir s'y coller. Il faudrait me dire ce qui a été fait ou pas sur ce N3 et ce qu'il te manque comme info pour finir l'implémentation. Terminée tchemit Anomalie Normal 1.4 - -
Sélection correcte des activités (=calées) situées dans une zone (pour N2 et N3) Dans les N2 et N3 on doit, pour chaque zone géographique trouvée, sélectionner les calées faites dedans. La fonction PostGIS ST_Within() n'inclut pas les calées (points) qui se trouvent sur les frontières des zones (qui ont une épaisseur non nulle, égale à la précision décimale avec laquelle les points délimitant une zone sont donnés). Or il faut d'une part prendre en compte ces points, et d'autre par répartir leurs poids pêchés sur les zones qui se partagent éventuellement ce point. L'algorithme et les requêtes fournies en pièce jointe donne la réponse à ce problème. Il faut les intégrer dans les N2 et N3. Terminée tchemit Anomalie Urgent 1.4 - -