branch develop updated (2cbb96b -> 2317940)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 2cbb96b Specifications version 5.2 new e9f3ca6 - ajout de l'export de fichiers techniques (protocol, reférentiels temporaires) - amélioration du packaging - nettoyage de code new 9ff4adc suppression d'un service obsolete new 44d8d32 Ajout d'une méthode pour obtenir directement la liste des référentiels temporaires (aussi utilisé pour l'export générique) new 380246f ajout traductions pour export des fichiers techniques lors de l'export generique new a4943ca use new API new 55bd07d utilisation de methode de service pour creer le modele de progression new 26f5e75 suppression de code mort new de12bb0 ajout de methodes utilitaires sur les entities new 844ccd4 ajout des methodes getAllGears et getAllVessel sur PersistenceService new 5eff240 introduction du paquetage tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/csv new 17d0b67 nettoyage export generique et debut d'implatation de l'import generique new 586a67d introduction du paquetage tutti-service/src/main/java/fr/ifremer/tutti/service/csv et utilisation new 679c814 introduce csv package + clean code new 427c9fe - introduce CsvProducer API - use it also for referential export - move TuttiCsvUtil to his new csv package new f2d8893 utilisation label du pays à la place de son libellé new f409b58 correction du nom du fichier d'export new 7aefa1d normalisation nom colonne sur les taxons new f7d688e ajout gearRankOrder sur export des caractéristiques des engins new 9a4b1ab ajout parser formatter de Short -a deplacer dans nuiton-csv new a0db8aa fix i18n new ad5140d revue de comment on export les navires associés new 045aa84 renommage formater new dcf7654 ajout EnginRankOrder + renommage formatters new eec1890 uniformisation des colonnes de l'export + ajout d'EnginRankOrder new 6492f78 no more need of decoratorService to export vessels new e03f99d - add Benthos column on catch export - clean code new 9b885ba use more precise function name new cacb25e - introduce technical parser formatter - introduce none technical formatter for all entities used in generic ie (if anything need to be modified, let's do it in formatter but not in model) new 1462d44 remover unused method + add shortcut other one new 80507ac use same parser formatter + clean multipost code new c311d9c remove not used export model new 8debd31 add technical column + finish import model definition new dff04e6 revert Speciess modification (see commit 9b885ba813850b9fc816e604210b8ee1ccbf2e5d) new 6d806d4 add a nice precondition to be sure to use always a list of referent species while invoking the method Speciess#splitReferenceSpeciesByReferenceTaxonId new 282106f fix full name function new 6347e72 can have null caracteristic to export new c53c640 fix column names new 008a8b1 add sample category export + fix species export (do not use id but referenceTaxonId) new d03e0b3 check cruises for program export + improve export shared code new 0057c45 fix when adding total to progression model new 7005b0c better API new dc315ea introduce CsvConsumer new 15694c0 use CsvConsumer API for referential import + improve then import code new 059f692 -madd import usefull method to get a rwo all errors new c05dbc0 rename generic format actions new f08120f improve CsvProducer API new d2f57a7 fix tests new 78a89c7 introduce GenericFormatArchive object new f186460 use GenericFormatArchive object new fb5d240 add Cruises.equals method new b1b5135 introduce generic format import service and some of his objects new 6447002 prove consumer api for referentiel import new 793f6f3 CsvConsumer is abstract new 4186ce5 can add check errors on ImportRow new 2847669 sampleCategoryModel is in input context new c921cea expose cruise new 56fdeb2 review referentiel import API new d183c76 add a method to get next available protocol names new d7cb746 continue import new fc0efde use nuiton-csv new 1f18450 move to CsvConsumer some API new 4260acc unify parser formatter new 1b62195 fix missing API new fbf064c remove from TuttiCsvUtil (push to nuiton-csv new 092414d fix new formatters new 500e4d3 finalize import - export model new 2f6db55 add once for all a unique method to know if an id is temporary new 5170fca split import referential method in add and update method introduce link referential concept (for generic import) new 90316a1 fix some tests new fb06996 fix some lost code :( new 5ff652a fix queries new 0a96398 revue des imports de référentiels new 1214c50 normalize export service classes new 578969e add a referential import result object for generic format import new adc7f2c normalize generic format import service classes new b085910 - introduce id translation map for temporary referentials - reformat package new 8d955c1 add persistence service method to get first available protocol name new f22fe99 translate taxon ids in protocol if required new 6062cb5 validate sample category model new 4520b67 do not create directory, already done new 8383c87 load program in data context new c54286e compute nb step in export new 86352e5 fix NPE when adding errors with no field new 90d5975 adapt caracteristt parser (pass directly list of caracteristic to use) new 50033a9 improve archive object new 27daf67 - normalize entity list parser formatter - make samplecategorymodel import ok - survey are ok to be imported now - start writting test of import new 49c9951 fix NPE if no referential import done new c76757f fix test data new 00f53fb fix test data new 956cc40 fix path new f455a89 fix bad path new 7452db3 fix gear export new 30aad20 add referential import result new 65950d7 rename i18n new aba3d82 add generic format import new f2a00b8 fix i18n keys new fac0aa9 fix i18n new 2317940 fixes #6612: [EXPORT GENERIQUE] Consolidation de l’export générique (merge into develop) The 98 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 2317940a78ced0bf3d22f1d13047666a1cfc5b56 Merge: 2cbb96b fac0aa9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 14:24:11 2015 +0100 fixes #6612: [EXPORT GENERIQUE] Consolidation de l’export générique (merge into develop) commit fac0aa97e9fff2861c2a4276e6650a1965b69efd Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 14:10:17 2015 +0100 fix i18n commit f2a00b8071986b4dec4578a43c43b5a294243662 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 10:00:09 2015 +0100 fix i18n keys commit aba3d82acb8e41984ffb9b16801c1937b2ccf86d Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:59:48 2015 +0100 add generic format import commit 65950d7df53c3dddfa5c1510f8db0621d0ccd385 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:58:55 2015 +0100 rename i18n commit 30aad201e2c52c51a8109478adf16a8bc485be86 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:58:37 2015 +0100 add referential import result commit 7452db3e521b8d72025edeb74fc92fe36bedc365 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:58:13 2015 +0100 fix gear export commit f455a8963f17c5cf17005ef2e98e5e64abfbde07 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 21:09:29 2015 +0100 fix bad path commit 956cc4049b02a07833b1399cfe9d0ec7e8bb2408 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 21:03:24 2015 +0100 fix path commit 00f53fbd1feee8492cbfe6c6cac7b3e1d46626dd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 21:03:17 2015 +0100 fix test data commit c76757f545feadeff37f7441b21183e70391ceb8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:57:22 2015 +0100 fix test data commit 49c99512344c3d67d190e1761f886a54230c7be0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:57:05 2015 +0100 fix NPE if no referential import done commit 27daf67ccf5b0743ea72a453cb29d8ecb9e7780e Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:36:27 2015 +0100 - normalize entity list parser formatter - make samplecategorymodel import ok - survey are ok to be imported now - start writting test of import commit 50033a981808ce7d029339c4ba82b859347bdc7c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:35:56 2015 +0100 improve archive object commit 90d5975acadafd083b64e9a2af4bce77fa8d06af Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:35:29 2015 +0100 adapt caracteristt parser (pass directly list of caracteristic to use) commit 86352e5060ca55439349ed38c1d575bda145b3e9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:34:53 2015 +0100 fix NPE when adding errors with no field commit c54286e4bdbf78eaf0da0b39d22f9cce4c5354fa Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 18:13:05 2015 +0100 compute nb step in export commit 8383c87d58b77e8c6582ce8a57a939a8790580d3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 18:12:42 2015 +0100 load program in data context commit 4520b672c1e3a389fafa654fac6211e65cb6f2d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 18:12:21 2015 +0100 do not create directory, already done commit 6062cb57a68f49b73c84d84d455b8355fe219b09 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:36:58 2015 +0100 validate sample category model commit f22fe9958c352e5c3335fafba6a099cffe74fc34 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:36:43 2015 +0100 translate taxon ids in protocol if required commit 8d955c135c8390bfb591becc2172eb788a860f36 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:35:59 2015 +0100 add persistence service method to get first available protocol name commit b08591081082678e8bad85a2c6ff801ce14e4bc6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:41:32 2015 +0100 - introduce id translation map for temporary referentials - reformat package commit adc7f2c4835235fdf8539e3b3a8caf674dca62a2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:12:45 2015 +0100 normalize generic format import service classes commit 578969e92ad0a316fe38a8da119a37330053f475 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:12:18 2015 +0100 add a referential import result object for generic format import commit 1214c508f3a98dd2194b522db3e61aa57c552d7a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:11:07 2015 +0100 normalize export service classes commit 0a96398164ff57d06f5ba95e132e119ea57ed266 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 14:44:28 2015 +0100 revue des imports de référentiels commit 5ff652aa3a3825cd53d77e7bb8294bc86dba46ca Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 14:29:32 2015 +0100 fix queries commit fb06996978cd37ecb364a1929335ece4ddbf1b3a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 14:12:41 2015 +0100 fix some lost code :( commit 90316a170b7b17a2f629603b972f456dc1f98f6d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 13:51:16 2015 +0100 fix some tests commit 5170fca59d28077ef7475496af637ac790a78379 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 13:49:24 2015 +0100 split import referential method in add and update method introduce link referential concept (for generic import) commit 2f6db5584931f8335b4e655c4594d595aeba5d92 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 13:13:12 2015 +0100 add once for all a unique method to know if an id is temporary commit 500e4d33a9eee17c97481a5be9c027541fc45f23 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:04:49 2015 +0100 finalize import - export model commit 092414df66bd18b589d0efd7a4d8183e30fdfec5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:04:26 2015 +0100 fix new formatters commit fbf064cb1e43ad9787ae1ec0a855e2e9bb73b5d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:03:53 2015 +0100 remove from TuttiCsvUtil (push to nuiton-csv commit 1b621953462ec9a63dee55ea85a136f5237b7260 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:03:34 2015 +0100 fix missing API commit 4260acc555b312891f1eafcedc5a702eab064103 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:57:27 2015 +0100 unify parser formatter commit 1f18450ac8909d765524118436f2d9e299d3a133 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:56:51 2015 +0100 move to CsvConsumer some API commit fc0efdedcd87cef29cd293879e92383cee226dbf Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:53:53 2015 +0100 use nuiton-csv commit d7cb746d6ab0f7b9e5d7fa9138e9acb6ddd513f6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 13 17:29:20 2015 +0100 continue import commit d183c76b3145ee52b172f8ee2a9a6e6c895f1db8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 15:41:30 2015 +0100 add a method to get next available protocol names commit 56fdeb2198eeeda98d82c7766384ec3e19e6b631 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 15:13:05 2015 +0100 review referentiel import API commit c921cea30a11ca5f631300f6b8206b71036de921 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:55:06 2015 +0100 expose cruise commit 2847669cbcb2585f21370eba0009c4cb299c48b5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:54:53 2015 +0100 sampleCategoryModel is in input context commit 4186ce5788db96a386965a74a84d02534b235e4e Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:53:57 2015 +0100 can add check errors on ImportRow commit 793f6f381b772a11c22a627b675ecbc4451850f0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:53:20 2015 +0100 CsvConsumer is abstract commit 6447002c2cc1849bdc7b655be32af73e974c9db7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 19:26:33 2015 +0100 prove consumer api for referentiel import commit b1b5135b8c0eb018166eed43d985872e50884b68 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:57 2015 +0100 introduce generic format import service and some of his objects commit fb5d24027e7e697fcf7aadc43b24100d46e2ab92 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:27 2015 +0100 add Cruises.equals method commit f1864602216b86467b25091fa596f2bd2acd349a Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:07 2015 +0100 use GenericFormatArchive object commit 78a89c71bbec3d708938460948ae7cfdd6d4e68c Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:59:33 2015 +0100 introduce GenericFormatArchive object commit d2f57a7146e6024bb9a6c84d775af77115909ff6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:59:16 2015 +0100 fix tests commit f08120feab492a69d25d0867ebdd2ede91976745 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:26:03 2015 +0100 improve CsvProducer API commit c05dbc0ac563438dd5cd11d3eae1a6224f09a8cc Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:25:10 2015 +0100 rename generic format actions commit 059f692fa244e324c482d0758daae8a14e8e90ec Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:24:40 2015 +0100 -madd import usefull method to get a rwo all errors commit 15694c03dd51d50c41a15c2b7d4149b7d9547d35 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:23:01 2015 +0100 use CsvConsumer API for referential import + improve then import code commit dc315eae9731d9b4ba0640a47f9f84437704c4f4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:22:03 2015 +0100 introduce CsvConsumer commit 7005b0c7b4f76d477c4a94410e58757486a2cfcd Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 11:54:46 2015 +0100 better API commit 0057c45c377d33fd1268cd73a5bc82a176d9b03d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 11:54:24 2015 +0100 fix when adding total to progression model commit d03e0b366e478a2f23fd8a197bc2babd4074277a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:41:58 2015 +0100 check cruises for program export + improve export shared code commit 008a8b14aa660cc152b3b6e8639e87b87ecf979d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:40:46 2015 +0100 add sample category export + fix species export (do not use id but referenceTaxonId) commit c53c64074af7f0bc2e57034bb29c9c9462b8cca7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:39:09 2015 +0100 fix column names commit 6347e72175a471332f153c8cd438a89ae9928cbd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:38:50 2015 +0100 can have null caracteristic to export commit 282106fb7132dff75549c9b03e5598164f442e2b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:38:37 2015 +0100 fix full name function commit 6d806d43415d0cbfda67c24b0f269ec0ae5391e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 16:23:36 2015 +0100 add a nice precondition to be sure to use always a list of referent species while invoking the method Speciess#splitReferenceSpeciesByReferenceTaxonId commit dff04e67512eeace72e35c697df41db387a3cfeb Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 16:10:52 2015 +0100 revert Speciess modification (see commit 9b885ba813850b9fc816e604210b8ee1ccbf2e5d) commit 8debd31b3416d061c1be75f7f5e3d66af3ff1104 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 15:48:10 2015 +0100 add technical column + finish import model definition commit c311d9cb189b8ad3755c4514232c2f8ceaf3aac3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 15:46:34 2015 +0100 remove not used export model commit 80507ac0d36bdbba8459d21b5104bd4805b086f6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 14:44:45 2015 +0100 use same parser formatter + clean multipost code commit 1462d44a5cbba96dcdaea6feff9e056d264e0382 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 14:05:07 2015 +0100 remover unused method + add shortcut other one commit cacb25e8648c06879e493a0c30093aec9a5c561c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 13:08:00 2015 +0100 - introduce technical parser formatter - introduce none technical formatter for all entities used in generic ie (if anything need to be modified, let's do it in formatter but not in model) commit 9b885ba813850b9fc816e604210b8ee1ccbf2e5d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 13:04:12 2015 +0100 use more precise function name commit e03f99d6701a6885a089618a0866c12b99e69ed7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 14:54:36 2015 +0100 - add Benthos column on catch export - clean code commit 6492f787d0230ff0e6414fb0caa9ab0e063995d5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 14:54:10 2015 +0100 no more need of decoratorService to export vessels commit eec189066c1cc644f2aa7da533e8fc2dbf828dbe Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 13:18:34 2015 +0100 uniformisation des colonnes de l'export + ajout d'EnginRankOrder commit dcf765468d1965a290b5fa72c57015c761746758 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 13:04:06 2015 +0100 ajout EnginRankOrder + renommage formatters commit 045aa840dbbb8f4911f1f56e3d31a2706744e37c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:58:47 2015 +0100 renommage formater commit ad5140dbfe91dd0b6fc2cbe3da2abc4b8b72f7d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:58:25 2015 +0100 revue de comment on export les navires associés commit a0db8aaff50181ace7eabdb8ea2b90318093f1f6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:46:42 2015 +0100 fix i18n commit 9a4b1ab1fdf7407884290f83fcf5bb14755a84b1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:45:32 2015 +0100 ajout parser formatter de Short -a deplacer dans nuiton-csv commit f7d688ea7040074825a146dd54f8da27ebcb7363 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:44:55 2015 +0100 ajout gearRankOrder sur export des caractéristiques des engins commit 7aefa1dd9c54657dd45df36febc8740b2130297f Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:38:53 2015 +0100 normalisation nom colonne sur les taxons commit f409b58b4a96dfda17f6e1fb1ca94ac9d53b85bc Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:38:30 2015 +0100 correction du nom du fichier d'export commit f2d889327cf4a81b149575f488973b3393634c56 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:38:09 2015 +0100 utilisation label du pays à la place de son libellé commit 427c9fe38f45da69c98aca7e918aeb51ec29d775 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 19:37:29 2015 +0100 - introduce CsvProducer API - use it also for referential export - move TuttiCsvUtil to his new csv package commit 679c8148204f5ff850059f4456eeb48277df2de8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 18:48:12 2015 +0100 introduce csv package + clean code commit 586a67d59f3f820507a6cb8a53f780ff5501bbc2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 09:43:22 2015 +0100 introduction du paquetage tutti-service/src/main/java/fr/ifremer/tutti/service/csv et utilisation commit 17d0b679f464bd13a97ca2aa2402d30711a835b2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 09:42:36 2015 +0100 nettoyage export generique et debut d'implatation de l'import generique commit 5eff240d4115ea326d8bc0d676370c432342e5c6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 09:41:32 2015 +0100 introduction du paquetage tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/csv commit 844ccd4ba3238ddb19347b08d57b012530b52fd8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 09:40:55 2015 +0100 ajout des methodes getAllGears et getAllVessel sur PersistenceService commit de12bb09ef5772dc6dba69af2dd627edb070d628 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 09:39:41 2015 +0100 ajout de methodes utilitaires sur les entities commit 26f5e75dd2521a1e369ed7184add2b66133c4db4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 09:39:07 2015 +0100 suppression de code mort commit 55bd07d222f1689ac8a4842f4804b64162643971 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:32:14 2015 +0100 utilisation de methode de service pour creer le modele de progression commit a4943cac04bb47f893e68a589159168b20c074c4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:31:39 2015 +0100 use new API commit 380246f742538220e9ed8e5a68f3485768f4215a Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:31:01 2015 +0100 ajout traductions pour export des fichiers techniques lors de l'export generique commit 44d8d3213f4314e384a883fb5b206f635ff7e866 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:29:46 2015 +0100 Ajout d'une méthode pour obtenir directement la liste des référentiels temporaires (aussi utilisé pour l'export générique) commit 9ff4adc0d7b40ea7cc538ccffd2287a130849a2a Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:29:32 2015 +0100 suppression d'un service obsolete commit e9f3ca61642bbc918f5a255ffff5c5f22c2a75a4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:28:23 2015 +0100 - ajout de l'export de fichiers techniques (protocol, reférentiels temporaires) - amélioration du packaging - nettoyage de code Summary of changes: pom.xml | 2 +- .../tutti/persistence/TuttiPersistenceImpl.java | 63 +- .../persistence/TuttiPersistenceNoDbImpl.java | 53 +- .../tutti/persistence/entities/TuttiEntities.java | 21 - .../tutti/persistence/entities/data/Cruises.java | 13 + .../tutti/persistence/entities/data/Programs.java | 21 + .../entities/protocol/TuttiProtocols.java | 40 + .../CaracteristicQualitativeValues.java | 23 +- .../persistence/entities/referential/Gears.java | 27 +- .../persistence/entities/referential/Persons.java | 28 +- .../persistence/entities/referential/Speciess.java | 44 +- .../entities/referential/TuttiLocations.java | 33 + .../persistence/entities/referential/Vessels.java | 47 +- .../service/ProtocolPersistenceService.java | 11 + .../service/ProtocolPersistenceServiceImpl.java | 20 + .../referential/GearPersistenceService.java | 29 +- .../referential/GearPersistenceServiceImpl.java | 102 +- .../referential/PersonPersistenceService.java | 29 +- .../referential/PersonPersistenceServiceImpl.java | 108 ++- .../referential/SpeciesPersistenceService.java | 29 +- .../referential/SpeciesPersistenceServiceImpl.java | 86 +- .../referential/VesselPersistenceService.java | 29 +- .../referential/VesselPersistenceServiceImpl.java | 99 +- .../src/main/resources/queries-failsafe.hbm.xml | 106 +- .../entities/protocol/TuttiProtocolsTest.java | 21 +- .../GearPersistenceServiceWriteTest.java | 4 +- .../PersonPersistenceServiceWriteTest.java | 4 +- .../SpeciesPersistenceServiceReadTest.java | 2 +- .../SpeciesPersistenceServiceWriteTest.java | 4 +- .../VesselPersistenceServiceWriteTest.java | 4 +- .../ifremer/tutti/service/PdfGeneratorService.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 77 +- .../fr/ifremer/tutti/service/TuttiCsvUtil.java | 942 ------------------ .../service/bigfin/csv/BigfinDataRowModel.java | 4 +- .../AbstractFishingOperationRowModel.java | 5 +- .../catches/multipost/AccidentalCatchRowModel.java | 51 +- .../catches/multipost/AttachmentRowModel.java | 5 +- .../catches/multipost/CaracteristicRowModel.java | 21 +- .../catches/multipost/CatchBatchRowModel.java | 2 +- .../catches/multipost/CatchFrequencyRowModel.java | 23 +- .../service/catches/multipost/CatchRowModel.java | 35 +- .../catches/multipost/CatchWeightsRowModel.java | 12 +- .../multipost/IndividualObservationRowModel.java | 32 +- .../catches/multipost/MarineLitterRowModel.java | 35 +- .../multipost/MarineLitterWeightRowModel.java | 5 +- .../catches/multipost/MultiPostImportService.java | 97 +- .../csv/AbstractTuttiImportExportModel.java | 63 ++ .../service/csv/AbstractTuttiImportModel.java | 28 + .../tutti/service/csv/BeanIndexNullableGetter.java | 50 + .../tutti/service/csv/BeanNullableGetter.java | 39 + .../tutti/service/csv/BeanPropertyFormatter.java | 37 + .../service/csv/CaracteristicParserFormatter.java | 46 + .../csv/CaracteristicValueParserFormatter.java | 114 +++ .../tutti/service/csv/CountryFormatter.java | 23 + .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 107 +++ .../fr/ifremer/tutti/service/csv/CsvProducer.java | 58 ++ .../csv/EntityListParserFormatterSupport.java | 52 + .../tutti/service/csv/EntityNotFoundException.java | 39 + .../service/csv/EntityParserFormatterSupport.java | 107 +++ .../service/csv/EnumByNameParserFormatter.java | 50 + .../FishingOperationLocationParserFormatter.java | 49 + .../csv/FishingOperationStrataParserFormatter.java | 49 + .../FishingOperationSubStrataParserFormatter.java | 49 + .../service/csv/ForeignKeyListParserFormatter.java | 68 ++ .../service/csv/ForeignKeyParserFormatter.java | 57 ++ .../tutti/service/csv/GearListParserFormatter.java | 25 + .../tutti/service/csv/GearParserFormatter.java | 63 ++ .../tutti/service/csv/HarbourParserFormatter.java | 48 + .../tutti/service/csv/ImportModelWithHeader.java | 13 + .../service/csv/IntegerListParserFormatter.java | 43 + .../service/csv/PersonListParserFormatter.java | 25 + .../tutti/service/csv/PersonParserFormatter.java | 60 ++ .../tutti/service/csv/ProgramParserFormatter.java | 46 + .../tutti/service/csv/ProgramZoneFormatter.java | 23 + .../tutti/service/csv/SpeciesParserFormatter.java | 75 ++ .../tutti/service/csv/StringParserFormatter.java | 30 + .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 225 +++++ .../tutti/service/csv/TuttiRepeatableExport.java | 25 + .../service/csv/VesselListParserFormatter.java | 25 + .../tutti/service/csv/VesselParserFormatter.java | 63 ++ .../export/generic/AccidentalCatchExportModel.java | 167 ---- .../generic/GearCaracteristicExportModel.java | 74 -- .../generic/IndividualObservationExportModel.java | 145 --- .../export/generic/MarineLitterExportModel.java | 82 -- .../export/generic/OperationExportModel.java | 143 --- .../export/generic/ParameterExportModel.java | 92 -- .../service/export/generic/SpeciesExportModel.java | 75 -- .../service/export/generic/SurveyExportModel.java | 68 -- .../service/export/generic/TuttiExportService.java | 1014 -------------------- .../service/export/sumatra/CatchRowModel.java | 7 +- .../genericformat/GenericFormatArchive.java | 415 ++++++++ .../genericformat/GenericFormatExportContext.java | 252 +++++ .../GenericFormatExportOperationContext.java | 206 ++++ .../genericformat/GenericFormatExportService.java | 820 ++++++++++++++++ .../genericformat/GenericFormatImportContext.java | 139 +++ .../GenericFormatImportEntityParserFactory.java | 187 ++++ .../genericformat/GenericFormatImportRequest.java | 73 ++ .../genericformat/GenericFormatImportResult.java | 104 ++ .../genericformat/GenericFormatImportService.java | 552 +++++++++++ .../GenericFormatReferentialImportResult.java | 122 +++ .../consumer/CruiseAlreadyExistException.java | 32 + .../consumer/CruiseNotValidException.java | 58 ++ .../consumer/CsvConsumerForAccidentalCatch.java | 37 + .../consumer/CsvConsumerForCatch.java | 39 + .../consumer/CsvConsumerForGearCaracteristic.java | 38 + .../CsvConsumerForIndividualObservation.java | 38 + .../consumer/CsvConsumerForMarineLitter.java | 38 + .../consumer/CsvConsumerForOperation.java | 38 + .../consumer/CsvConsumerForParameter.java | 38 + .../consumer/CsvConsumerForSampleCategory.java | 79 ++ .../consumer/CsvConsumerForSurvey.java | 56 ++ .../genericformat/csv/AccidentalCatchModel.java | 119 +++ .../csv/AccidentalCatchRow.java} | 4 +- .../service/genericformat/csv/CatchModel.java | 216 +++++ .../csv/CatchRow.java} | 34 +- .../csv}/ExportSampleCategory.java | 2 +- .../genericformat/csv/GearCaracteristicModel.java | 107 +++ .../csv/GearCaracteristicRow.java} | 20 +- .../csv/IndividualObservationModel.java | 120 +++ .../csv/IndividualObservationRow.java} | 4 +- .../genericformat/csv/MarineLitterModel.java | 117 +++ .../csv/MarineLitterRow.java} | 4 +- .../service/genericformat/csv/OperationModel.java | 268 ++++++ .../csv/OperationRow.java} | 97 +- .../service/genericformat/csv/ParameterModel.java | 105 ++ .../csv/ParameterRow.java} | 4 +- .../genericformat/csv/SampleCategoryModel.java | 61 ++ .../genericformat/csv/SampleCategoryRow.java | 56 ++ .../genericformat/csv/SpeciesExportModel.java | 65 ++ .../csv}/SpeciesExportRow.java | 2 +- .../service/genericformat/csv/SurveyModel.java | 128 +++ .../csv/SurveyRow.java} | 64 +- .../producer/CsvProducerForAccidentalCatch.java | 115 +++ .../producer/CsvProducerForCatch.java} | 325 +++---- .../producer/CsvProducerForGearCaracteristics.java | 50 + .../CsvProducerForIndividualObservation.java | 100 ++ .../producer/CsvProducerForMarineLitter.java | 49 + .../producer/CsvProducerForOperation.java | 35 + .../producer/CsvProducerForParameter.java | 62 ++ .../producer/CsvProducerForSampleCategory.java | 40 + .../producer/CsvProducerForSpecies.java | 100 ++ .../producer/CsvProducerForSurvey.java | 32 + .../operationimport/ImportFromColumnFileModel.java | 19 +- .../service/protocol/CaracteristicRowModel.java | 5 +- .../tutti/service/protocol/SpeciesRowModel.java | 17 +- .../service/pupitri/PupitriImportService.java | 4 +- .../service/pupitri/csv/CarrouselRowModel.java | 5 +- .../tutti/service/pupitri/csv/SpeciesRowModel.java | 4 +- .../tutti/service/pupitri/csv/TrunkRowModel.java | 5 +- ...stResult.java => ReferentialImportRequest.java} | 33 +- .../referential/ReferentialImportResult.java | 38 +- .../referential/ReferentialImportService.java | 752 --------------- .../ReferentialTemporaryGearService.java | 209 ++-- .../ReferentialTemporaryPersonService.java | 204 ++-- .../ReferentialTemporarySpeciesService.java | 200 ++-- .../ReferentialTemporaryVesselService.java | 200 +--- .../consumer/CsvConsumerForTemporaryGear.java | 198 ++++ .../consumer/CsvConsumerForTemporaryPerson.java | 195 ++++ .../consumer/CsvConsumerForTemporarySpecies.java | 200 ++++ .../consumer/CsvConsumerForTemporaryVessel.java | 199 ++++ .../service/referential/{ => csv}/GearModel.java | 54 +- .../service/referential/{ => csv}/GearRow.java | 2 +- .../service/referential/{ => csv}/PersonModel.java | 54 +- .../service/referential/{ => csv}/PersonRow.java | 10 +- .../referential/{ => csv}/SpeciesModel.java | 54 +- .../service/referential/{ => csv}/SpeciesRow.java | 2 +- .../TemporaryReferentialEntityIdParser.java | 19 +- .../service/referential/{ => csv}/VesselModel.java | 59 +- .../service/referential/{ => csv}/VesselRow.java | 2 +- .../producer/CsvProducerForTemporaryGear.java | 38 + .../producer/CsvProducerForTemporaryPerson.java | 38 + .../producer/CsvProducerForTemporarySpecies.java | 38 + .../producer/CsvProducerForTemporaryVessel.java | 38 + .../tutti/service/report/ReportService.java | 4 +- .../resources/i18n/tutti-service_en_GB.properties | 105 +- .../resources/i18n/tutti-service_fr_FR.properties | 106 +- .../ifremer/tutti/service/ServiceDbResource.java | 15 +- .../export/generic/TuttiExportServiceTest.java | 505 ---------- .../GenericFormatExportService2Test.java} | 8 +- .../GenericFormatExportServiceAno5804Test.java} | 8 +- .../GenericFormatExportServiceTest.java | 548 +++++++++++ .../GenericFormatImportServiceTest.java | 80 ++ .../pupitri/PupitriImportServiceAno5079Test.java | 2 +- .../ReferentialTemporaryExportServiceTest.java | 3 + .../ReferentialTemporaryGearServiceTest.java | 8 +- .../ReferentialTemporaryPersonServiceTest.java | 4 +- .../ReferentialTemporarySpeciesServiceTest.java | 12 +- .../ReferentialTemporaryVesselServiceTest.java | 6 +- .../genericFormat/empty/accidentalCatch.csv | 1 + .../test/resources/genericFormat/empty/catch.csv | 1 + .../genericFormat/empty/gearCaracteristics.csv | 1 + .../genericFormat/empty/individualObservation.csv | 1 + .../resources/genericFormat/empty/marineLitter.csv | 1 + .../resources/genericFormat/empty/operation.csv | 1 + .../resources/genericFormat/empty/parameter.csv | 1 + .../genericFormat/empty/protocol.tuttiProtocol | 81 ++ .../genericFormat/empty/sampleCategory.csv | 6 + .../test/resources/genericFormat/empty/survey.csv | 2 + .../genericFormat/empty/temporaryPersons.csv | 4 + .../genericFormat/empty/temporarySpecies.csv | 9 + .../genericFormat/empty/temporaryVessels.csv | 1 + .../filtered-resources/tutti-help-fr.properties | 3 +- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 11 +- .../tutti/ui/swing/action/AbstractTuttiAction.java | 3 +- ...n.java => ExportGenericFormatCruiseAction.java} | 32 +- ...> ExportGenericFormatProgramCruisesAction.java} | 38 +- .../ui/swing/action/ExportProtocolAction.java | 2 +- .../ImportGenericFormatProgramCruisesAction.java | 105 ++ .../ui/swing/action/ImportProtocolAction.java | 7 +- .../action/OpenReplaceTemporaryGearUIAction.java | 3 +- .../action/OpenReplaceTemporaryVesselUIAction.java | 3 +- .../action/SelectSpeciesForBenthosBatchAction.java | 2 +- ...SpeciesForIndividualObservationBatchAction.java | 2 +- .../action/SelectSpeciesForSpeciesBatchAction.java | 2 +- .../tutti/ui/swing/content/home/SelectCruiseUI.css | 14 +- .../ui/swing/content/home/SelectCruiseUI.jaxx | 1 + .../content/protocol/EditProtocolUIHandler.java | 5 +- .../content/protocol/EditProtocolUIModel.java | 10 +- .../ManageTemporaryReferentialUIHandler.java | 17 +- .../GearCaracteristicListCellRenderer.java | 2 +- .../resources/i18n/tutti-ui-swing_en_GB.properties | 10 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 10 + 222 files changed, 11259 insertions(+), 5499 deletions(-) create mode 100644 tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Programs.java create mode 100644 tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/TuttiLocations.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CountryFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearListParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ImportModelWithHeader.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/IntegerListParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramZoneFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyExistException.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotValidException.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/AccidentalCatchExportRow.java => genericformat/csv/AccidentalCatchRow.java} (96%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/CatchExportRow.java => genericformat/csv/CatchRow.java} (89%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic => genericformat/csv}/ExportSampleCategory.java (98%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/GearCaracteristicExportRow.java => genericformat/csv/GearCaracteristicRow.java} (83%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/IndividualObservationExportRow.java => genericformat/csv/IndividualObservationRow.java} (96%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/MarineLitterExportRow.java => genericformat/csv/MarineLitterRow.java} (96%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/OperationExportRow.java => genericformat/csv/OperationRow.java} (84%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/ParameterExportRow.java => genericformat/csv/ParameterRow.java} (96%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic => genericformat/csv}/SpeciesExportRow.java (96%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/SurveyExportRow.java => genericformat/csv/SurveyRow.java} (66%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/{export/generic/CatchExportModel.java => genericformat/producer/CsvProducerForCatch.java} (56%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ImportRequestResult.java => ReferentialImportRequest.java} (76%) delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/GearModel.java (60%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/GearRow.java (98%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/PersonModel.java (57%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/PersonRow.java (92%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/SpeciesModel.java (55%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/SpeciesRow.java (97%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/TemporaryReferentialEntityIdParser.java (67%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/VesselModel.java (62%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/referential/{ => csv}/VesselRow.java (98%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java delete mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java rename tutti-service/src/test/java/fr/ifremer/tutti/service/{export/generic/TuttiExportService2Test.java => genericformat/GenericFormatExportService2Test.java} (98%) rename tutti-service/src/test/java/fr/ifremer/tutti/service/{export/generic/TuttiExportServiceAno5804Test.java => genericformat/GenericFormatExportServiceAno5804Test.java} (92%) create mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java create mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java create mode 100644 tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/catch.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/operation.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/parameter.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/protocol.tuttiProtocol create mode 100644 tutti-service/src/test/resources/genericFormat/empty/sampleCategory.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/survey.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/temporaryPersons.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/temporarySpecies.csv create mode 100644 tutti-service/src/test/resources/genericFormat/empty/temporaryVessels.csv rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/{ExportCruiseAction.java => ExportGenericFormatCruiseAction.java} (69%) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/{ExportProgramAction.java => ExportGenericFormatProgramCruisesAction.java} (68%) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit e9f3ca61642bbc918f5a255ffff5c5f22c2a75a4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:28:23 2015 +0100 - ajout de l'export de fichiers techniques (protocol, reférentiels temporaires) - amélioration du packaging - nettoyage de code --- .../export/generic/GlobalExportContext.java | 292 ++++++++ .../export/generic/OperationExportContext.java | 111 +++ .../service/export/generic/TuttiExportService.java | 833 ++++++++------------- .../{ => csv}/AccidentalCatchExportModel.java | 2 +- .../{ => csv}/AccidentalCatchExportRow.java | 2 +- .../export/generic/{ => csv}/CatchExportModel.java | 2 +- .../export/generic/{ => csv}/CatchExportRow.java | 2 +- .../generic/{ => csv}/ExportSampleCategory.java | 2 +- .../{ => csv}/GearCaracteristicExportModel.java | 2 +- .../{ => csv}/GearCaracteristicExportRow.java | 2 +- .../IndividualObservationExportModel.java | 2 +- .../{ => csv}/IndividualObservationExportRow.java | 2 +- .../generic/{ => csv}/MarineLitterExportModel.java | 2 +- .../generic/{ => csv}/MarineLitterExportRow.java | 2 +- .../generic/{ => csv}/OperationExportModel.java | 2 +- .../generic/{ => csv}/OperationExportRow.java | 2 +- .../generic/{ => csv}/ParameterExportModel.java | 2 +- .../generic/{ => csv}/ParameterExportRow.java | 2 +- .../generic/{ => csv}/SpeciesExportModel.java | 9 +- .../export/generic/{ => csv}/SpeciesExportRow.java | 2 +- .../generic/{ => csv}/SurveyExportModel.java | 2 +- .../export/generic/{ => csv}/SurveyExportRow.java | 2 +- 22 files changed, 720 insertions(+), 561 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java new file mode 100644 index 0000000..fece275 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java @@ -0,0 +1,292 @@ +package fr.ifremer.tutti.service.export.generic; + +import com.google.common.base.Charsets; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchExportModel; +import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.CatchExportModel; +import fr.ifremer.tutti.service.export.generic.csv.CatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicExportModel; +import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicExportRow; +import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationExportModel; +import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.MarineLitterExportModel; +import fr.ifremer.tutti.service.export.generic.csv.MarineLitterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.OperationExportModel; +import fr.ifremer.tutti.service.export.generic.csv.OperationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.ParameterExportModel; +import fr.ifremer.tutti.service.export.generic.csv.ParameterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportModel; +import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SurveyExportModel; +import fr.ifremer.tutti.service.export.generic.csv.SurveyExportRow; +import org.apache.commons.io.IOUtils; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.Closeable; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** +* Created on 2/5/15. +* +* @author Tony Chemit - chemit@codelutin.com +* @since 3.13 +*/ +public class GlobalExportContext implements Closeable { + + File protocolFile; + + File temporaryGearFile; + + File temporaryPersonFile; + + File temporarySpeciesFile; + + File temporaryVesselFile; + + File surveyFile; + + File gearCaracteristicsFile; + + File operationFile; + + File parameterFile; + + File marineLitterFile; + + File individualObservationFile; + + File catchFile; + + File accidentalCatchFile; + + File speciesFile; + + BufferedWriter surveyWriter; + + BufferedWriter gearCaracteristicsWriter; + + BufferedWriter operationWriter; + + BufferedWriter parameterWriter; + + BufferedWriter marineLitterWriter; + + BufferedWriter catchWriter; + + BufferedWriter accidentalCatchWriter; + + BufferedWriter individualObservationWriter; + + BufferedWriter speciesWriter; + + SurveyExportModel surveyModel; + + GearCaracteristicExportModel gearCaracteristicsModel; + + OperationExportModel operationModel; + + MarineLitterExportModel marineLitterModel; + + ParameterExportModel parameterModel; + + CatchExportModel catchModel; + + AccidentalCatchExportModel accidentalCatchModel; + + IndividualObservationExportModel individualObservationModel; + + SpeciesExportModel speciesModel; + + final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); + + TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport; + + TuttiCsvUtil.TuttiRepeatableExport<GearCaracteristicExportRow> gearCaracteristicsExport; + + TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport; + + TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport; + + TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport; + + TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport; + + TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport; + + TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport; + + TuttiCsvUtil.TuttiRepeatableExport<SpeciesExportRow> speciesExport; + + Map<String, Species> speciesById; + + String checkError; + + GlobalExportContext(File basedir, + char csvSeparator, + DecoratorService decoratorService, + Caracteristic weightMeasuredCaracteristic, + Caracteristic deadOrAliveCaracteristic, + Caracteristic genderCaracteristic, + Caracteristic pmfmIdCaracteristic, + SampleCategoryModel sampleCategoryModel, + Map<String, Species> speciesById) { + + this.speciesById = speciesById; + try { + + protocolFile = new File(basedir, "protocol.tuttiProtocol"); + temporaryGearFile = new File(basedir, "temporayGear.csv"); + temporaryPersonFile = new File(basedir, "temporayPerson.csv"); + temporarySpeciesFile = new File(basedir, "temporaySpecies.csv"); + temporaryVesselFile = new File(basedir, "temporayVessel.csv"); + + surveyFile = new File(basedir, "survey.csv"); + surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8); + + gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv"); + gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8); + + operationFile = new File(basedir, "operation.csv"); + operationWriter = Files.newWriter(operationFile, Charsets.UTF_8); + + marineLitterFile = new File(basedir, "marineLitter.csv"); + marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8); + + parameterFile = new File(basedir, "parameter.csv"); + parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8); + + catchFile = new File(basedir, "catch.csv"); + catchWriter = Files.newWriter(catchFile, Charsets.UTF_8); + + accidentalCatchFile = new File(basedir, "accidentalCatch.csv"); + accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8); + + individualObservationFile = new File(basedir, "individualObservation.csv"); + individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8); + + speciesFile = new File(basedir, "species.csv"); + speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8); + + } catch (FileNotFoundException e) { + + // should never happen + throw new ApplicationTechnicalException(t("tutti.service.export.context.error"), e); + } + + surveyModel = new SurveyExportModel(csvSeparator); + + gearCaracteristicsModel = new GearCaracteristicExportModel( + csvSeparator, decoratorService); + + operationModel = + new OperationExportModel( + csvSeparator, + decoratorService.getDecoratorByType(Vessel.class)); + + parameterModel = new ParameterExportModel( + csvSeparator, decoratorService); + + marineLitterModel = new MarineLitterExportModel(csvSeparator); + catchModel = new CatchExportModel(csvSeparator, + sampleCategoryModel, + decoratorService); + accidentalCatchModel = new AccidentalCatchExportModel( + csvSeparator, + deadOrAliveCaracteristic, + genderCaracteristic, + weightMeasuredCaracteristic, + pmfmIdCaracteristic); + individualObservationModel = new IndividualObservationExportModel( + csvSeparator, + weightMeasuredCaracteristic, + pmfmIdCaracteristic); + + speciesModel = new SpeciesExportModel( + csvSeparator); + + surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel); + + gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport( + gearCaracteristicsModel); + + operationExport = TuttiCsvUtil.newRepeatableExport( + operationModel); + + parameterExport = TuttiCsvUtil.newRepeatableExport( + parameterModel); + + marineLitterExport = TuttiCsvUtil.newRepeatableExport( + marineLitterModel); + + catchExport = TuttiCsvUtil.newRepeatableExport(catchModel); + accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel); + individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel); + speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel); + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(surveyWriter); + IOUtils.closeQuietly(gearCaracteristicsWriter); + IOUtils.closeQuietly(operationWriter); + IOUtils.closeQuietly(parameterWriter); + IOUtils.closeQuietly(catchWriter); + IOUtils.closeQuietly(accidentalCatchWriter); + IOUtils.closeQuietly(marineLitterWriter); + IOUtils.closeQuietly(individualObservationWriter); + IOUtils.closeQuietly(speciesWriter); + } + + public String getCheckError() { + return checkError; + } + + public void setCheckError(String checkError) { + this.checkError = checkError; + } + + public void addSpecies(Species species) { + String speciesId = species.getId(); + if (!speciesToExport.containsKey(speciesId)) { + + // not treated species, add a new row + Species fullSpecies = speciesById.get(speciesId); + SpeciesExportRow row = new SpeciesExportRow(); + row.setSpecies(fullSpecies); + speciesToExport.put(speciesId, row); + // add the survey code (see http://forge.codelutin.com/issues/4799) + species.setSurveyCode(fullSpecies.getSurveyCode()); + } + } + + public List<SpeciesExportRow> getSpeciesToExport() { + List<SpeciesExportRow> result = + Lists.newArrayList(speciesToExport.values()); + + Collections.sort(result, new Comparator<SpeciesExportRow>() { + @Override + public int compare(SpeciesExportRow o1, SpeciesExportRow o2) { + return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()); + } + }); + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java new file mode 100644 index 0000000..ed18610 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java @@ -0,0 +1,111 @@ +package fr.ifremer.tutti.service.export.generic; + +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.catches.WeightComputingService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class OperationExportContext { + + /** Logger. */ + private static final Log log = LogFactory.getLog(OperationExportContext.class); + + protected final FishingOperation operation; + + private final CatchBatch catchBatch; + + private BatchContainer<MarineLitterBatch> rootMarineLitterBatch; + + private BatchContainer<SpeciesBatch> rootSpeciesBatch; + + private BatchContainer<BenthosBatch> rootBenthosBatch; + + private boolean withCatchBatch; + + public OperationExportContext(FishingOperation operation, PersistenceService persistenceService, WeightComputingService weightComputingService) { + + this.operation = operation; + + String operationId = operation.getId(); + + withCatchBatch = persistenceService.isFishingOperationWithCatchBatch(operationId); + + if (withCatchBatch) { + + + // load batches + + catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + + boolean withError = false; + + try { + rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId); + } catch (Exception e) { + withError = true; + rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operationId, false); + } + + try { + rootBenthosBatch = weightComputingService.getComputedBenthosBatches(operationId); + } catch (Exception e) { + withError = true; + rootBenthosBatch = persistenceService.getRootBenthosBatch(operationId, false); + } + + try { + rootMarineLitterBatch = weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight()); + } catch (Exception e) { + withError = true; + rootMarineLitterBatch = persistenceService.getRootMarineLitterBatch(operationId); + } + + // apply compute weights + + if (!withError) { + weightComputingService.computeCatchBatchWeights(catchBatch, rootSpeciesBatch, rootBenthosBatch, rootMarineLitterBatch); + } + } else { + if (log.isWarnEnabled()) { + log.warn("Skip fishing operation " + operationId + " since no catchBatch associated."); + } + catchBatch = null; + rootSpeciesBatch = null; + rootBenthosBatch = null; + rootMarineLitterBatch = null; + } + + } + + public CatchBatch getCatchBatch() { + return catchBatch; + } + + public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch() { + return rootMarineLitterBatch; + } + + public BatchContainer<SpeciesBatch> getRootSpeciesBatch() { + return rootSpeciesBatch; + } + + public BatchContainer<BenthosBatch> getRootBenthosBatch() { + return rootBenthosBatch; + } + + public boolean isWithCatchBatch() { + return withCatchBatch; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java index 57c4721..d975cc4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java @@ -22,11 +22,9 @@ package fr.ifremer.tutti.service.export.generic; * #L% */ -import com.google.common.base.Charsets; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.io.Files; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -35,22 +33,35 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Gears; +import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiCsvUtil; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.catches.WeightComputingService; +import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.CatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicExportRow; +import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.MarineLitterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.OperationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.ParameterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SurveyExportRow; +import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.IOUtils; @@ -61,13 +72,8 @@ import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; -import java.io.Closeable; import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; -import java.util.Collections; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -83,8 +89,7 @@ import static org.nuiton.i18n.I18n.t; */ public class TuttiExportService extends AbstractTuttiService { - private static final Log log = - LogFactory.getLog(TuttiExportService.class); + private static final Log log = LogFactory.getLog(TuttiExportService.class); protected PersistenceService persistenceService; @@ -92,6 +97,16 @@ public class TuttiExportService extends AbstractTuttiService { protected WeightComputingService weightComputingService; + protected ReferentialTemporaryGearService referentialTemporaryGearService; + + protected ReferentialTemporaryPersonService referentialTemporaryPersonService; + + protected ReferentialTemporarySpeciesService referentialTemporarySpeciesService; + + protected ReferentialTemporaryVesselService referentialTemporaryVesselService; + + protected ProtocolImportExportService protocolImportExportService; + protected Caracteristic verticalOpeningCaracteristic; protected Caracteristic horizontalOpeningWingCaracteristic; @@ -112,6 +127,11 @@ public class TuttiExportService extends AbstractTuttiService { persistenceService = getService(PersistenceService.class); decoratorService = getService(DecoratorService.class); weightComputingService = getService(WeightComputingService.class); + referentialTemporaryGearService = getService(ReferentialTemporaryGearService.class); + referentialTemporaryPersonService = getService(ReferentialTemporaryPersonService.class); + referentialTemporarySpeciesService = getService(ReferentialTemporarySpeciesService.class); + referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); + protocolImportExportService = getService(ProtocolImportExportService.class); verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic(); horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingsCaracteristic(); @@ -122,9 +142,20 @@ public class TuttiExportService extends AbstractTuttiService { genderCaracteristic = persistenceService.getSexCaracteristic(); } - public void exportProgram(String programId, - File exportFile, - ProgressionModel progressionModel) { + public ProgressionModel createExportProgramProgessionModel(String programId) { + + // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + (protocol + + // temporary gear + temporary person + temporar species + temporary vessel + zip) + + List<Cruise> allCruise = persistenceService.getAllCruise(programId); + + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.setTotal(9 * allCruise.size() + 6); + return progressionModel; + + } + + public void exportProgram(String programId, File exportFile, ProgressionModel progressionModel) { Preconditions.checkNotNull(programId); Preconditions.checkNotNull(exportFile); @@ -139,12 +170,12 @@ public class TuttiExportService extends AbstractTuttiService { List<Cruise> allCruise = persistenceService.getAllCruise(programId); - File basedir = new File(context.getConfig().newTempFile( - "exportProgram"), "exportProgram-" + programId); + File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - ExportContext exportContext = createExportContext(basedir); + GlobalExportContext exportContext = createExportContext(basedir); + exportTechnicalFiles(exportContext, progressionModel); try { for (Cruise cruise : allCruise) { @@ -154,8 +185,7 @@ public class TuttiExportService extends AbstractTuttiService { } ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - increments(progressionModel, - t("tutti.service.exportCruise.buildZip", exportFile)); + increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); } finally { @@ -163,9 +193,18 @@ public class TuttiExportService extends AbstractTuttiService { } } - public void exportCruise(String cruiseId, - File exportFile, - ProgressionModel progressionModel) { + public ProgressionModel createExportCruiseProgessionModel() { + + // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + + // (protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) + + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.setTotal(9 + 6); + return progressionModel; + + } + + public void exportCruise(String cruiseId, File exportFile, ProgressionModel progressionModel) { Preconditions.checkNotNull(cruiseId); Preconditions.checkNotNull(exportFile); @@ -191,19 +230,19 @@ public class TuttiExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile( - "exportCruise"), "exportCruise-" + cruiseId); + File basedir = new File(context.getConfig().newTempFile("exportCruise"), "exportCruise-" + cruiseId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - ExportContext exportContext = createExportContext(basedir); + GlobalExportContext exportContext = createExportContext(basedir); + + exportTechnicalFiles(exportContext, progressionModel); try { exportCruise(cruise, exportContext, progressionModel); ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - progressionModel.increments( - t("tutti.service.exportCruise.buildZip", exportFile)); + increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); } catch (ApplicationBusinessException e) { @@ -220,17 +259,110 @@ public class TuttiExportService extends AbstractTuttiService { } } + protected void exportTechnicalFiles(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + exportProtocol(exportContext, progressionModel); + exportTemporaryGears(exportContext, progressionModel); + exportTemporaryPersons(exportContext, progressionModel); + exportTemporarySpeciess(exportContext, progressionModel); + exportTemporaryVessels(exportContext, progressionModel); + + } + + protected void exportTemporaryGears(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + + if (temporaryGears.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporaryGearExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); + + try { + referentialTemporaryGearService.exportTemporaryGear(exportContext.temporaryGearFile, temporaryGears); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary gears", e); + } + + } + + } + + + protected void exportTemporaryPersons(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + + if (temporaryPersons.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporaryPersonExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); + + try { + referentialTemporaryPersonService.exportTemporaryPerson(exportContext.temporaryPersonFile, temporaryPersons); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); + } + + } + + } + + protected void exportTemporarySpeciess(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + + if (temporarySpeciess.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporarySpeciesExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); + + try { + referentialTemporarySpeciesService.exportTemporarySpecies(exportContext.temporarySpeciesFile, temporarySpeciess); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); + } + + } + + } + + protected void exportTemporaryVessels(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + + if (temporaryVessels.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporaryVesselExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); + + try { + referentialTemporaryVesselService.exportTemporaryVessel(exportContext.temporaryVesselFile, temporaryVessels); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); + } + + } + + } + /** - * Export the given fishing operation of a cruise to file system - * in a temporary directory. + * Export the given fishing operation of a cruise to file system in a temporary directory. * * @param cruiseId id of the cruise to export * @param fishingOperationId id of the fishing operation to export * @return the directory containing the export files * @since 3.0-rc-2 */ - public File exportFishingOperation(String cruiseId, - String fishingOperationId) { + public File exportFishingOperation(String cruiseId, String fishingOperationId) { Preconditions.checkNotNull(cruiseId); @@ -255,21 +387,16 @@ public class TuttiExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile( - "exportCruise"), "exportCruise-" + cruiseId); + File basedir = new File(context.getConfig().newTempFile("exportCruise"), "exportCruise-" + cruiseId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - ExportContext exportContext = createExportContext(basedir); + GlobalExportContext exportContext = createExportContext(basedir); - FishingOperation fishingOperation = - persistenceService.getFishingOperation(fishingOperationId); + FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); try { - exportCruise(cruise, - Lists.newArrayList(fishingOperation), - exportContext, - null); + exportCruise(cruise, Lists.newArrayList(fishingOperation), exportContext, null); ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); } finally { IOUtils.closeQuietly(exportContext); @@ -282,48 +409,38 @@ public class TuttiExportService extends AbstractTuttiService { return basedir; } - protected ExportContext createExportContext(File basedir) { - + protected GlobalExportContext createExportContext(File basedir) { List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); - char csvSeparator = context.getConfig().getCsvSeparator(); - - return new ExportContext( - basedir, - csvSeparator, - decoratorService, - weightMeasuredCaracteristic, - deadOrAliveCaracteristic, - genderCaracteristic, - pmfmIdCaracteristic, - context.getSampleCategoryModel(), - speciesById); + return new GlobalExportContext(basedir, + ';', + decoratorService, + weightMeasuredCaracteristic, + deadOrAliveCaracteristic, + genderCaracteristic, + pmfmIdCaracteristic, + context.getSampleCategoryModel(), + speciesById); + } - protected void checkCruise(ProgressionModel progressionModel, - Cruise cruise, - String fishingOperationId) { + protected void checkCruise(ProgressionModel progressionModel, Cruise cruise, String fishingOperationId) { Preconditions.checkNotNull(cruise); - increments(progressionModel, - t("tutti.service.exportCruise.checkCruise", cruise.getName())); + increments(progressionModel, t("tutti.service.exportCruise.checkCruise", cruise.getName())); // check cruise fishing operations - Map<String, String> errors = - weightComputingService.checkCruise(cruise.getId(), - fishingOperationId); + Map<String, String> errors = weightComputingService.checkCruise(cruise.getId(), fishingOperationId); if (MapUtils.isNotEmpty(errors)) { // there is some fishing operations with some errors - Decorator<Cruise> cruiseDecorator = - decoratorService.getDecoratorByType(Cruise.class); + Decorator<Cruise> cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); - Decorator<FishingOperation> fishingOperationDecorator = - decoratorService.getDecoratorByType(FishingOperation.class); + Decorator<FishingOperation> fishingOperationDecorator = decoratorService.getDecoratorByType(FishingOperation.class); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : errors.entrySet()) { String operationId = entry.getKey(); @@ -332,82 +449,80 @@ public class TuttiExportService extends AbstractTuttiService { sb.append(t("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue())); } String cruiseStr = cruiseDecorator.toString(cruise); - throw new ApplicationBusinessException( - t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString())); + throw new ApplicationBusinessException(t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString())); } } - protected void increments(ProgressionModel progressionModel, - String message) { + protected void increments(ProgressionModel progressionModel, String message) { if (progressionModel != null) { progressionModel.increments(message); } + if (log.isInfoEnabled()) { + log.info(message); + } + } + + protected void exportProtocol(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + boolean protocolFilled = context.getDataContext().isProtocolFilled(); + if (protocolFilled) { + + TuttiProtocol protocol = persistenceService.getProtocol(); + increments(progressionModel, t("tutti.service.genericExport.exportProtocol", protocol.getName())); + protocolImportExportService.exportProtocol(protocol, exportContext.protocolFile); + + } else { + increments(progressionModel, t("tutti.service.genericExport.skipProtocolExport")); + } + } - protected void exportCruise(Cruise cruise, - ExportContext exportContext, - ProgressionModel progressionModel) { + protected void exportCruise(Cruise cruise, GlobalExportContext exportContext, ProgressionModel progressionModel) { - List<FishingOperation> operations = - persistenceService.getAllFishingOperation(cruise.getId()); + List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); exportCruise(cruise, operations, exportContext, progressionModel); } - protected void exportCruise(Cruise cruise, - List<FishingOperation> operations, - ExportContext exportContext, - ProgressionModel progressionModel) { + protected void exportCruise(Cruise cruise, List<FishingOperation> operations, GlobalExportContext exportContext, ProgressionModel progressionModel) { // load fully operations - List<FishingOperation> loadedOperations = - Lists.newArrayListWithCapacity(operations.size()); + List<FishingOperation> loadedOperations = Lists.newArrayListWithCapacity(operations.size()); for (FishingOperation operation : operations) { - FishingOperation loadedOeration = - persistenceService.getFishingOperation(operation.getId()); + FishingOperation loadedOeration = persistenceService.getFishingOperation(operation.getId()); loadedOperations.add(loadedOeration); } String cruiseName = cruise.getName(); - increments(progressionModel, - t("tutti.service.exportCruise.exportSurvey", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportSurvey", cruiseName)); exportSurvey(exportContext, cruise); - increments(progressionModel, - t("tutti.service.exportCruise.exportGearCaracteristics", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportGearCaracteristics", cruiseName)); exportGearCaracteristics(exportContext, cruise); - increments(progressionModel, - t("tutti.service.exportCruise.exportOperations", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportOperations", cruiseName)); exportOperations(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportParameters", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportParameters", cruiseName)); exportParameters(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportMarineLitters", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportMarineLitters", cruiseName)); exportMarineLitters(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportIndividualObservations", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportIndividualObservations", cruiseName)); exportIndividualObservations(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportAccidentalCatches", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportAccidentalCatches", cruiseName)); exportAccidentalCatch(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportCatches", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportCatches", cruiseName)); exportCatches(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportSpecies", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportSpecies", cruiseName)); exportSpecies(exportContext, exportContext.getSpeciesToExport()); } - protected void exportSurvey(ExportContext exportContext, - Cruise cruise) { + protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { List<TuttiLocation> allCountry = persistenceService.getAllCountry(); String countryId = context.getConfig().getExportCountryId(); @@ -423,8 +538,7 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportGearCaracteristics(ExportContext exportContext, - Cruise cruise) { + protected void exportGearCaracteristics(GlobalExportContext exportContext, Cruise cruise) { try { List<GearCaracteristicExportRow> rows = Lists.newArrayList(); @@ -432,10 +546,7 @@ public class TuttiExportService extends AbstractTuttiService { for (Gear gear : cruise.getGear()) { CaracteristicMap caracteristics = - persistenceService.getGearCaracteristics( - cruise.getId(), - gear.getId(), - gear.getRankOrder()); + persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); Gear gearWithCaracteristics = Gears.newGear(gear); gearWithCaracteristics.setCaracteristics(caracteristics); @@ -448,9 +559,7 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportOperations(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportOperations(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -458,12 +567,9 @@ public class TuttiExportService extends AbstractTuttiService { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); CatchBatch catchBatch = operationContext.getCatchBatch(); - exportContext.operationModel.prepareRows(rows, - cruise, - operation, - catchBatch); + exportContext.operationModel.prepareRows(rows, cruise, operation, catchBatch); } exportContext.operationExport.write(rows, exportContext.operationWriter); @@ -472,9 +578,7 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportParameters(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportParameters(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -489,14 +593,12 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportMarineLitters(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportMarineLitters(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -512,14 +614,12 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportIndividualObservations(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportIndividualObservations(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -527,9 +627,7 @@ public class TuttiExportService extends AbstractTuttiService { } List<IndividualObservationExportRow> rows = Lists.newArrayList(); exportContext.individualObservationModel.prepareRows(persistenceService, rows, cruise, operation); - exportContext.speciesModel.prepareIndividualRows( - exportContext, - rows); + exportContext.speciesModel.prepareIndividualRows(exportContext, rows); exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter); } @@ -538,17 +636,13 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportAccidentalCatch(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportAccidentalCatch(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { List<AccidentalCatchExportRow> rows = Lists.newArrayList(); exportContext.accidentalCatchModel.prepareRows(persistenceService, rows, cruise, operation); - exportContext.speciesModel.prepareAccidentalRows( - exportContext, - rows); + exportContext.speciesModel.prepareAccidentalRows(exportContext, rows); exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter); } @@ -557,455 +651,116 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportCatches(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportCatches(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { continue; } - CatchBatch catchBatch = operationContext.getCatchBatch(); - - BatchContainer<SpeciesBatch> rootSpeciesBatch = - operationContext.getRootSpeciesBatch(); - - BatchContainer<BenthosBatch> rootBenthosBatch = - operationContext.getRootBenthosBatch(); - - // Warning! This will also add the survey code to bathc species - exportContext.speciesModel.prepareBatchRows( - exportContext, - rootSpeciesBatch, - rootBenthosBatch); - - Float totalWeight = Numbers.getValueOrComputedValue( - catchBatch.getCatchTotalWeight(), - catchBatch.getCatchTotalComputedWeight()); - - Float totalUnsortedWeight = - catchBatch.getCatchTotalUnsortedComputedWeight(); - - - Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( - catchBatch.getSpeciesTotalSortedWeight(), - catchBatch.getSpeciesTotalSortedComputedWeight()); - - Float totalSampleSortedSpeciesWeight = - catchBatch.getSpeciesTotalSampleSortedComputedWeight(); - - Float totalSortedBenthosWeight = Numbers.getValueOrComputedValue( - catchBatch.getBenthosTotalSortedWeight(), - catchBatch.getBenthosTotalSortedComputedWeight()); - - Float totalSampleSortedBenthosWeight = - catchBatch.getBenthosTotalSampleSortedComputedWeight(); + exportCatch(exportContext, cruise, operation, operationContext); - Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight(); - - //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée) - // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale) - - Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight; - - Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor); - Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor); - - if (log.isDebugEnabled()) { - String message = "\ncatchTotalWeight : " + totalWeight + - "\ncatchTotalUnsortedWeight : " + totalUnsortedWeight + - "\ntotalSampleSortedSpeciesWeight : " + totalSampleSortedSpeciesWeight + - "\ntotalSampleSortedBenthosWeight : " + totalSampleSortedBenthosWeight + - "\ntotalSortedWeight : " + totalSortedWeight + - "\ncatchRaisingFactor : " + catchRaisingFactor + - "\nspeciesCatchRaisingFactor : " + speciesCatchRaisingFactor + - "\nbenthosCatchRaisingFactor : " + benthosCatchRaisingFactor; - - log.debug(message); - } - - List<CatchExportRow> rows = Lists.newArrayList(); - exportContext.catchModel.prepareRows(persistenceService, - rows, - cruise, - operation, - rootSpeciesBatch, - rootBenthosBatch, - speciesCatchRaisingFactor, - benthosCatchRaisingFactor); - - exportContext.catchExport.write(rows, exportContext.catchWriter); } } catch (Exception e) { - throw new ApplicationTechnicalException( - t("tutti.service.export.catches.error"), e); - } - } - - protected void exportSpecies(ExportContext exportContext, - List<SpeciesExportRow> rows) { - - try { - - exportContext.speciesExport.write(rows, exportContext.speciesWriter); - - } catch (Exception e) { - throw new ApplicationTechnicalException( - t("tutti.service.export.species.error"), e); + throw new ApplicationTechnicalException(t("tutti.service.export.catches.error"), e); } } - protected static class ExportContext implements Closeable { - - File surveyFile; - - File gearCaracteristicsFile; - - File operationFile; - - File parameterFile; - - File marineLitterFile; - - File individualObservationFile; - - File catchFile; - - File accidentalCatchFile; - - File speciesFile; - - BufferedWriter surveyWriter; - - BufferedWriter gearCaracteristicsWriter; - - BufferedWriter operationWriter; - - BufferedWriter parameterWriter; - - BufferedWriter marineLitterWriter; - - BufferedWriter catchWriter; - - BufferedWriter accidentalCatchWriter; - - BufferedWriter individualObservationWriter; - - BufferedWriter speciesWriter; - - SurveyExportModel surveyModel; - - GearCaracteristicExportModel gearCaracteristicsModel; - - OperationExportModel operationModel; - - MarineLitterExportModel marineLitterModel; - - ParameterExportModel parameterModel; - - CatchExportModel catchModel; + protected void exportCatch(GlobalExportContext exportContext, Cruise cruise, FishingOperation operation, OperationExportContext operationContext) throws Exception { - AccidentalCatchExportModel accidentalCatchModel; + CatchBatch catchBatch = operationContext.getCatchBatch(); - IndividualObservationExportModel individualObservationModel; + BatchContainer<SpeciesBatch> rootSpeciesBatch = operationContext.getRootSpeciesBatch(); - SpeciesExportModel speciesModel; + BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); - final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - - TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport; - - TuttiCsvUtil.TuttiRepeatableExport<GearCaracteristicExportRow> gearCaracteristicsExport; - - TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport; - - TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport; - - TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport; - - TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport; - - TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport; - - TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport; - - TuttiCsvUtil.TuttiRepeatableExport<SpeciesExportRow> speciesExport; - - Map<String, Species> speciesById; - - String checkError; - - ExportContext(File basedir, - char csvSeparator, - DecoratorService decoratorService, - Caracteristic weightMeasuredCaracteristic, - Caracteristic deadOrAliveCaracteristic, - Caracteristic genderCaracteristic, - Caracteristic pmfmIdCaracteristic, - SampleCategoryModel sampleCategoryModel, - Map<String, Species> speciesById) { - - this.speciesById = speciesById; - try { - - surveyFile = new File(basedir, "survey.csv"); - surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8); - - gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv"); - gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8); - - operationFile = new File(basedir, "operation.csv"); - operationWriter = Files.newWriter(operationFile, Charsets.UTF_8); - - marineLitterFile = new File(basedir, "marineLitter.csv"); - marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8); - - parameterFile = new File(basedir, "parameter.csv"); - parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8); - - catchFile = new File(basedir, "catch.csv"); - catchWriter = Files.newWriter(catchFile, Charsets.UTF_8); - - accidentalCatchFile = new File(basedir, "accidentalCatch.csv"); - accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8); - - individualObservationFile = new File(basedir, "individualObservation.csv"); - individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8); - - speciesFile = new File(basedir, "species.csv"); - speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8); - - } catch (FileNotFoundException e) { - - // should never happen - throw new ApplicationTechnicalException(t("tutti.service.export.context.error"), e); - } + // Warning! This will also add the survey code to bathc species + exportContext.speciesModel.prepareBatchRows(exportContext, rootSpeciesBatch, rootBenthosBatch); - surveyModel = new SurveyExportModel(csvSeparator); + Float totalWeight = Numbers.getValueOrComputedValue( + catchBatch.getCatchTotalWeight(), + catchBatch.getCatchTotalComputedWeight()); - gearCaracteristicsModel = new GearCaracteristicExportModel( - csvSeparator, decoratorService); + Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); - operationModel = - new OperationExportModel( - csvSeparator, - decoratorService.getDecoratorByType(Vessel.class)); - parameterModel = new ParameterExportModel( - csvSeparator, decoratorService); + Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( + catchBatch.getSpeciesTotalSortedWeight(), + catchBatch.getSpeciesTotalSortedComputedWeight()); - marineLitterModel = new MarineLitterExportModel(csvSeparator); - catchModel = new CatchExportModel(csvSeparator, - sampleCategoryModel, - decoratorService); - accidentalCatchModel = new AccidentalCatchExportModel( - csvSeparator, - deadOrAliveCaracteristic, - genderCaracteristic, - weightMeasuredCaracteristic, - pmfmIdCaracteristic); - individualObservationModel = new IndividualObservationExportModel( - csvSeparator, - weightMeasuredCaracteristic, - pmfmIdCaracteristic); + Float totalSampleSortedSpeciesWeight = catchBatch.getSpeciesTotalSampleSortedComputedWeight(); - speciesModel = new SpeciesExportModel( - csvSeparator); + Float totalSortedBenthosWeight = Numbers.getValueOrComputedValue( + catchBatch.getBenthosTotalSortedWeight(), + catchBatch.getBenthosTotalSortedComputedWeight()); - surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel); + Float totalSampleSortedBenthosWeight = catchBatch.getBenthosTotalSampleSortedComputedWeight(); - gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport( - gearCaracteristicsModel); + Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight(); - operationExport = TuttiCsvUtil.newRepeatableExport( - operationModel); + //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée) + // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale) - parameterExport = TuttiCsvUtil.newRepeatableExport( - parameterModel); + Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight; - marineLitterExport = TuttiCsvUtil.newRepeatableExport( - marineLitterModel); + Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor); + Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor); - catchExport = TuttiCsvUtil.newRepeatableExport(catchModel); - accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel); - individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel); - speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel); - } - - @Override - public void close() throws IOException { - IOUtils.closeQuietly(surveyWriter); - IOUtils.closeQuietly(gearCaracteristicsWriter); - IOUtils.closeQuietly(operationWriter); - IOUtils.closeQuietly(parameterWriter); - IOUtils.closeQuietly(catchWriter); - IOUtils.closeQuietly(accidentalCatchWriter); - IOUtils.closeQuietly(marineLitterWriter); - IOUtils.closeQuietly(individualObservationWriter); - IOUtils.closeQuietly(speciesWriter); - } - - public String getCheckError() { - return checkError; - } - - public void setCheckError(String checkError) { - this.checkError = checkError; - } - - public void addSpecies(Species species) { - String speciesId = species.getId(); - if (!speciesToExport.containsKey(speciesId)) { - - // not treated species, add a new row - Species fullSpecies = speciesById.get(speciesId); - SpeciesExportRow row = new SpeciesExportRow(); - row.setSpecies(fullSpecies); - speciesToExport.put(speciesId, row); - // add the survey code (see http://forge.codelutin.com/issues/4799) - species.setSurveyCode(fullSpecies.getSurveyCode()); - } - } - - public List<SpeciesExportRow> getSpeciesToExport() { - List<SpeciesExportRow> result = - Lists.newArrayList(speciesToExport.values()); + if (log.isDebugEnabled()) { + String message = "\ncatchTotalWeight : " + totalWeight + + "\ncatchTotalUnsortedWeight : " + totalUnsortedWeight + + "\ntotalSampleSortedSpeciesWeight : " + totalSampleSortedSpeciesWeight + + "\ntotalSampleSortedBenthosWeight : " + totalSampleSortedBenthosWeight + + "\ntotalSortedWeight : " + totalSortedWeight + + "\ncatchRaisingFactor : " + catchRaisingFactor + + "\nspeciesCatchRaisingFactor : " + speciesCatchRaisingFactor + + "\nbenthosCatchRaisingFactor : " + benthosCatchRaisingFactor; + + log.debug(message); + } + + List<CatchExportRow> rows = Lists.newArrayList(); + exportContext.catchModel.prepareRows(persistenceService, + rows, + cruise, + operation, + rootSpeciesBatch, + rootBenthosBatch, + speciesCatchRaisingFactor, + benthosCatchRaisingFactor); + + exportContext.catchExport.write(rows, exportContext.catchWriter); - Collections.sort(result, new Comparator<SpeciesExportRow>() { - @Override - public int compare(SpeciesExportRow o1, SpeciesExportRow o2) { - return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()); - } - }); - return result; - } } - protected static class OperationContext { - - protected final FishingOperation operation; - - private final CatchBatch catchBatch; - - private BatchContainer<MarineLitterBatch> rootMarineLitterBatch; - - private BatchContainer<SpeciesBatch> rootSpeciesBatch; - - private BatchContainer<BenthosBatch> rootBenthosBatch; - - - protected boolean withCatchBatch; - - public OperationContext(FishingOperation operation, - PersistenceService persistenceService, - WeightComputingService weightComputingService) { - this.operation = operation; - - String operationId = operation.getId(); - - withCatchBatch = - persistenceService.isFishingOperationWithCatchBatch( - operationId); - - if (withCatchBatch) { - + protected void exportSpecies(GlobalExportContext exportContext, List<SpeciesExportRow> rows) { - // load batches - - catchBatch = - persistenceService.getCatchBatchFromFishingOperation( - operationId); - - boolean withError = false; - - try { - rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId); - } catch (Exception e) { - withError = true; - rootSpeciesBatch = - persistenceService.getRootSpeciesBatch(operationId, false); - } - - try { - rootBenthosBatch = - weightComputingService.getComputedBenthosBatches(operationId); - } catch (Exception e) { - withError = true; - rootBenthosBatch = - persistenceService.getRootBenthosBatch(operationId, false); - } - - try { - rootMarineLitterBatch = - weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight()); - } catch (Exception e) { - withError = true; - rootMarineLitterBatch = - persistenceService.getRootMarineLitterBatch(operationId); - } - - // apply compute weights - - if (!withError) { - weightComputingService.computeCatchBatchWeights( - catchBatch, - rootSpeciesBatch, - rootBenthosBatch, - rootMarineLitterBatch); - } - } else { - if (log.isWarnEnabled()) { - log.warn("Skip fishing operation " + operationId + - " since no catchBatch associated."); - } - catchBatch = null; - rootSpeciesBatch = null; - rootBenthosBatch = null; - rootMarineLitterBatch = null; - } - - } - - public CatchBatch getCatchBatch() { - return catchBatch; - } - - public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch() { - return rootMarineLitterBatch; - } - - public BatchContainer<SpeciesBatch> getRootSpeciesBatch() { - return rootSpeciesBatch; - } + try { - public BatchContainer<BenthosBatch> getRootBenthosBatch() { - return rootBenthosBatch; - } + exportContext.speciesExport.write(rows, exportContext.speciesWriter); - public boolean isWithCatchBatch() { - return withCatchBatch; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.export.species.error"), e); } } - protected Map<String, OperationContext> operationContexts = Maps.newTreeMap(); + protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); + + protected OperationExportContext getOperationContext(FishingOperation operation) { - protected OperationContext getOperationContext(FishingOperation operation) { String operationId = operation.getId(); - OperationContext result = operationContexts.get(operationId); + OperationExportContext result = operationContexts.get(operationId); if (result == null) { // create it - result = new OperationContext(operation, - persistenceService, - weightComputingService); + result = new OperationExportContext(operation, persistenceService, weightComputingService); operationContexts.put(operationId, result); } return result; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportModel.java index 8e38e75..d70bd9e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportRow.java index 0cc97bb..49d1ae9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportModel.java index 2e2719f..26b6aa9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportRow.java index 60143d2..4581879 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java index abce5b0..88862e3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportModel.java index 2ce45a8..5532159 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportRow.java index fc2023c..8ac6ad7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportModel.java index 5d225c8..bc74240 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportRow.java index 31459d9..cb2123f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportModel.java index f6c3c18..5ebea80 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportRow.java index 63fbf07..8c720fd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportModel.java index 74d5e2c..f3ab656 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportRow.java index 8396cc6..ced47dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportModel.java index f6c83f8..c5238f1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportRow.java index 858991e..348e3f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java similarity index 89% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java index 6aede07..5126def 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L @@ -27,6 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.export.generic.GlobalExportContext; import java.util.List; @@ -46,7 +47,7 @@ public class SpeciesExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<Sp newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE); } - public void prepareBatchRows(TuttiExportService.ExportContext exportContext, + public void prepareBatchRows(GlobalExportContext exportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch, BatchContainer<BenthosBatch> rootBenthosBatch) { @@ -59,14 +60,14 @@ public class SpeciesExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<Sp } } - public void prepareIndividualRows(TuttiExportService.ExportContext exportContext, + public void prepareIndividualRows(GlobalExportContext exportContext, List<IndividualObservationExportRow> rows) { for (IndividualObservationExportRow row : rows) { exportContext.addSpecies(row.getSpecies()); } } - public void prepareAccidentalRows(TuttiExportService.ExportContext exportContext, + public void prepareAccidentalRows(GlobalExportContext exportContext, List<AccidentalCatchExportRow> rows) { for (AccidentalCatchExportRow row : rows) { exportContext.addSpecies(row.getSpecies()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java similarity index 96% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java index dbd587e..b46d331 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportModel.java index 9b82aa4..a2c7d5b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportRow.java index 7b472f1..fbe996d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 9ff4adc0d7b40ea7cc538ccffd2287a130849a2a Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:29:32 2015 +0100 suppression d'un service obsolete --- .../referential/ReferentialImportService.java | 752 --------------------- 1 file changed, 752 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java deleted file mode 100644 index eca768f..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java +++ /dev/null @@ -1,752 +0,0 @@ -package fr.ifremer.tutti.service.referential; - -/* - * #%L - * Tutti :: Service - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Charsets; -import com.google.common.base.Function; -import com.google.common.collect.Lists; -import com.google.common.io.Files; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import fr.ifremer.tutti.service.AbstractTuttiService; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; -import org.nuiton.jaxx.application.ApplicationTechnicalException; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.IOException; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * Service to import temporary referential. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class ReferentialImportService extends AbstractTuttiService { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(ReferentialImportService.class); - - protected PersistenceService persistenceService; - - @Override - public void setServiceContext(TuttiServiceContext context) { - super.setServiceContext(context); - persistenceService = getService(PersistenceService.class); - } - -// public ReferentialImportResult<Species> importTemporarySpecies(File file) throws IOException { -// -// ReferentialImportResult<Species> result = new ReferentialImportResult<>(); -// -// if (log.isInfoEnabled()) { -// log.info("Will import species from file: " + file); -// } -// -// List<Species> allSpecies = persistenceService.getAllSpecies(); -// -// // get all species names -// Set<String> existingSpeciesNames = Sets.newHashSet(Iterables.transform(allSpecies, new Function<Species, String>() { -// @Override -// public String apply(Species input) { -// return input.getName(); -// } -// })); -// Map<Integer, Species> existingSpeciesById = TuttiEntities.splitByIdAsInt(allSpecies); -// Set<Integer> existingSpeciesIds = new HashSet<>(existingSpeciesById.keySet()); -// -// List<Species> toAdd = Lists.newArrayList(); -// List<Species> toUpdate = Lists.newArrayList(); -// List<Integer> toDelete = Lists.newArrayList(); -// -// Reader reader = Files.newReader(file, Charsets.UTF_8); -// SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); -// try { -// Import<SpeciesRow> importer = Import.newImport(csvModel, reader); -// -// try { -// -// for (SpeciesRow bean : importer) { -// -// Integer id = bean.getIdAsInt(); -// String name = bean.getName(); -// Species species = existingSpeciesById.get(id); -// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); -// -// if (id != null && existingSpeciesIds.add(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.species.notExistingId.error", id)); -// } -// if (StringUtils.isBlank(name)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.species.noName.error", id)); -// } -// if (!delete && !existingSpeciesNames.add(name) && -// (id == null || species != null && !species.getName().equals(name))) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.species.existingName.error", name)); -// } -// -// if (delete) { -// if (id == null) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); -// } -// if (persistenceService.isTemporarySpeciesUsed(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.species.used.error", id)); -// } -// toDelete.add(species.getReferenceTaxonId()); -// existingSpeciesNames.remove(name); -// -// } else { -// if (bean.getId() == null) { -// toAdd.add(bean); -// -// } else { -// bean.setReferenceTaxonId(species.getReferenceTaxonId()); -// toUpdate.add(bean); -// } -// } -// } -// importer.close(); -// -// } finally { -// IOUtils.closeQuietly(importer); -// } -// reader.close(); -// -// } catch (IOException e) { -// throw new IOException(t("tutti.service.referential.import.species.error", file), e); -// -// } catch (ImportRuntimeException e) { -// String message; -// if (e.getCause() != null) { -// message = e.getCause().getMessage(); -// } else { -// message = e.getMessage(); -// } -// throw new ApplicationTechnicalException(message, e); -// -// } finally { -// -// IOUtils.closeQuietly(reader); -// } -// -// persistenceService.deleteTemporarySpecies(toDelete, true); -// result.setNbRefDeleted(toDelete.size()); -// -// result.addAllRefsAdded(persistenceService.importTemporarySpecies(toAdd)); -// result.addAllRefsUpdated(persistenceService.importTemporarySpecies(toUpdate)); -// -// return result; -// } -// -// public ReferentialImportResult<Vessel> importTemporaryVessel(File file) throws IOException { -// -// ReferentialImportResult<Vessel> result = new ReferentialImportResult<>(); -// -// if (log.isInfoEnabled()) { -// log.info("Will import vessels from file: " + file); -// } -// -// // get all vessels -// List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllFishingVessel()); -// existingVessels.addAll(persistenceService.getAllScientificVessel()); -// -// Set<String> existingVesselInternationalRegistrationCodes = -// Sets.newHashSet(Iterables.transform(existingVessels, new Function<Vessel, String>() { -// @Override -// public String apply(Vessel input) { -// return input.getInternationalRegistrationCode(); -// } -// })); -// Map<String, Vessel> existingVesselsById = TuttiEntities.splitById(existingVessels); -// Set<String> existingVesselIds = new HashSet<>(existingVesselsById.keySet()); -// -// List<Vessel> toAdd = Lists.newArrayList(); -// List<Vessel> toUpdate = Lists.newArrayList(); -// List<String> toDelete = Lists.newArrayList(); -// -// Reader reader = Files.newReader(file, Charsets.UTF_8); -// VesselModel csvModel = new VesselModel(getCsvSeparator()); -// try { -// Import<VesselRow> importer = Import.newImport(csvModel, reader); -// -// try { -// -// for (final VesselRow bean : importer) { -// -// String id = StringUtils.trimToNull(bean.getId()); -// String internationalRegistrationCode = bean.getInternationalRegistrationCode(); -// Vessel vessel = existingVesselsById.get(id); -// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); -// -// if (id != null && existingVesselIds.add(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); -// } -// if (StringUtils.isBlank(internationalRegistrationCode)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noInternationalRegistrationCode.error", id)); -// } -// if (!delete && !existingVesselInternationalRegistrationCodes.add(internationalRegistrationCode) && -// (id == null || vessel != null && !vessel.getRegistrationCode().equals(internationalRegistrationCode))) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error", -// internationalRegistrationCode)); -// } -// -// if (delete) { -// if (id == null) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); -// } -// if (persistenceService.isTemporaryVesselUsed(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.used.error", id)); -// } -// toDelete.add(id); -// existingVesselInternationalRegistrationCodes.remove(internationalRegistrationCode); -// -// } else { -// if (id == null) { -// toAdd.add(bean); -// -// } else { -// toUpdate.add(bean); -// } -// } -// } -// importer.close(); -// -// } finally { -// IOUtils.closeQuietly(importer); -// } -// reader.close(); -// -// } catch (IOException e) { -// throw new IOException(t("tutti.service.referential.import.vessels.error", file), e); -// -// } catch (ImportRuntimeException e) { -// String message; -// if (e.getCause() != null) { -// message = e.getCause().getMessage(); -// } else { -// message = e.getMessage(); -// } -// throw new ApplicationTechnicalException(message, e); -// -// } finally { -// -// IOUtils.closeQuietly(reader); -// } -// -// persistenceService.deleteTemporaryVessels(toDelete, true); -// result.setNbRefDeleted(toDelete.size()); -// -// result.addAllRefsAdded(persistenceService.importTemporaryVessel(toAdd)); -// result.addAllRefsUpdated(persistenceService.importTemporaryVessel(toUpdate)); -// -// return result; -// } -// -// public ReferentialImportResult<Person> importTemporaryPerson(File file) throws IOException { -// -// ReferentialImportResult<Person> result = new ReferentialImportResult<>(); -// -// if (log.isInfoEnabled()) { -// log.info("Will import persons from file: " + file); -// } -// -// List<Person> allPersons = persistenceService.getAllPerson(); -// -// // get all species names -// Set<String> existingPersonFullNames = Sets.newHashSet(Iterables.transform(allPersons, new Function<Person, String>() { -// @Override -// public String apply(Person input) { -// return getPersonFullName(input); -// } -// })); -// Map<Integer, Person> existingPersonsById = TuttiEntities.splitByIdAsInt(allPersons); -// -// Set<Integer> existingPersonIds = new HashSet<>(existingPersonsById.keySet()); -// -// List<Person> toAdd = Lists.newArrayList(); -// List<Person> toUpdate = Lists.newArrayList(); -// List<Integer> toDelete = Lists.newArrayList(); -// -// Reader reader = Files.newReader(file, Charsets.UTF_8); -// PersonModel csvModel = new PersonModel(getCsvSeparator()); -// try { -// Import<PersonRow> importer = Import.newImport(csvModel, reader); -// -// try { -// -// for (PersonRow bean : importer) { -// -// Integer id = bean.getIdAsInt(); -// Person person = existingPersonsById.get(id); -// String name = getPersonFullName(bean); -// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); -// -// if (id != null && existingPersonIds.add(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.person.notExistingId.error", id)); -// } -// if (StringUtils.isBlank(name)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.person.noName.error", id)); -// } -// if (!delete && !existingPersonFullNames.add(name) && -// (id == null || person != null && !person.getName().equals(name))) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.person.existingName.error", name)); -// } -// -// if (delete) { -// if (id == null) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); -// } -// if (persistenceService.isTemporaryPersonUsed(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.person.used.error", id)); -// } -// toDelete.add(id); -// existingPersonFullNames.remove(name); -// -// } else { -// if (bean.getId() == null) { -// toAdd.add(bean); -// -// } else { -// toUpdate.add(bean); -// } -// } -// } -// importer.close(); -// -// } finally { -// IOUtils.closeQuietly(importer); -// } -// reader.close(); -// -// } catch (IOException e) { -// throw new IOException(t("tutti.service.referential.import.persons.error", file), e); -// -// } catch (ImportRuntimeException e) { -// String message; -// if (e.getCause() != null) { -// message = e.getCause().getMessage(); -// } else { -// message = e.getMessage(); -// } -// throw new ApplicationTechnicalException(message, e); -// -// } finally { -// -// IOUtils.closeQuietly(reader); -// } -// -// persistenceService.deleteTemporaryPersons(toDelete, true); -// result.setNbRefDeleted(toDelete.size()); -// -// result.addAllRefsAdded(persistenceService.importTemporaryPerson(toAdd)); -// result.addAllRefsUpdated(persistenceService.importTemporaryPerson(toUpdate)); -// -// return result; -// } -// -// protected String getPersonFullName(Person person) { -// return StringUtils.lowerCase( -// StringUtils.trimToEmpty(person.getFirstName()) + -// StringUtils.trimToEmpty(person.getLastName())); -// } -// -// public ReferentialImportResult<Gear> importTemporaryGear(File file) throws IOException { -// -// ReferentialImportResult<Gear> result = new ReferentialImportResult<>(); -// -// if (log.isInfoEnabled()) { -// log.info("Will import gears from file: " + file); -// } -// -// // get all vessel names -// List<Gear> allGears = new ArrayList<>(persistenceService.getAllFishingGear()); -// allGears.addAll(persistenceService.getAllScientificGear()); -// -// Set<String> existingGearNames = Sets.newHashSet(Iterables.transform(allGears, new Function<Gear, String>() { -// @Override -// public String apply(Gear input) { -// return input.getName(); -// } -// })); -// -// Map<Integer, Gear> existingGearsById = TuttiEntities.splitByIdAsInt(allGears); -// Set<Integer> existingGearIds = new HashSet<>(existingGearsById.keySet()); -// -// List<Gear> toAdd = Lists.newArrayList(); -// List<Gear> toUpdate = Lists.newArrayList(); -// List<Integer> toDelete = Lists.newArrayList(); -// -// Reader reader = Files.newReader(file, Charsets.UTF_8); -// GearModel csvModel = new GearModel(getCsvSeparator()); -// try { -// Import<GearRow> importer = Import.newImport(csvModel, reader); -// -// try { -// -// for (GearRow bean : importer) { -// -// Integer id = bean.getIdAsInt(); -// Gear gear = existingGearsById.get(id); -// String name = bean.getName(); -// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); -// -// if (id != null && existingGearIds.add(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.notExistingId.error", id)); -// } -// if (StringUtils.isBlank(name)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.noName.error", id)); -// } -// if (!delete && !existingGearNames.add(name) && -// (id == null || gear != null && !gear.getName().equals(name))) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.existingName.error", name)); -// } -// -// if (delete) { -// if (id == null) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); -// } -// if (persistenceService.isTemporaryGearUsed(id)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.used.error", id)); -// } -// toDelete.add(id); -// existingGearNames.remove(name); -// -// } else { -// if (bean.getId() == null) { -// toAdd.add(bean); -// -// } else { -// toUpdate.add(bean); -// } -// } -// } -// importer.close(); -// -// } finally { -// IOUtils.closeQuietly(importer); -// } -// reader.close(); -// -// } catch (IOException e) { -// throw new IOException(t("tutti.service.referential.import.gears.error", file), e); -// -// } catch (ImportRuntimeException e) { -// String message; -// if (e.getCause() != null) { -// message = e.getCause().getMessage(); -// } else { -// message = e.getMessage(); -// } -// throw new ApplicationTechnicalException(message, e); -// -// } finally { -// -// IOUtils.closeQuietly(reader); -// } -// -// persistenceService.deleteTemporaryGears(toDelete, true); -// result.setNbRefDeleted(toDelete.size()); -// -// result.addAllRefsAdded(persistenceService.importTemporaryGear(toAdd)); -// result.addAllRefsUpdated(persistenceService.importTemporaryGear(toUpdate)); -// -// return result; -// } - - public void exportExistingTemporarySpecies(File file) throws IOException { - - List<Species> targetList = Lists.newArrayList(persistenceService.getAllReferentSpecies()); - - List<Species> toExport = persistenceService.retainTemporarySpeciesList(targetList); - - exportTemporarySpecies(file, toExport); - - } - - public void exportTemporarySpeciesExample(File file) throws IOException { - - List<Species> toExport = Lists.newArrayList(); - - Species s; - - s = Speciess.newSpecies(); - s.setName("Temporary Species name 1"); - toExport.add(s); - - s = Speciess.newSpecies(); - s.setName("Temporary Species name 2"); - toExport.add(s); - - s = Speciess.newSpecies(); - s.setName("Temporary Species name 3"); - toExport.add(s); - - exportTemporarySpecies(file, toExport); - - } - - protected void exportTemporarySpecies(File file, List<Species> toExport) throws IOException { - - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<SpeciesRow> toExportRows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { - @Override - public SpeciesRow apply(Species species) { - return new SpeciesRow(species); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.species.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - - } - - public void exportExistingTemporaryVessel(File file) throws IOException { - - List<Vessel> targetList = Lists.newArrayList(persistenceService.getAllFishingVessel()); - targetList.addAll(persistenceService.getAllScientificVessel()); - - List<Vessel> toExport = persistenceService.retainTemporaryVesselList(targetList); - - exportTemporaryVessel(file, toExport); - - } - - public void exportTemporaryVesselExample(File file) throws IOException { - - List<Vessel> toExport = Lists.newArrayList(); - - Vessel v; - - v = Vessels.newVessel(); - v.setName("Temporary fishing vessel name 1"); - v.setInternationalRegistrationCode("International registration code F1"); - v.setScientificVessel(false); - toExport.add(v); - - v = Vessels.newVessel(); - v.setName("Temporary fishing vessel name 2"); - v.setInternationalRegistrationCode("International registration code F2"); - v.setScientificVessel(false); - toExport.add(v); - - v = Vessels.newVessel(); - v.setName("Temporary scientific vessel name 3"); - v.setInternationalRegistrationCode("International registration code S3"); - v.setScientificVessel(true); - toExport.add(v); - - v = Vessels.newVessel(); - v.setName("Temporary scientific vessel name 4"); - v.setInternationalRegistrationCode("International registration code S4"); - v.setScientificVessel(true); - toExport.add(v); - - exportTemporaryVessel(file, toExport); - - } - - protected void exportTemporaryVessel(File file, List<Vessel> toExport) throws IOException { - - VesselModel csvModel = new VesselModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<VesselRow> toExportRows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { - @Override - public VesselRow apply(Vessel vessel) { - return new VesselRow(vessel); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.vessel.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - - public void exportExistingTemporaryPerson(File file) throws IOException { - - List<Person> targetList = Lists.newArrayList(persistenceService.getAllPerson()); - - List<Person> toExport = persistenceService.retainTemporaryPersonList(targetList); - - exportTemporaryPerson(file, toExport); - - } - - public void exportTemporaryPersonExample(File file) throws IOException { - - List<Person> toExport = Lists.newArrayList(); - - Person p; - - p = Persons.newPerson(); - p.setFirstName("First name 1"); - p.setLastName("Last name 1"); - toExport.add(p); - - p = Persons.newPerson(); - p.setFirstName("First name 2"); - p.setLastName("Last name 2"); - toExport.add(p); - - p = Persons.newPerson(); - p.setFirstName("First name 3"); - p.setLastName("Last name 3"); - toExport.add(p); - - exportTemporaryPerson(file, toExport); - - } - - protected void exportTemporaryPerson(File file, List<Person> toExport) throws IOException { - - PersonModel csvModel = new PersonModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<PersonRow> toExportRows = Lists.transform(toExport, new Function<Person, PersonRow>() { - @Override - public PersonRow apply(Person person) { - return new PersonRow(person); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.person.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - - public void exportExistingTemporaryGear(File file) throws IOException { - - List<Gear> targetList = Lists.newArrayList(persistenceService.getAllFishingGear()); - targetList.addAll(persistenceService.getAllScientificGear()); - - List<Gear> toExport = persistenceService.retainTemporaryGearList(targetList); - - exportTemporaryGear(file, toExport); - - } - - public void exportTemporaryGearExample(File file) throws IOException { - List<Gear> toExport = Lists.newArrayList(); - - Gear g; - - g = Gears.newGear(); - g.setName("Gear fishing name 1"); - g.setLabel("Gear fishing label 1"); - toExport.add(g); - - g = Gears.newGear(); - g.setName("Gear fishing name 2"); - g.setLabel("Gear fishing label 2"); - toExport.add(g); - - g = Gears.newGear(); - g.setName("Gear scientific name 3"); - g.setLabel("Gear scientific label 3"); - g.setScientificGear(true); - toExport.add(g); - - g = Gears.newGear(); - g.setName("Gear scientific name 4"); - g.setLabel("Gear scientific label 4"); - g.setScientificGear(true); - toExport.add(g); - - exportTemporaryGear(file, toExport); - - } - - protected void exportTemporaryGear(File file, List<Gear> toExport) throws IOException { - - GearModel csvModel = new GearModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<GearRow> toExportRows = Lists.transform(toExport, new Function<Gear, GearRow>() { - @Override - public GearRow apply(Gear gear) { - return new GearRow(gear); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.gear.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - - protected char getCsvSeparator() { - return context.getConfig().getCsvSeparator(); - } -} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 679c8148204f5ff850059f4456eeb48277df2de8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 18:48:12 2015 +0100 introduce csv package + clean code --- .../service/referential/ReferentialTemporaryGearService.java | 10 +++------- .../referential/ReferentialTemporaryPersonService.java | 12 +++++------- .../referential/ReferentialTemporarySpeciesService.java | 12 +++++------- .../referential/ReferentialTemporaryVesselService.java | 12 +++++------- .../tutti/service/referential/{ => csv}/GearModel.java | 2 +- .../ifremer/tutti/service/referential/{ => csv}/GearRow.java | 2 +- .../tutti/service/referential/{ => csv}/PersonModel.java | 2 +- .../tutti/service/referential/{ => csv}/PersonRow.java | 2 +- .../tutti/service/referential/{ => csv}/SpeciesModel.java | 2 +- .../tutti/service/referential/{ => csv}/SpeciesRow.java | 2 +- .../{ => csv}/TemporaryReferentialEntityIdParser.java | 2 +- .../tutti/service/referential/{ => csv}/VesselModel.java | 2 +- .../tutti/service/referential/{ => csv}/VesselRow.java | 2 +- 13 files changed, 27 insertions(+), 37 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index d01ac79..f61d3cd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -35,7 +35,8 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; +import fr.ifremer.tutti.service.referential.csv.GearModel; +import fr.ifremer.tutti.service.referential.csv.GearRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -177,8 +178,6 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { GearModel csvModel = new GearModel(getCsvSeparator()); - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - List<GearRow> toExportRows = Lists.transform(toExport, new Function<Gear, GearRow>() { @Override public GearRow apply(Gear gear) { @@ -186,16 +185,13 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } }); - try { + try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { Export export = Export.newExport(csvModel, toExportRows); export.write(writer); - writer.close(); } catch (IOException e) { throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.gear.error", file), e); - } finally { - IOUtils.closeQuietly(writer); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index ddea706..9f20a1d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -35,7 +35,8 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; +import fr.ifremer.tutti.service.referential.csv.PersonModel; +import fr.ifremer.tutti.service.referential.csv.PersonRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -170,8 +171,6 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { PersonModel csvModel = new PersonModel(getCsvSeparator()); - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - List<PersonRow> toExportRows = Lists.transform(toExport, new Function<Person, PersonRow>() { @Override public PersonRow apply(Person person) { @@ -179,16 +178,15 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } }); - try { + try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + Export export = Export.newExport(csvModel, toExportRows); export.write(writer); - writer.close(); + } catch (IOException e) { throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.person.error", file), e); - } finally { - IOUtils.closeQuietly(writer); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index fdffb63..663b3f0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -35,7 +35,8 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; +import fr.ifremer.tutti.service.referential.csv.SpeciesModel; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -167,8 +168,6 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - List<SpeciesRow> toExportRows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { @Override public SpeciesRow apply(Species species) { @@ -176,16 +175,15 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { } }); - try { + try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + Export export = Export.newExport(csvModel, toExportRows); export.write(writer); - writer.close(); + } catch (IOException e) { throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.species.error", file), e); - } finally { - IOUtils.closeQuietly(writer); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index ba17c75..c1ac62d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -35,7 +35,8 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; +import fr.ifremer.tutti.service.referential.csv.VesselModel; +import fr.ifremer.tutti.service.referential.csv.VesselRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -186,8 +187,6 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { VesselModel csvModel = new VesselModel(getCsvSeparator()); - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - List<VesselRow> toExportRows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { @Override public VesselRow apply(Vessel vessel) { @@ -195,16 +194,15 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } }); - try { + try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + Export export = Export.newExport(csvModel, toExportRows); export.write(writer); - writer.close(); + } catch (IOException e) { throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.vessel.error", file), e); - } finally { - IOUtils.closeQuietly(writer); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java index 1025ca6..adcf8d9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearRow.java index 0a709bc..0d38b17 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java index 2e134f9..1f67b75 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java index 8326aa7..d6fcfcd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java index 19c395e..767ada4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesRow.java index ffd1511..88aef6a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TemporaryReferentialEntityIdParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TemporaryReferentialEntityIdParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java index bd56488..2825792 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TemporaryReferentialEntityIdParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java index 0faac49..d0630f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselRow.java index e6d6908..1a7be92 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.referential; +package fr.ifremer.tutti.service.referential.csv; /* * #%L -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 427c9fe38f45da69c98aca7e918aeb51ec29d775 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 19:37:29 2015 +0100 - introduce CsvProducer API - use it also for referential export - move TuttiCsvUtil to his new csv package --- .../AbstractFishingOperationRowModel.java | 2 +- .../catches/multipost/AccidentalCatchRowModel.java | 2 +- .../catches/multipost/CaracteristicRowModel.java | 2 +- .../catches/multipost/CatchBatchRowModel.java | 2 +- .../catches/multipost/CatchFrequencyRowModel.java | 2 +- .../service/catches/multipost/CatchRowModel.java | 2 +- .../catches/multipost/CatchWeightsRowModel.java | 2 +- .../multipost/IndividualObservationRowModel.java | 2 +- .../catches/multipost/MarineLitterRowModel.java | 2 +- .../multipost/MarineLitterWeightRowModel.java | 2 +- .../service/csv/AbstractTuttiExportModel.java | 3 +- .../csv/AbstractTuttiImportExportModel.java | 3 +- .../service/csv/AbstractTuttiImportModel.java | 2 +- .../tutti/service/csv/BeanIndexNullableGetter.java | 2 +- .../tutti/service/csv/BeanNullableGetter.java | 2 +- .../tutti/service/csv/BeanPropertyFormatter.java | 2 +- .../service/csv/CaracteristicValueFormatter.java | 2 +- .../fr/ifremer/tutti/service/csv/CsvProducer.java | 58 +++++ .../service/csv/DecoratorPropertyFormatter.java | 2 +- .../service/csv/EnumByNameParserFormatter.java | 2 +- .../tutti/service/csv/ListGearFormatter.java | 2 +- .../tutti/service/csv/ListIntegerFormatter.java | 2 +- .../tutti/service/csv/ListPersonFormatter.java | 2 +- .../tutti/service/csv/ListVesselFormatter.java | 2 +- .../tutti/service/csv/StringParserFormatter.java | 2 +- .../tutti/service/{ => csv}/TuttiCsvUtil.java | 2 +- .../tutti/service/csv/TuttiRepeatableExport.java | 2 +- .../ifremer/tutti/service/csv/VesselFormatter.java | 2 +- .../export/generic/GlobalExportContext.java | 265 -------------------- .../service/export/sumatra/CatchRowModel.java | 2 +- .../GenericFormatExportService.java} | 268 ++++++++++----------- .../service/genericformat/GlobalExportContext.java | 240 ++++++++++++++++++ .../GlobalImportContext.java | 6 +- .../OperationExportContext.java | 2 +- .../csv/AccidentalCatchModel.java | 98 +------- .../csv/AccidentalCatchRow.java | 2 +- .../service/genericformat/csv/CatchModel.java | 169 +++++++++++++ .../generic => genericformat}/csv/CatchRow.java | 2 +- .../csv/ExportSampleCategory.java | 2 +- .../csv/GearCaracteristicModel.java | 33 +-- .../csv/GearCaracteristicRow.java | 2 +- .../csv/IndividualObservationModel.java | 84 +------ .../csv/IndividualObservationRow.java | 2 +- .../csv/MarineLitterModel.java | 33 +-- .../csv/MarineLitterRow.java | 2 +- .../csv/OperationModel.java | 19 +- .../csv/OperationRow.java | 2 +- .../csv/ParameterModel.java | 45 +--- .../csv/ParameterRow.java | 2 +- .../csv/SpeciesExportModel.java | 55 +---- .../csv/SpeciesExportRow.java | 2 +- .../generic => genericformat}/csv/SurveyModel.java | 15 +- .../generic => genericformat}/csv/SurveyRow.java | 2 +- .../producer/CsvProducerForAccidentalCatch.java | 115 +++++++++ .../producer/CsvProducerForCatch.java} | 171 ++----------- .../producer/CsvProducerForGearCaracteristics.java | 50 ++++ .../CsvProducerForIndividualObservation.java | 100 ++++++++ .../producer/CsvProducerForMarineLitter.java | 49 ++++ .../producer/CsvProducerForOperation.java | 35 +++ .../producer/CsvProducerForParameter.java | 62 +++++ .../producer/CsvProducerForSpecies.java | 97 ++++++++ .../producer/CsvProducerForSurvey.java | 32 +++ .../operationimport/ImportFromColumnFileModel.java | 2 +- .../service/protocol/CaracteristicRowModel.java | 2 +- .../tutti/service/protocol/SpeciesRowModel.java | 2 +- .../service/pupitri/csv/CarrouselRowModel.java | 2 +- .../tutti/service/pupitri/csv/TrunkRowModel.java | 2 +- .../ReferentialTemporaryGearService.java | 22 +- .../ReferentialTemporaryPersonService.java | 24 +- .../ReferentialTemporarySpeciesService.java | 23 +- .../ReferentialTemporaryVesselService.java | 25 +- .../tutti/service/referential/csv/GearModel.java | 36 ++- .../tutti/service/referential/csv/PersonModel.java | 36 ++- .../service/referential/csv/SpeciesModel.java | 36 ++- .../tutti/service/referential/csv/VesselModel.java | 36 ++- .../producer/CsvProducerForTemporaryGear.java | 38 +++ .../producer/CsvProducerForTemporaryPerson.java | 38 +++ .../producer/CsvProducerForTemporarySpecies.java | 38 +++ .../producer/CsvProducerForTemporaryVessel.java | 38 +++ .../tutti/service/report/ReportService.java | 4 +- .../GenericFormatExportService2Test.java} | 8 +- .../GenericFormatExportServiceAno5804Test.java} | 8 +- .../GenericFormatExportServiceTest.java} | 14 +- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 6 +- .../tutti/ui/swing/action/ExportCruiseAction.java | 4 +- .../tutti/ui/swing/action/ExportProgramAction.java | 4 +- .../GearCaracteristicListCellRenderer.java | 2 +- 87 files changed, 1536 insertions(+), 1093 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java index ad7b73b..1897dd4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; /** diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java index 85f4704..c15f738 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java index b849953..4b90e05 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java index c8f4e00..503ac9e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * Created on 11/15/14. diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java index 2039484..3331f48 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java index 54e1594..9014d90 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java index a120648..569739a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * @author kmorin <kmorin@codelutin.com> diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java index e6a1773..ff35722 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java index d42c79a..628230d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java index 0a6e41b..64ff121 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * @author kmorin <kmorin@codelutin.com> diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java index eab7599..ac3febb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java @@ -1,6 +1,5 @@ package fr.ifremer.tutti.service.csv; -import fr.ifremer.tutti.service.TuttiCsvUtil; import org.nuiton.csv.ExportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ext.AbstractExportModel; @@ -10,7 +9,7 @@ import org.nuiton.decorator.Decorator; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public abstract class AbstractTuttiExportModel<M> extends AbstractExportModel<M> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 75a7ae2..f915145 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -5,7 +5,6 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.TuttiEntity; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.TuttiCsvUtil; import org.nuiton.csv.ExportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ext.AbstractImportExportModel; @@ -18,7 +17,7 @@ import java.util.Map; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java index 19093f9..9a6f4ff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java @@ -9,7 +9,7 @@ import java.util.Map; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java index d51b573..c665a86 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java @@ -11,7 +11,7 @@ import java.util.Collection; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class BeanIndexNullableGetter<E, T> implements ValueGetter<E, T> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java index f06d10f..25048eb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java @@ -10,7 +10,7 @@ import java.lang.reflect.InvocationTargetException; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class BeanNullableGetter<E, T> implements ValueGetter<E, T> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java index 2824fe0..30620c6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java @@ -10,7 +10,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class BeanPropertyFormatter<E> implements ValueFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java index 6ba8f5f..5ff567a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java @@ -11,7 +11,7 @@ import java.io.Serializable; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class CaracteristicValueFormatter implements ValueFormatter<Serializable> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java new file mode 100644 index 0000000..a1dbdc4 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import org.apache.commons.io.IOUtils; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.Closeable; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O>> implements Closeable { + + private final BufferedWriter writer; + + private final TuttiRepeatableExport<O> export; + + public CsvProducer(File file, M model) { + + try { + this.writer = Files.newWriter(file, Charsets.UTF_8); + } catch (FileNotFoundException e) { + // should never happen + throw new ApplicationTechnicalException("file not found " + file, e); + } + + this.export = TuttiCsvUtil.newRepeatableExport(model); + + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(writer); + } + + public void write(O row) throws Exception { + + List<O> rows = new ArrayList<>(); + rows.add(row); + write(rows); + + } + + public void write(List<O> rows) throws Exception { + export.write(rows, writer); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java index b290585..536cf39 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java @@ -10,7 +10,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class DecoratorPropertyFormatter<E> implements ValueFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java index d8d2513..d30d11a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java @@ -11,7 +11,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class EnumByNameParserFormatter<E extends Enum<E>> implements ValueParserFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java index cec4f1f..5194ca5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java @@ -12,7 +12,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListGearFormatter implements ValueFormatter<List<Gear>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java index a915cf5..4b374d5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java @@ -13,7 +13,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListIntegerFormatter implements ValueParserFormatter<List<Integer>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java index ce6f749..bc3df5d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java @@ -12,7 +12,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListPersonFormatter implements ValueFormatter<List<Person>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java index e5ad93c..ce3f2ef 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java @@ -13,7 +13,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListVesselFormatter implements ValueFormatter<List<Vessel>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java index f3aae34..785654c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java @@ -6,7 +6,7 @@ import org.nuiton.csv.Common; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class StringParserFormatter extends Common.NullableParserFormatter<String> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 4b472f2..9e16ce2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service; +package fr.ifremer.tutti.service.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java index 6431400..e273d4b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java @@ -10,7 +10,7 @@ import java.util.Collections; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class TuttiRepeatableExport<E> extends RepeatableExport<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java index a355239..f88f19f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java @@ -7,7 +7,7 @@ import org.nuiton.csv.ValueFormatter; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class VesselFormatter implements ValueFormatter<Vessel> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java deleted file mode 100644 index 1b92764..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java +++ /dev/null @@ -1,265 +0,0 @@ -package fr.ifremer.tutti.service.export.generic; - -import com.google.common.base.Charsets; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.io.Files; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; -import fr.ifremer.tutti.service.csv.TuttiRepeatableExport; -import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchModel; -import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchRow; -import fr.ifremer.tutti.service.export.generic.csv.CatchModel; -import fr.ifremer.tutti.service.export.generic.csv.CatchRow; -import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicModel; -import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicRow; -import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationModel; -import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationRow; -import fr.ifremer.tutti.service.export.generic.csv.MarineLitterModel; -import fr.ifremer.tutti.service.export.generic.csv.MarineLitterRow; -import fr.ifremer.tutti.service.export.generic.csv.OperationModel; -import fr.ifremer.tutti.service.export.generic.csv.OperationRow; -import fr.ifremer.tutti.service.export.generic.csv.ParameterModel; -import fr.ifremer.tutti.service.export.generic.csv.ParameterRow; -import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportModel; -import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; -import fr.ifremer.tutti.service.export.generic.csv.SurveyModel; -import fr.ifremer.tutti.service.export.generic.csv.SurveyRow; -import org.apache.commons.io.IOUtils; -import org.nuiton.jaxx.application.ApplicationTechnicalException; - -import java.io.BufferedWriter; -import java.io.Closeable; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Map; - -import static org.nuiton.i18n.I18n.t; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GlobalExportContext implements Closeable { - - File protocolFile; - - File temporaryGearFile; - - File temporaryPersonFile; - - File temporarySpeciesFile; - - File temporaryVesselFile; - - File surveyFile; - - File gearCaracteristicsFile; - - File operationFile; - - File parameterFile; - - File marineLitterFile; - - File individualObservationFile; - - File catchFile; - - File accidentalCatchFile; - - File speciesFile; - - BufferedWriter surveyWriter; - - BufferedWriter gearCaracteristicsWriter; - - BufferedWriter operationWriter; - - BufferedWriter parameterWriter; - - BufferedWriter marineLitterWriter; - - BufferedWriter catchWriter; - - BufferedWriter accidentalCatchWriter; - - BufferedWriter individualObservationWriter; - - BufferedWriter speciesWriter; - - SurveyModel surveyModel; - - GearCaracteristicModel gearCaracteristicsModel; - - OperationModel operationModel; - - MarineLitterModel marineLitterModel; - - ParameterModel parameterModel; - - CatchModel catchModel; - - AccidentalCatchModel accidentalCatchModel; - - IndividualObservationModel individualObservationModel; - - SpeciesExportModel speciesModel; - - final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - - TuttiRepeatableExport<SurveyRow> surveyExport; - - TuttiRepeatableExport<GearCaracteristicRow> gearCaracteristicsExport; - - TuttiRepeatableExport<OperationRow> operationExport; - - TuttiRepeatableExport<MarineLitterRow> marineLitterExport; - - TuttiRepeatableExport<ParameterRow> parameterExport; - - TuttiRepeatableExport<CatchRow> catchExport; - - TuttiRepeatableExport<AccidentalCatchRow> accidentalCatchExport; - - TuttiRepeatableExport<IndividualObservationRow> individualObservationExport; - - TuttiRepeatableExport<SpeciesExportRow> speciesExport; - - private final SampleCategoryModel sampleCategoryModel; - - Map<String, Species> speciesById; - - String checkError; - - GlobalExportContext(File basedir, - char csvSeparator, - DecoratorService decoratorService, - SampleCategoryModel sampleCategoryModel, - Map<String, Species> speciesById) { - this.sampleCategoryModel = sampleCategoryModel; - - this.speciesById = speciesById; - try { - - protocolFile = new File(basedir, "protocol.tuttiProtocol"); - temporaryGearFile = new File(basedir, "temporayGear.csv"); - temporaryPersonFile = new File(basedir, "temporayPerson.csv"); - temporarySpeciesFile = new File(basedir, "temporaySpecies.csv"); - temporaryVesselFile = new File(basedir, "temporayVessel.csv"); - - surveyFile = new File(basedir, "survey.csv"); - surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8); - - gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv"); - gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8); - - operationFile = new File(basedir, "operation.csv"); - operationWriter = Files.newWriter(operationFile, Charsets.UTF_8); - - marineLitterFile = new File(basedir, "marineLitter.csv"); - marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8); - - parameterFile = new File(basedir, "parameter.csv"); - parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8); - - catchFile = new File(basedir, "catch.csv"); - catchWriter = Files.newWriter(catchFile, Charsets.UTF_8); - - accidentalCatchFile = new File(basedir, "accidentalCatch.csv"); - accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8); - - individualObservationFile = new File(basedir, "individualObservation.csv"); - individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8); - - speciesFile = new File(basedir, "species.csv"); - speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8); - - } catch (FileNotFoundException e) { - - // should never happen - throw new ApplicationTechnicalException(t("tutti.service.export.context.error"), e); - } - - surveyModel = SurveyModel.forExport(csvSeparator); - gearCaracteristicsModel = GearCaracteristicModel.forExport(csvSeparator, decoratorService); - operationModel = OperationModel.forExport(csvSeparator, decoratorService); - parameterModel = ParameterModel.forExport(csvSeparator, decoratorService); - marineLitterModel = MarineLitterModel.forExport(csvSeparator); - catchModel = CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService); - accidentalCatchModel = AccidentalCatchModel.forExport(csvSeparator); - individualObservationModel = IndividualObservationModel.forExport(csvSeparator); - speciesModel = SpeciesExportModel.forExport(csvSeparator); - - surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel); - gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport(gearCaracteristicsModel); - operationExport = TuttiCsvUtil.newRepeatableExport(operationModel); - parameterExport = TuttiCsvUtil.newRepeatableExport(parameterModel); - marineLitterExport = TuttiCsvUtil.newRepeatableExport(marineLitterModel); - catchExport = TuttiCsvUtil.newRepeatableExport(catchModel); - accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel); - individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel); - speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel); - } - - @Override - public void close() throws IOException { - IOUtils.closeQuietly(surveyWriter); - IOUtils.closeQuietly(gearCaracteristicsWriter); - IOUtils.closeQuietly(operationWriter); - IOUtils.closeQuietly(parameterWriter); - IOUtils.closeQuietly(catchWriter); - IOUtils.closeQuietly(accidentalCatchWriter); - IOUtils.closeQuietly(marineLitterWriter); - IOUtils.closeQuietly(individualObservationWriter); - IOUtils.closeQuietly(speciesWriter); - } - - public String getCheckError() { - return checkError; - } - - public void setCheckError(String checkError) { - this.checkError = checkError; - } - - public void addSpecies(Species species) { - String speciesId = species.getId(); - if (!speciesToExport.containsKey(speciesId)) { - - // not treated species, add a new row - Species fullSpecies = speciesById.get(speciesId); - SpeciesExportRow row = new SpeciesExportRow(); - row.setSpecies(fullSpecies); - speciesToExport.put(speciesId, row); - // add the survey code (see http://forge.codelutin.com/issues/4799) - species.setSurveyCode(fullSpecies.getSurveyCode()); - } - } - - public List<SpeciesExportRow> getSpeciesToExport() { - List<SpeciesExportRow> result = - Lists.newArrayList(speciesToExport.values()); - - Collections.sort(result, new Comparator<SpeciesExportRow>() { - @Override - public int compare(SpeciesExportRow o1, SpeciesExportRow o2) { - return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()); - } - }); - return result; - } - - public SampleCategoryModel getSampleCategoryModel() { - return sampleCategoryModel; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java index f606a43..a2001f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.export.sumatra; */ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.export.ExportBatchEntry; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java similarity index 74% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 9ed9bd1..55c00c3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -24,7 +24,6 @@ package fr.ifremer.tutti.service.export.generic; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -36,7 +35,6 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.persistence.entities.referential.Person; @@ -48,20 +46,37 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.catches.WeightComputingService; -import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchRow; -import fr.ifremer.tutti.service.export.generic.csv.CatchRow; -import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicRow; -import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationRow; -import fr.ifremer.tutti.service.export.generic.csv.MarineLitterRow; -import fr.ifremer.tutti.service.export.generic.csv.OperationRow; -import fr.ifremer.tutti.service.export.generic.csv.ParameterRow; -import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; -import fr.ifremer.tutti.service.export.generic.csv.SurveyRow; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForGearCaracteristics; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import fr.ifremer.tutti.service.referential.csv.GearRow; +import fr.ifremer.tutti.service.referential.csv.PersonRow; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import fr.ifremer.tutti.service.referential.csv.VesselRow; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.IOUtils; @@ -73,8 +88,6 @@ import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; -import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -88,16 +101,16 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class TuttiExportService extends AbstractTuttiService { +public class GenericFormatExportService extends AbstractTuttiService { - private static final Log log = LogFactory.getLog(TuttiExportService.class); + private static final Log log = LogFactory.getLog(GenericFormatExportService.class); protected PersistenceService persistenceService; - protected DecoratorService decoratorService; - protected WeightComputingService weightComputingService; + protected DecoratorService decoratorService; + protected ReferentialTemporaryGearService referentialTemporaryGearService; protected ReferentialTemporaryPersonService referentialTemporaryPersonService; @@ -108,22 +121,9 @@ public class TuttiExportService extends AbstractTuttiService { protected ProtocolImportExportService protocolImportExportService; - protected Caracteristic verticalOpeningCaracteristic; - - protected Caracteristic horizontalOpeningWingCaracteristic; - - protected Caracteristic horizontalOpeningDoorCaracteristic; - - protected Caracteristic deadOrAliveCaracteristic; - - protected Caracteristic genderCaracteristic; - - protected Caracteristic weightMeasuredCaracteristic; - - protected Caracteristic pmfmIdCaracteristic; - @Override public void setServiceContext(TuttiServiceContext context) { + super.setServiceContext(context); persistenceService = getService(PersistenceService.class); decoratorService = getService(DecoratorService.class); @@ -134,13 +134,6 @@ public class TuttiExportService extends AbstractTuttiService { referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); protocolImportExportService = getService(ProtocolImportExportService.class); - verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic(); - horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingsCaracteristic(); - horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic(); - weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); - pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); - deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); - genderCaracteristic = persistenceService.getSexCaracteristic(); } public ProgressionModel createExportProgramProgessionModel(String programId) { @@ -157,6 +150,7 @@ public class TuttiExportService extends AbstractTuttiService { } public void exportProgram(String programId, File exportFile, ProgressionModel progressionModel) { + Preconditions.checkNotNull(programId); Preconditions.checkNotNull(exportFile); @@ -167,8 +161,6 @@ public class TuttiExportService extends AbstractTuttiService { log.debug("Will export program: " + programId); } - operationContexts.clear(); - List<Cruise> allCruise = persistenceService.getAllCruise(programId); File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); @@ -213,8 +205,6 @@ public class TuttiExportService extends AbstractTuttiService { Cruise cruise = persistenceService.getCruise(cruiseId); Preconditions.checkNotNull(cruise); - operationContexts.clear(); - if (log.isDebugEnabled()) { log.debug("Will export cruise: " + cruiseId); } @@ -273,42 +263,35 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportTemporaryGears(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); - if (temporaryGears.isEmpty()) { - - increments(progressionModel, t("tutti.service.genericExport.skipTemporaryGearExport")); - } else { + try { - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); + CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); - try { - referentialTemporaryGearService.exportTemporaryGear(exportContext.temporaryGearFile, temporaryGears); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary gears", e); - } + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); + producerForTemporarySpecies.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary gear", e); } } - protected void exportTemporaryPersons(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); - if (temporaryPersons.isEmpty()) { + try { - increments(progressionModel, t("tutti.service.genericExport.skipTemporaryPersonExport")); - } else { + CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); - - try { - referentialTemporaryPersonService.exportTemporaryPerson(exportContext.temporaryPersonFile, temporaryPersons); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary person", e); - } + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); + producerForTemporarySpecies.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); } } @@ -316,20 +299,17 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportTemporarySpeciess(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); - if (temporarySpeciess.isEmpty()) { - - increments(progressionModel, t("tutti.service.genericExport.skipTemporarySpeciesExport")); - } else { + try { - increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); + CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); - try { - referentialTemporarySpeciesService.exportTemporarySpecies(exportContext.temporarySpeciesFile, temporarySpeciess); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary species", e); - } + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); + producerForTemporarySpecies.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); } } @@ -337,20 +317,17 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportTemporaryVessels(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); - if (temporaryVessels.isEmpty()) { - - increments(progressionModel, t("tutti.service.genericExport.skipTemporaryVesselExport")); - } else { + try { - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); + CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); - try { - referentialTemporaryVesselService.exportTemporaryVessel(exportContext.temporaryVesselFile, temporaryVessels); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary vessels", e); - } + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); + producerForTemporaryVessel.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); } } @@ -370,8 +347,6 @@ public class TuttiExportService extends AbstractTuttiService { Cruise cruise = persistenceService.getCruise(cruiseId); Preconditions.checkNotNull(cruise); - operationContexts.clear(); - if (log.isDebugEnabled()) { log.debug("Will export cruise: " + cruiseId); } @@ -412,14 +387,12 @@ public class TuttiExportService extends AbstractTuttiService { protected GlobalExportContext createExportContext(File basedir) { - List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); - Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); - return new GlobalExportContext(basedir, ';', + persistenceService, + weightComputingService, decoratorService, - context.getSampleCategoryModel(), - speciesById); + context.getSampleCategoryModel()); } @@ -466,7 +439,7 @@ public class TuttiExportService extends AbstractTuttiService { TuttiProtocol protocol = persistenceService.getProtocol(); increments(progressionModel, t("tutti.service.genericExport.exportProtocol", protocol.getName())); - protocolImportExportService.exportProtocol(protocol, exportContext.protocolFile); + protocolImportExportService.exportProtocol(protocol, exportContext.getProtocolFile()); } else { increments(progressionModel, t("tutti.service.genericExport.skipProtocolExport")); @@ -516,7 +489,7 @@ public class TuttiExportService extends AbstractTuttiService { exportCatches(exportContext, cruise, loadedOperations); increments(progressionModel, t("tutti.service.exportCruise.exportSpecies", cruiseName)); - exportSpecies(exportContext, exportContext.getSpeciesToExport()); + exportSpecies(exportContext); } protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { @@ -527,11 +500,11 @@ public class TuttiExportService extends AbstractTuttiService { try { - List<SurveyRow> rows = new ArrayList<>(); - SurveyRow surveyRow = exportContext.surveyModel.getDataToExport(cruise, country); - rows.add(surveyRow); + CsvProducerForSurvey producerForSurvey = exportContext.getProducerForSurvey(); + + SurveyRow surveyRow = producerForSurvey.getDataToExport(cruise, country); + producerForSurvey.write(surveyRow); - exportContext.surveyExport.write(rows, exportContext.surveyWriter); } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.survey.error"), e); } @@ -540,21 +513,23 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportGearCaracteristics(GlobalExportContext exportContext, Cruise cruise) { try { + CsvProducerForGearCaracteristics producerForGearCaracteristics = exportContext.getProducerForGearCaracteristics(); + List<GearCaracteristicRow> rows = Lists.newArrayList(); for (Gear gear : cruise.getGear()) { - CaracteristicMap caracteristics = - persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); - + CaracteristicMap caracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); Gear gearWithCaracteristics = Gears.newGear(gear); gearWithCaracteristics.setCaracteristics(caracteristics); - List<GearCaracteristicRow> dataToExport = exportContext.gearCaracteristicsModel.getDataToExport(cruise, gearWithCaracteristics); + + List<GearCaracteristicRow> dataToExport = producerForGearCaracteristics.getDataToExport(cruise, gearWithCaracteristics); rows.addAll(dataToExport); } - exportContext.gearCaracteristicsExport.write(rows, exportContext.gearCaracteristicsWriter); + producerForGearCaracteristics.write(rows); + } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.gearCaracteristics.error"), e); } @@ -564,18 +539,22 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForOperation producerForOperation = exportContext.getProducerForOperation(); + List<OperationRow> rows = Lists.newArrayList(); for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); CatchBatch catchBatch = operationContext.getCatchBatch(); - OperationRow operationRow = exportContext.operationModel.getDataToExport(cruise, operation, catchBatch); + + OperationRow operationRow = producerForOperation.getDataToExport(cruise, operation, catchBatch); rows.add(operationRow); } - exportContext.operationExport.write(rows, exportContext.operationWriter); + producerForOperation.write(rows); + } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.operations.error"), e); } @@ -585,9 +564,13 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForParameter producerForParameter = exportContext.getProducerForParameter(); + for (FishingOperation operation : operations) { - List<ParameterRow> rows = exportContext.parameterModel.getDataToExport(cruise, operation); - exportContext.parameterExport.write(rows, exportContext.parameterWriter); + + List<ParameterRow> rows = producerForParameter.getDataToExport(cruise, operation); + producerForParameter.write(rows); + } } catch (Exception e) { @@ -599,15 +582,19 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForMarineLitter producerForMarineLitter = exportContext.getProducerForMarineLitter(); + for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { continue; } - List<MarineLitterRow> rows = exportContext.marineLitterModel.getDataToExport(operationContext); - exportContext.marineLitterExport.write(rows, exportContext.marineLitterWriter); + + List<MarineLitterRow> rows = producerForMarineLitter.getDataToExport(operationContext); + producerForMarineLitter.write(rows); + } } catch (Exception e) { @@ -619,16 +606,19 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForIndividualObservation producerForIndividualObservation = exportContext.getProducerForIndividualObservation(); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { continue; } - List<IndividualObservationRow> rows = exportContext.individualObservationModel.getDataToExport(operationContext); - exportContext.speciesModel.prepareIndividualRows(exportContext, rows); - exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter); + List<IndividualObservationRow> rows = producerForIndividualObservation.getDataToExport(operationContext); + producerForSpecies.prepareIndividualRows(exportContext, rows); + producerForIndividualObservation.write(rows); } } catch (Exception e) { @@ -639,13 +629,16 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportAccidentalCatch(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { + CsvProducerForAccidentalCatch producerForAccidentalCatch = exportContext.getProducerForAccidentalCatch(); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); - List<AccidentalCatchRow> rows = exportContext.accidentalCatchModel.getDataToExport(operationContext); - exportContext.speciesModel.prepareAccidentalRows(exportContext, rows); - exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter); + List<AccidentalCatchRow> rows = producerForAccidentalCatch.getDataToExport(operationContext); + producerForSpecies.prepareAccidentalRows(exportContext, rows); + producerForAccidentalCatch.write(rows); } } catch (Exception e) { @@ -658,7 +651,7 @@ public class TuttiExportService extends AbstractTuttiService { for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -682,9 +675,11 @@ public class TuttiExportService extends AbstractTuttiService { BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + // Warning! This will also add the survey code to batch species - exportContext.speciesModel.prepareSpeciesBatchRows(exportContext, rootSpeciesBatch); - exportContext.speciesModel.prepareBenthosBatchRows(exportContext, rootBenthosBatch); + producerForSpecies.prepareSpeciesBatchRows(exportContext, rootSpeciesBatch); + producerForSpecies.prepareBenthosBatchRows(exportContext, rootBenthosBatch); Float totalWeight = Numbers.getValueOrComputedValue( catchBatch.getCatchTotalWeight(), @@ -692,7 +687,6 @@ public class TuttiExportService extends AbstractTuttiService { Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); - Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( catchBatch.getSpeciesTotalSortedWeight(), catchBatch.getSpeciesTotalSortedComputedWeight()); @@ -728,39 +722,27 @@ public class TuttiExportService extends AbstractTuttiService { log.debug(message); } - List<CatchRow> rows = exportContext.catchModel.getDataToExport(operationContext, - speciesCatchRaisingFactor, - benthosCatchRaisingFactor); + CsvProducerForCatch producerForCatch = exportContext.getProducerForCatch(); + List<CatchRow> rows = producerForCatch.getDataToExport(operationContext, + speciesCatchRaisingFactor, + benthosCatchRaisingFactor); - exportContext.catchExport.write(rows, exportContext.catchWriter); + producerForCatch.write(rows); } - protected void exportSpecies(GlobalExportContext exportContext, List<SpeciesExportRow> rows) { + protected void exportSpecies(GlobalExportContext exportContext) { try { - exportContext.speciesExport.write(rows, exportContext.speciesWriter); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + List<SpeciesExportRow> rows = producerForSpecies.getSpeciesToExport(); + producerForSpecies.write(rows); } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.species.error"), e); } } - protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); - - protected OperationExportContext getOperationContext(GlobalExportContext exportContext, Cruise cruise, FishingOperation operation) { - - String operationId = operation.getId(); - - OperationExportContext result = operationContexts.get(operationId); - if (result == null) { - // create it - result = new OperationExportContext(cruise, operation, persistenceService, weightComputingService, exportContext.getSampleCategoryModel(), weightMeasuredCaracteristic, pmfmIdCaracteristic, deadOrAliveCaracteristic, genderCaracteristic); - operationContexts.put(operationId, result); - } - return result; - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java new file mode 100644 index 0000000..d449c18 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -0,0 +1,240 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.Maps; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.catches.WeightComputingService; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.CatchModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; +import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForGearCaracteristics; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; +import org.apache.commons.io.IOUtils; + +import java.io.Closeable; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class GlobalExportContext implements Closeable { + + private final File protocolFile; + + private final SampleCategoryModel sampleCategoryModel; + + protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); + + protected final PersistenceService persistenceService; + + protected final WeightComputingService weightComputingService; + + protected final Caracteristic deadOrAliveCaracteristic; + + protected final Caracteristic genderCaracteristic; + + protected final Caracteristic weightMeasuredCaracteristic; + + protected final Caracteristic pmfmIdCaracteristic; + + private final CsvProducerForSurvey producerForSurvey; + + private final CsvProducerForGearCaracteristics producerForGearCaracteristics; + + private final CsvProducerForOperation producerForOperation; + + private final CsvProducerForParameter producerForParameter; + + private final CsvProducerForIndividualObservation producerForIndividualObservation; + + private final CsvProducerForAccidentalCatch producerForAccidentalCatch; + + private final CsvProducerForCatch producerForCatch; + + private final CsvProducerForSpecies producerForSpecies; + + private final CsvProducerForMarineLitter producerForMarineLitter; + + private final CsvProducerForTemporaryGear producerForTemporaryGear; + + private final CsvProducerForTemporaryPerson producerForTemporaryPerson; + + private final CsvProducerForTemporarySpecies producerForTemporarySpecies; + + private final CsvProducerForTemporaryVessel producerForTemporaryVessel; + + protected String checkError; + + GlobalExportContext(File basedir, + char csvSeparator, + PersistenceService persistenceService, + WeightComputingService weightComputingService, + DecoratorService decoratorService, + SampleCategoryModel sampleCategoryModel) { + + this.persistenceService = persistenceService; + this.weightComputingService = weightComputingService; + + this.sampleCategoryModel = sampleCategoryModel; + + this.weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); + this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); + this.deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); + this.genderCaracteristic = persistenceService.getSexCaracteristic(); + + List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); + Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); + + this.producerForSurvey = new CsvProducerForSurvey(basedir, SurveyModel.forExport(csvSeparator)); + this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(basedir, GearCaracteristicModel.forExport(csvSeparator, decoratorService)); + this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator, decoratorService)); + this.producerForIndividualObservation = new CsvProducerForIndividualObservation(basedir, IndividualObservationModel.forExport(csvSeparator)); + this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesById); + this.producerForCatch = new CsvProducerForCatch(basedir, CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); + this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(basedir, AccidentalCatchModel.forExport(csvSeparator)); + this.producerForParameter = new CsvProducerForParameter(basedir, ParameterModel.forExport(csvSeparator, decoratorService)); + this.producerForMarineLitter = new CsvProducerForMarineLitter(basedir, MarineLitterModel.forExport(csvSeparator)); + + this.producerForTemporaryGear = new CsvProducerForTemporaryGear(new File(basedir, "temporaryGears.csv"), csvSeparator); + this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(new File(basedir, "temporaryPersons.csv"), csvSeparator); + this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(new File(basedir, "temporarySpecies.csv"), csvSeparator); + this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(new File(basedir, "temporaryVessels.csv"), csvSeparator); + + this.protocolFile = new File(basedir, "protocol.tuttiProtocol"); + + } + + public OperationExportContext getOperationContext(Cruise cruise, FishingOperation operation) { + + String operationId = operation.getId(); + + OperationExportContext operationExportContext = operationContexts.get(operationId); + if (operationExportContext == null) { + + operationExportContext = new OperationExportContext(cruise, + operation, + persistenceService, + weightComputingService, + sampleCategoryModel, + weightMeasuredCaracteristic, + pmfmIdCaracteristic, + deadOrAliveCaracteristic, + genderCaracteristic); + operationContexts.put(operationId, operationExportContext); + + } + return operationExportContext; + + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(producerForSurvey); + IOUtils.closeQuietly(producerForSpecies); + IOUtils.closeQuietly(producerForGearCaracteristics); + IOUtils.closeQuietly(producerForOperation); + IOUtils.closeQuietly(producerForParameter); + IOUtils.closeQuietly(producerForAccidentalCatch); + IOUtils.closeQuietly(producerForIndividualObservation); + IOUtils.closeQuietly(producerForCatch); + IOUtils.closeQuietly(producerForMarineLitter); + IOUtils.closeQuietly(producerForTemporaryGear); + IOUtils.closeQuietly(producerForTemporaryPerson); + IOUtils.closeQuietly(producerForTemporarySpecies); + IOUtils.closeQuietly(producerForTemporaryVessel); + } + + public String getCheckError() { + return checkError; + } + + public void setCheckError(String checkError) { + this.checkError = checkError; + } + + public CsvProducerForSurvey getProducerForSurvey() { + return producerForSurvey; + } + + public CsvProducerForGearCaracteristics getProducerForGearCaracteristics() { + return producerForGearCaracteristics; + } + + public CsvProducerForOperation getProducerForOperation() { + return producerForOperation; + } + + public CsvProducerForParameter getProducerForParameter() { + return producerForParameter; + } + + public CsvProducerForIndividualObservation getProducerForIndividualObservation() { + return producerForIndividualObservation; + } + + public CsvProducerForAccidentalCatch getProducerForAccidentalCatch() { + return producerForAccidentalCatch; + } + + public CsvProducerForCatch getProducerForCatch() { + return producerForCatch; + } + + public CsvProducerForSpecies getProducerForSpecies() { + return producerForSpecies; + } + + public CsvProducerForMarineLitter getProducerForMarineLitter() { + return producerForMarineLitter; + } + + public CsvProducerForTemporaryGear getProducerForTemporaryGear() { + return producerForTemporaryGear; + } + + public CsvProducerForTemporaryPerson getProducerForTemporaryPerson() { + return producerForTemporaryPerson; + } + + public CsvProducerForTemporarySpecies getProducerForTemporarySpecies() { + return producerForTemporarySpecies; + } + + public CsvProducerForTemporaryVessel getProducerForTemporaryVessel() { + return producerForTemporaryVessel; + } + + public File getProtocolFile() { + return protocolFile; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalImportContext.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index 3af0423..a6e31bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; @@ -41,8 +41,10 @@ public class GlobalImportContext { private final FishingOperationSubStrataParser fishingOperationSubStrataParser; private final FishingOperationLocationParser fishingOperationLocationParser; + private final ListVesselParser listVesselParser; - private final SpeciesParser speciesParser; + + private final SpeciesParser speciesParser; public GlobalImportContext(PersistenceService persistenceService, Program program) { this.vesselParser = new VesselParser(persistenceService); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java index 028302f..1e55f1a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java similarity index 56% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index 578641c..b9805ae 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; @@ -31,17 +30,9 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * TODO @@ -76,89 +67,6 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden } - public List<AccidentalCatchRow> getDataToExport(OperationExportContext operationExportContext) { - - List<AccidentalCatchRow> rows = new ArrayList<>(); - - List<AccidentalBatch> accidentalBatches = operationExportContext.getAccidentalBatches(); - - if (CollectionUtils.isNotEmpty(accidentalBatches)) { - for (AccidentalBatch accidentalBatch : accidentalBatches) { - - addAccidentalBatch(operationExportContext, rows, accidentalBatch); - - } - - } - - return rows; - - } - - protected void addAccidentalBatch(OperationExportContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch) { - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getDeadOrAliveCaracteristic(), - accidentalBatch.getDeadOrAlive()); - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getGenderCaracteristic(), - accidentalBatch.getGender()); - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getWeightMeasuredCaracteristic(), - accidentalBatch.getWeight()); - - if (accidentalBatch.getLengthStepCaracteristic() != null) { - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getPmfmIdCaracteristic(), - accidentalBatch.getLengthStepCaracteristic().getIdAsInt()); - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - accidentalBatch.getLengthStepCaracteristic(), - accidentalBatch.getSize()); - } - - CaracteristicMap caracteristics = accidentalBatch.getCaracteristics(); - if (MapUtils.isNotEmpty(caracteristics)) { - for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - entry.getKey(), - entry.getValue()); - } - } - - } - - protected void addCaracteristicRow(OperationExportContext operationExportContext, - List<AccidentalCatchRow> rows, - AccidentalBatch accidentalBatch, - Caracteristic caracteristic, - Serializable caracteristicValue) { - if (caracteristicValue != null) { - - AccidentalCatchRow row = new AccidentalCatchRow(); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(accidentalBatch); - row.setCaracteristic(caracteristic); - row.setCaracteristicValue(caracteristicValue); - rows.add(row); - } - } - protected AccidentalCatchModel(char separator) { super(separator); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java index 7d968d2..b52c090 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java new file mode 100644 index 0000000..bd78bf3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -0,0 +1,169 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +/* + * #%L + * Tutti :: Service + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; + +/** + * Model of a catch export. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.3 + */ +public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { + + public static final String WEIGHT_OR_VOL_TYPE = "Poids"; + + public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + + CatchModel exportModel = new CatchModel(separator); + exportModel.forExport(sampleCategoryModel, decoratorService); + return exportModel; + + } + + public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { + + CatchModel importModel = new CatchModel(separator); + importModel.forImport(sampleCategoryModel, globalImportContext); + return importModel; + + } + + @Override + public CatchRow newEmptyInstance() { + + CatchRow row = new CatchRow(false, false); + row.setCruise(Cruises.newCruise()); + return row; + + } + + protected CatchModel(char separator) { + super(separator); + } + + protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + + newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); + newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newColumnForExport("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); + newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); + newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + String headerPrefix = entry.getCode(); + int categoryOrder = entry.getOrder(); + String categoryName = CatchRow.SAMPLE_CATEGORY; + newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); + newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); +// newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); + newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); + } + + // mensuration + + newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); + newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); + newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); + + newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); + newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + + } + + protected void forImport(SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { + + newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); + newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + + newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); + newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); + newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); + + newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); +// newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); +// newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + + //FIXME + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + String headerPrefix = entry.getCode(); + int categoryOrder = entry.getOrder(); + String categoryName = CatchRow.SAMPLE_CATEGORY; + newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); + newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); +// newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); +// newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); + } + + // mensuration + + newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); +// newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); +// newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); +// newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); + +// newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); +// newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); +// newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java index 67ced1c..74938d9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ExportSampleCategory.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ExportSampleCategory.java index 88862e3..4612542 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ExportSampleCategory.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java similarity index 77% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index 9235fa6..aa20683 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,21 +22,15 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * To export gear caracteristics. @@ -90,27 +84,6 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } - public List<GearCaracteristicRow> getDataToExport(Cruise cruise, Gear gear) { - - List<GearCaracteristicRow> rows = new ArrayList<>(); - CaracteristicMap caracteristics = gear.getCaracteristics(); - if (caracteristics != null) { - for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { - Caracteristic caracteristic = entry.getKey(); - Serializable value = entry.getValue(); - GearCaracteristicRow row = new GearCaracteristicRow(); - row.setCruise(cruise); - row.setGear(gear); - row.setCaracteristic(caracteristic); - row.setValue(value); - rows.add(row); - } - } - - return rows; - - } - @Override public GearCaracteristicRow newEmptyInstance() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java index 08ca9b2..6348236 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java similarity index 60% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index b5d7d41..66dfef4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; @@ -31,17 +30,9 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a individual observation export. @@ -76,75 +67,6 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I } - public List<IndividualObservationRow> getDataToExport(OperationExportContext operationExportContext) { - - List<IndividualObservationRow> rows = new ArrayList<>(); - List<IndividualObservationBatch> individualObservations = operationExportContext.getIndividualObservations(); - - if (CollectionUtils.isNotEmpty(individualObservations)) { - for (IndividualObservationBatch child : individualObservations) { - - addIndividualObservationBatch(operationExportContext, rows, child); - } - } - - return rows; - - } - - protected void addIndividualObservationBatch(OperationExportContext operationExportContext, - List<IndividualObservationRow> rows, - IndividualObservationBatch child) { - - addCaracteristicRow(operationExportContext, - rows, - child, - operationExportContext.getWeightMeasuredCaracteristic(), - child.getWeight()); - - if (child.getLengthStepCaracteristic() != null) { - addCaracteristicRow(operationExportContext, - rows, - child, - operationExportContext.getPmfmIdCaracteristic(), - child.getLengthStepCaracteristic().getIdAsInt()); - - addCaracteristicRow(operationExportContext, - rows, - child, - child.getLengthStepCaracteristic(), - child.getSize()); - } - - CaracteristicMap caracteristics = child.getCaracteristics(); - if (MapUtils.isNotEmpty(caracteristics)) { - for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { - addCaracteristicRow(operationExportContext, - rows, - child, - entry.getKey(), - entry.getValue()); - } - } - } - - protected void addCaracteristicRow(OperationExportContext operationExportContext, - List<IndividualObservationRow> rows, - IndividualObservationBatch child, - Caracteristic caracteristic, - Serializable caracteristicValue) { - if (caracteristicValue != null) { - - IndividualObservationRow row = new IndividualObservationRow(); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(child); - row.setCaracteristic(caracteristic); - row.setCaracteristicValue(caracteristicValue); - rows.add(row); - } - } - protected IndividualObservationModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java index 85fa2a8..09d80df 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java similarity index 79% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 3c22c72..12f1957 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,21 +22,15 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.ArrayList; -import java.util.List; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a marine litter export. @@ -71,27 +65,6 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt } - public List<MarineLitterRow> getDataToExport(OperationExportContext operationExportContext) { - - List<MarineLitterRow> rows = new ArrayList<>(); - - BatchContainer<MarineLitterBatch> rootMarineLitterBatch = operationExportContext.getRootMarineLitterBatch(); - - List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren(); - if (CollectionUtils.isNotEmpty(children)) { - for (MarineLitterBatch child : children) { - MarineLitterRow row = new MarineLitterRow(); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(child); - rows.add(row); - } - } - - return rows; - - } - protected MarineLitterModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java index a78accd..b843a8b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 5091209..cd4309c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatchs; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; @@ -33,9 +32,9 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import org.nuiton.decorator.Decorator; /** @@ -62,18 +61,6 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - public OperationRow getDataToExport(Cruise cruise, FishingOperation operation, CatchBatch catchBatch) { - - OperationRow row = new OperationRow(); - row.setCruise(cruise); - row.setFishingOperation(operation); - row.setCatchBatch(catchBatch); - - return row; - - } - - @Override public OperationRow newEmptyInstance() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java index b2cd0d8..631c4fa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java similarity index 74% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index c7265ef..4128b72 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,21 +22,15 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a parameter export. @@ -71,39 +65,6 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> } - public List<ParameterRow> getDataToExport(Cruise cruise, FishingOperation operation) { - - List<ParameterRow> rows = new ArrayList<>(); - - CaracteristicMap gearUseFeatures = operation.getGearUseFeatures(); - if (gearUseFeatures != null) { - addCaracteristicMap(rows, cruise, operation, gearUseFeatures); - } - - CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures(); - if (vesselUseFeatures != null) { - addCaracteristicMap(rows, cruise, operation, vesselUseFeatures); - } - - return rows; - - } - - protected void addCaracteristicMap(List<ParameterRow> rows, Cruise cruise, FishingOperation operation, CaracteristicMap caracteristicMap) { - - for (Map.Entry<Caracteristic, Serializable> entry : caracteristicMap.entrySet()) { - - ParameterRow row = new ParameterRow(); - row.setCruise(cruise); - row.setFishingOperation(operation); - row.setCaracteristic(entry.getKey()); - row.setValue(entry.getValue()); - rows.add(row); - - } - - } - protected ParameterModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java index fbe6850..b9f87e1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java similarity index 50% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index a430065..7e21971 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,15 +22,9 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; -import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; -import fr.ifremer.tutti.service.csv.AbstractTuttiExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalExportContext; - -import java.util.List; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; /** * To export a species used in data to export. @@ -38,7 +32,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 2.3 */ -public class SpeciesExportModel extends AbstractTuttiExportModel<SpeciesExportRow> { +public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesExportRow> { public static SpeciesExportModel forExport(char separator) { @@ -48,42 +42,6 @@ public class SpeciesExportModel extends AbstractTuttiExportModel<SpeciesExportRo } - public void prepareSpeciesBatchRows(GlobalExportContext exportContext, - BatchContainer<SpeciesBatch> rootSpeciesBatch) { - - for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { - exportContext.addSpecies(speciesBatch.getSpecies()); - } - - } - - public void prepareBenthosBatchRows(GlobalExportContext exportContext, - BatchContainer<BenthosBatch> rootBenthosBatch) { - - for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { - exportContext.addSpecies(benthosBatch.getSpecies()); - } - - } - - public void prepareIndividualRows(GlobalExportContext exportContext, - List<IndividualObservationRow> rows) { - - for (IndividualObservationRow row : rows) { - exportContext.addSpecies(row.getSpecies()); - } - - } - - public void prepareAccidentalRows(GlobalExportContext exportContext, - List<AccidentalCatchRow> rows) { - - for (AccidentalCatchRow row : rows) { - exportContext.addSpecies(row.getSpecies()); - } - - } - protected SpeciesExportModel(char separator) { super(separator); } @@ -96,4 +54,9 @@ public class SpeciesExportModel extends AbstractTuttiExportModel<SpeciesExportRo newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE); } + + @Override + public SpeciesExportRow newEmptyInstance() { + return new SpeciesExportRow(); + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportRow.java similarity index 96% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportRow.java index b46d331..4ba125c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java similarity index 92% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index 1d0d74e..6ae4412 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -26,9 +26,9 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a survey export. @@ -54,15 +54,6 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } - public SurveyRow getDataToExport(Cruise cruise, TuttiLocation country) { - - SurveyRow row = new SurveyRow(); - row.setCruise(cruise); - row.setCountry(country); - return row; - - } - protected SurveyModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java index 36a17ba..f27a9b1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java new file mode 100644 index 0000000..ae20d90 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java @@ -0,0 +1,115 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRow, AccidentalCatchModel> { + + public CsvProducerForAccidentalCatch(File basedir, AccidentalCatchModel model) { + super(new File(basedir, "accidentalCatch.csv"), model); + } + + public List<AccidentalCatchRow> getDataToExport(OperationExportContext operationExportContext) { + + List<AccidentalCatchRow> rows = new ArrayList<>(); + + List<AccidentalBatch> accidentalBatches = operationExportContext.getAccidentalBatches(); + + if (CollectionUtils.isNotEmpty(accidentalBatches)) { + for (AccidentalBatch accidentalBatch : accidentalBatches) { + + addAccidentalBatch(operationExportContext, rows, accidentalBatch); + + } + + } + + return rows; + + } + + protected void addAccidentalBatch(OperationExportContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch) { + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getDeadOrAliveCaracteristic(), + accidentalBatch.getDeadOrAlive()); + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getGenderCaracteristic(), + accidentalBatch.getGender()); + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getWeightMeasuredCaracteristic(), + accidentalBatch.getWeight()); + + if (accidentalBatch.getLengthStepCaracteristic() != null) { + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getPmfmIdCaracteristic(), + accidentalBatch.getLengthStepCaracteristic().getIdAsInt()); + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + accidentalBatch.getLengthStepCaracteristic(), + accidentalBatch.getSize()); + } + + CaracteristicMap caracteristics = accidentalBatch.getCaracteristics(); + if (MapUtils.isNotEmpty(caracteristics)) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + entry.getKey(), + entry.getValue()); + } + } + + } + + protected void addCaracteristicRow(OperationExportContext operationExportContext, + List<AccidentalCatchRow> rows, + AccidentalBatch accidentalBatch, + Caracteristic caracteristic, + Serializable caracteristicValue) { + if (caracteristicValue != null) { + + AccidentalCatchRow row = new AccidentalCatchRow(); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setBatch(accidentalBatch); + row.setCaracteristic(caracteristic); + row.setCaracteristicValue(caracteristicValue); + rows.add(row); + + } + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java similarity index 62% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index d8cfcb5..d5033df 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -1,88 +1,38 @@ -package fr.ifremer.tutti.service.export.generic.csv; - -/* - * #%L - * Tutti :: Service - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ +package fr.ifremer.tutti.service.genericformat.producer; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; -import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.CatchModel; +import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import fr.ifremer.tutti.service.genericformat.csv.ExportSampleCategory; import fr.ifremer.tutti.util.Numbers; import fr.ifremer.tutti.util.Weights; import org.apache.commons.collections4.CollectionUtils; import org.nuiton.jaxx.application.ApplicationTechnicalException; +import java.io.File; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** - * Model of a catch export. + * Created on 2/6/15. * - * @author tchemit <chemit@codelutin.com> - * @since 1.3 + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 */ -public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { - - public static final String WEIGHT_OR_VOL_TYPE = "Poids"; - - public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { - - CatchModel exportModel = new CatchModel(separator); - exportModel.forExport(sampleCategoryModel, decoratorService); - return exportModel; - - } - - public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { - - CatchModel importModel = new CatchModel(separator); - importModel.forImport(sampleCategoryModel, globalImportContext); - return importModel; - - } - - @Override - public CatchRow newEmptyInstance() { - - CatchRow row = new CatchRow(false, false); - row.setCruise(Cruises.newCruise()); - return row; +public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { + public CsvProducerForCatch(File basedir, CatchModel model) { + super(new File(basedir, "catch.csv"), model); } public List<CatchRow> getDataToExport(OperationExportContext operationExportContext, @@ -482,104 +432,11 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { sampleCategory.setSampleWeight(batchWeight); sampleCategory.setComputedWeight(sampleCategoryComputedWeight); - sampleCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE); + sampleCategory.setWeightOrVolType(CatchModel.WEIGHT_OR_VOL_TYPE); sampleCategory.setRankOrder(batchRankOrder); currentRow.addSampleCategory(sampleCategory); } - protected CatchModel(char separator) { - super(separator); - } - - protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { - - newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); - newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); - newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); - newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); - newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); - newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); - newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); - newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - - for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { - - String headerPrefix = entry.getCode(); - int categoryOrder = entry.getOrder(); - String categoryName = CatchRow.SAMPLE_CATEGORY; - newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); - newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); -// newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); - newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); - } - - // mensuration - - newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); - newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); - newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); - newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); - - newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); - newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); - newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); - - } - protected void forImport(SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { - - newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); - newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - - newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); - newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); - newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); - - newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); -// newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); -// newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); - newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - - //FIXME - for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { - - String headerPrefix = entry.getCode(); - int categoryOrder = entry.getOrder(); - String categoryName = CatchRow.SAMPLE_CATEGORY; - newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); - newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); -// newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); -// newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); - } - - // mensuration - - newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); -// newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); - newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); -// newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); -// newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); - -// newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); -// newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); -// newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java new file mode 100644 index 0000000..6562d6f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java @@ -0,0 +1,50 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForGearCaracteristics extends CsvProducer<GearCaracteristicRow, GearCaracteristicModel> { + + public CsvProducerForGearCaracteristics(File basedir, GearCaracteristicModel model) { + super(new File(basedir, "gearCaracteristics.csv"), model); + } + + public List<GearCaracteristicRow> getDataToExport(Cruise cruise, Gear gear) { + + List<GearCaracteristicRow> rows = new ArrayList<>(); + CaracteristicMap caracteristics = gear.getCaracteristics(); + if (caracteristics != null) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + Caracteristic caracteristic = entry.getKey(); + Serializable value = entry.getValue(); + GearCaracteristicRow row = new GearCaracteristicRow(); + row.setCruise(cruise); + row.setGear(gear); + row.setCaracteristic(caracteristic); + row.setValue(value); + rows.add(row); + } + } + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java new file mode 100644 index 0000000..c076f07 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -0,0 +1,100 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForIndividualObservation extends CsvProducer<IndividualObservationRow, IndividualObservationModel> { + + public CsvProducerForIndividualObservation(File basedir, IndividualObservationModel model) { + super(new File(basedir, "individualObservation.csv"), model); + } + + public List<IndividualObservationRow> getDataToExport(OperationExportContext operationExportContext) { + + List<IndividualObservationRow> rows = new ArrayList<>(); + List<IndividualObservationBatch> individualObservations = operationExportContext.getIndividualObservations(); + + if (CollectionUtils.isNotEmpty(individualObservations)) { + for (IndividualObservationBatch child : individualObservations) { + + addIndividualObservationBatch(operationExportContext, rows, child); + } + } + + return rows; + + } + + protected void addIndividualObservationBatch(OperationExportContext operationExportContext, + List<IndividualObservationRow> rows, + IndividualObservationBatch child) { + + addCaracteristicRow(operationExportContext, + rows, + child, + operationExportContext.getWeightMeasuredCaracteristic(), + child.getWeight()); + + if (child.getLengthStepCaracteristic() != null) { + addCaracteristicRow(operationExportContext, + rows, + child, + operationExportContext.getPmfmIdCaracteristic(), + child.getLengthStepCaracteristic().getIdAsInt()); + + addCaracteristicRow(operationExportContext, + rows, + child, + child.getLengthStepCaracteristic(), + child.getSize()); + } + + CaracteristicMap caracteristics = child.getCaracteristics(); + if (MapUtils.isNotEmpty(caracteristics)) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + addCaracteristicRow(operationExportContext, + rows, + child, + entry.getKey(), + entry.getValue()); + } + } + } + + protected void addCaracteristicRow(OperationExportContext operationExportContext, + List<IndividualObservationRow> rows, + IndividualObservationBatch child, + Caracteristic caracteristic, + Serializable caracteristicValue) { + if (caracteristicValue != null) { + + IndividualObservationRow row = new IndividualObservationRow(); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setBatch(child); + row.setCaracteristic(caracteristic); + row.setCaracteristicValue(caracteristicValue); + rows.add(row); + } + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java new file mode 100644 index 0000000..d6a8e61 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import org.apache.commons.collections4.CollectionUtils; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForMarineLitter extends CsvProducer<MarineLitterRow, MarineLitterModel> { + + public CsvProducerForMarineLitter(File basedir, MarineLitterModel model) { + super(new File(basedir, "survey.csv"), model); + } + + + public List<MarineLitterRow> getDataToExport(OperationExportContext operationExportContext) { + + List<MarineLitterRow> rows = new ArrayList<>(); + + BatchContainer<MarineLitterBatch> rootMarineLitterBatch = operationExportContext.getRootMarineLitterBatch(); + + List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (MarineLitterBatch child : children) { + MarineLitterRow row = new MarineLitterRow(); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setBatch(child); + rows.add(row); + } + } + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java new file mode 100644 index 0000000..d2f8b4d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java @@ -0,0 +1,35 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; + +import java.io.File; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForOperation extends CsvProducer<OperationRow, OperationModel> { + + public CsvProducerForOperation(File basedir, OperationModel model) { + super(new File(basedir, "survey.csv"), model); + } + + public OperationRow getDataToExport(Cruise cruise, FishingOperation operation, CatchBatch catchBatch) { + + OperationRow row = new OperationRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setCatchBatch(catchBatch); + + return row; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java new file mode 100644 index 0000000..f113c6e --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForParameter extends CsvProducer<ParameterRow, ParameterModel> { + + public CsvProducerForParameter(File basedir, ParameterModel model) { + super(new File(basedir, "parameter.csv"), model); + } + + public List<ParameterRow> getDataToExport(Cruise cruise, FishingOperation operation) { + + List<ParameterRow> rows = new ArrayList<>(); + + CaracteristicMap gearUseFeatures = operation.getGearUseFeatures(); + if (gearUseFeatures != null) { + addCaracteristicMap(rows, cruise, operation, gearUseFeatures); + } + + CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures(); + if (vesselUseFeatures != null) { + addCaracteristicMap(rows, cruise, operation, vesselUseFeatures); + } + + return rows; + + } + + protected void addCaracteristicMap(List<ParameterRow> rows, Cruise cruise, FishingOperation operation, CaracteristicMap caracteristicMap) { + + for (Map.Entry<Caracteristic, Serializable> entry : caracteristicMap.entrySet()) { + + ParameterRow row = new ParameterRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setCaracteristic(entry.getKey()); + row.setValue(entry.getValue()); + rows.add(row); + + } + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java new file mode 100644 index 0000000..18362a8 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java @@ -0,0 +1,97 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.GlobalExportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; + +import java.io.File; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, SpeciesExportModel> { + + final Map<String, Species> speciesById; + + final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); + + public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesById) { + super(new File(basedir, "species.csv"), model); + this.speciesById = speciesById; + } + + public void prepareSpeciesBatchRows(GlobalExportContext exportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch) { + + for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { + addSpecies(speciesBatch.getSpecies()); + } + + } + + public void prepareBenthosBatchRows(GlobalExportContext exportContext, BatchContainer<BenthosBatch> rootBenthosBatch) { + + for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { + addSpecies(benthosBatch.getSpecies()); + } + + } + + public void prepareIndividualRows(GlobalExportContext exportContext, List<IndividualObservationRow> rows) { + + for (IndividualObservationRow row : rows) { + addSpecies(row.getSpecies()); + } + + } + + public void prepareAccidentalRows(GlobalExportContext exportContext, List<AccidentalCatchRow> rows) { + + for (AccidentalCatchRow row : rows) { + addSpecies(row.getSpecies()); + } + + } + + public void addSpecies(Species species) { + String speciesId = species.getId(); + if (!speciesToExport.containsKey(speciesId)) { + + // not treated species, add a new row + Species fullSpecies = speciesById.get(speciesId); + SpeciesExportRow row = new SpeciesExportRow(); + row.setSpecies(fullSpecies); + speciesToExport.put(speciesId, row); + // add the survey code (see http://forge.codelutin.com/issues/4799) + species.setSurveyCode(fullSpecies.getSurveyCode()); + } + } + + public List<SpeciesExportRow> getSpeciesToExport() { + List<SpeciesExportRow> result = Lists.newArrayList(speciesToExport.values()); + + Collections.sort(result, new Comparator<SpeciesExportRow>() { + @Override + public int compare(SpeciesExportRow o1, SpeciesExportRow o2) { + return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()); + } + }); + return result; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java new file mode 100644 index 0000000..0f3b314 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java @@ -0,0 +1,32 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; + +import java.io.File; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForSurvey extends CsvProducer<SurveyRow, SurveyModel> { + + public CsvProducerForSurvey(File basedir, SurveyModel model) { + super(new File(basedir, "survey.csv"), model); + } + + public SurveyRow getDataToExport(Cruise cruise, TuttiLocation country) { + + SurveyRow row = new SurveyRow(); + row.setCruise(cruise); + row.setCountry(country); + return row; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java index 5388ac2..0afb699 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java @@ -39,7 +39,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.csv.AbstractTuttiImportModel; import org.apache.commons.lang3.StringUtils; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java index d98e97e..a95e334 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.protocol; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.Map; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java index 6b18ac1..e294367 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.protocol; import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.ForeignKeyValue; import fr.ifremer.tutti.service.csv.StringParserFormatter; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java index a4c9dac..73750cc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.pupitri.csv; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.ImportModelWithHeader; import fr.ifremer.tutti.service.pupitri.BoxType; import fr.ifremer.tutti.service.pupitri.Directions; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java index cf367d7..775acde 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.pupitri.csv; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.ImportModelWithHeader; import fr.ifremer.tutti.service.pupitri.Directions; import org.nuiton.csv.Common; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index f61d3cd..15711ee 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -176,23 +174,15 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { public void exportTemporaryGear(File file, List<Gear> toExport) throws IOException { - GearModel csvModel = new GearModel(getCsvSeparator()); + try (CsvProducerForTemporaryGear producerForTemporarySpecies = new CsvProducerForTemporaryGear(file, getCsvSeparator())) { - List<GearRow> toExportRows = Lists.transform(toExport, new Function<Gear, GearRow>() { - @Override - public GearRow apply(Gear gear) { - return new GearRow(gear); - } - }); + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); + producerForTemporarySpecies.write(dataToExport); - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.gear.error", file), e); } + } protected ImportRequestResult<Gear, Integer> processImportFile(File file, List<Gear> existingEntities) { @@ -201,7 +191,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - GearModel csvModel = new GearModel(getCsvSeparator()); + GearModel csvModel = GearModel.forImport(getCsvSeparator()); try (Import<GearRow> importer = Import.newImport(csvModel, reader)) { for (GearRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index 9f20a1d..f6f8813 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -169,25 +167,15 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { public void exportTemporaryPerson(File file, List<Person> toExport) throws IOException { - PersonModel csvModel = new PersonModel(getCsvSeparator()); + try (CsvProducerForTemporaryPerson producerForTemporarySpecies = new CsvProducerForTemporaryPerson(file, getCsvSeparator())) { - List<PersonRow> toExportRows = Lists.transform(toExport, new Function<Person, PersonRow>() { - @Override - public PersonRow apply(Person person) { - return new PersonRow(person); - } - }); - - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { - - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); + producerForTemporarySpecies.write(dataToExport); - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.person.error", file), e); } + } protected ImportRequestResult<Person, Integer> processImportFile(File file, List<Person> existingEntities) { @@ -196,7 +184,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - PersonModel csvModel = new PersonModel(getCsvSeparator()); + PersonModel csvModel = PersonModel.forImport(getCsvSeparator()); try (Import<PersonRow> importer = Import.newImport(csvModel, reader)) { for (PersonRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index 663b3f0..e22439e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -166,22 +164,11 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { public void exportTemporarySpecies(File file, List<Species> toExport) throws IOException { - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); + try (CsvProducerForTemporarySpecies producerForTemporarySpecies = new CsvProducerForTemporarySpecies(file, getCsvSeparator())) { - List<SpeciesRow> toExportRows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { - @Override - public SpeciesRow apply(Species species) { - return new SpeciesRow(species); - } - }); - - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); + producerForTemporarySpecies.write(dataToExport); - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.species.error", file), e); } @@ -194,7 +181,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); + SpeciesModel csvModel = SpeciesModel.forImport(getCsvSeparator()); try (Import<SpeciesRow> importer = Import.newImport(csvModel, reader)) { for (SpeciesRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index c1ac62d..63e0bf6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -182,28 +180,17 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } - public void exportTemporaryVessel(File file, List<Vessel> toExport) throws IOException { - VesselModel csvModel = new VesselModel(getCsvSeparator()); - - List<VesselRow> toExportRows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { - @Override - public VesselRow apply(Vessel vessel) { - return new VesselRow(vessel); - } - }); - - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + try (CsvProducerForTemporaryVessel producerForTemporaryVessel = new CsvProducerForTemporaryVessel(file, getCsvSeparator())) { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(toExport); + producerForTemporaryVessel.write(dataToExport); - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.vessel.error", file), e); } + } protected ImportRequestResult<Vessel, String> processImportFile(File file, List<Vessel> existingEntities) { @@ -212,7 +199,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - VesselModel csvModel = new VesselModel(getCsvSeparator()); + VesselModel csvModel = VesselModel.forImport(getCsvSeparator()); try (Import<VesselRow> importer = Import.newImport(csvModel, reader)) { for (VesselRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java index adcf8d9..7687178 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import org.nuiton.csv.Common; @@ -37,10 +37,32 @@ import static org.nuiton.i18n.I18n.n; */ public class GearModel extends AbstractTuttiImportExportModel<GearRow> { - public GearModel(char separator) { + public static GearModel forExport(char separator) { + + GearModel exportModel = new GearModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static GearModel forImport(char separator) { + + GearModel importModel = new GearModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public GearRow newEmptyInstance() { + return new GearRow(); + } + + protected GearModel(char separator) { super(separator); + } - // import definition + protected void forImport() { newMandatoryColumn(GearRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.gear.idNotNegative.error"))); newMandatoryColumn(GearRow.PROPERTY_NAME); @@ -48,18 +70,16 @@ public class GearModel extends AbstractTuttiImportExportModel<GearRow> { newMandatoryColumn(GearRow.PROPERTY_SCIENTIFIC_GEAR, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn(GearRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(GearRow.PROPERTY_ID); newColumnForExport(GearRow.PROPERTY_NAME); newColumnForExport(GearRow.PROPERTY_LABEL); newColumnForExport(GearRow.PROPERTY_SCIENTIFIC_GEAR, Common.PRIMITIVE_BOOLEAN); newColumnForExport(GearRow.PROPERTY_TO_DELETE); - } - @Override - public GearRow newEmptyInstance() { - return new GearRow(); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java index 1f67b75..4acc2e4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import static org.nuiton.i18n.I18n.n; @@ -36,27 +36,47 @@ import static org.nuiton.i18n.I18n.n; */ public class PersonModel extends AbstractTuttiImportExportModel<PersonRow> { - public PersonModel(char separator) { + public static PersonModel forExport(char separator) { + + PersonModel exportModel = new PersonModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static PersonModel forImport(char separator) { + + PersonModel importModel = new PersonModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public PersonRow newEmptyInstance() { + return new PersonRow(); + } + + protected PersonModel(char separator) { super(separator); + } - // import definition + protected void forImport() { newMandatoryColumn(PersonRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.person.idNotNegative.error"))); newMandatoryColumn(PersonRow.PROPERTY_FIRST_NAME); newMandatoryColumn(PersonRow.PROPERTY_LAST_NAME); newMandatoryColumn(PersonRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(PersonRow.PROPERTY_ID); newColumnForExport(PersonRow.PROPERTY_FIRST_NAME); newColumnForExport(PersonRow.PROPERTY_LAST_NAME); newColumnForExport(PersonRow.PROPERTY_TO_DELETE); - } - @Override - public PersonRow newEmptyInstance() { - return new PersonRow(); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java index 767ada4..a2be5d3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import static org.nuiton.i18n.I18n.n; @@ -36,25 +36,45 @@ import static org.nuiton.i18n.I18n.n; */ public class SpeciesModel extends AbstractTuttiImportExportModel<SpeciesRow> { - public SpeciesModel(char separator) { - super(separator); + public static SpeciesModel forExport(char separator) { + + SpeciesModel exportModel = new SpeciesModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static SpeciesModel forImport(char separator) { + + SpeciesModel importModel = new SpeciesModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public SpeciesRow newEmptyInstance() { + return new SpeciesRow(); + } - // import definition + protected void forImport() { newMandatoryColumn(SpeciesRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.species.idNotNegative.error"))); newMandatoryColumn(SpeciesRow.PROPERTY_NAME); newMandatoryColumn(SpeciesRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(SpeciesRow.PROPERTY_ID); newColumnForExport(SpeciesRow.PROPERTY_NAME); newColumnForExport(SpeciesRow.PROPERTY_TO_DELETE); + } - @Override - public SpeciesRow newEmptyInstance() { - return new SpeciesRow(); + protected SpeciesModel(char separator) { + super(separator); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java index d0630f6..9c02179 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.referential.csv; import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import org.apache.commons.lang3.StringUtils; import org.nuiton.csv.Common; @@ -39,10 +39,32 @@ import static org.nuiton.i18n.I18n.t; */ public class VesselModel extends AbstractTuttiImportExportModel<VesselRow> { - public VesselModel(char separator) { + public static VesselModel forExport(char separator) { + + VesselModel exportModel = new VesselModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static VesselModel forImport(char separator) { + + VesselModel importModel = new VesselModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public VesselRow newEmptyInstance() { + return new VesselRow(); + } + + protected VesselModel(char separator) { super(separator); + } - // import definition + protected void forImport() { newMandatoryColumn(VesselRow.PROPERTY_ID, new Common.StringValueParser() { @@ -71,18 +93,16 @@ public class VesselModel extends AbstractTuttiImportExportModel<VesselRow> { newMandatoryColumn(VesselRow.PROPERTY_SCIENTIFIC_VESSEL, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn(VesselRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(VesselRow.PROPERTY_ID); newColumnForExport(VesselRow.PROPERTY_NAME); newColumnForExport(VesselRow.PROPERTY_INTERNATIONAL_REGISTRATION_CODE); newColumnForExport(VesselRow.PROPERTY_SCIENTIFIC_VESSEL, Common.PRIMITIVE_BOOLEAN); newColumnForExport(VesselRow.PROPERTY_TO_DELETE); - } - @Override - public VesselRow newEmptyInstance() { - return new VesselRow(); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java new file mode 100644 index 0000000..9789834 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.GearModel; +import fr.ifremer.tutti.service.referential.csv.GearRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporaryGear extends CsvProducer<GearRow, GearModel> { + + public CsvProducerForTemporaryGear(File file, char separator) { + super(file, GearModel.forImport(separator)); + } + + public List<GearRow> getDataToExport(List<Gear> toExport) { + + List<GearRow> rows = Lists.transform(toExport, new Function<Gear, GearRow>() { + @Override + public GearRow apply(Gear Gear) { + return new GearRow(Gear); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java new file mode 100644 index 0000000..2e1d2fe --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.PersonModel; +import fr.ifremer.tutti.service.referential.csv.PersonRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporaryPerson extends CsvProducer<PersonRow, PersonModel> { + + public CsvProducerForTemporaryPerson(File file, char separator) { + super(file, PersonModel.forExport(separator)); + } + + public List<PersonRow> getDataToExport(List<Person> toExport) { + + List<PersonRow> rows = Lists.transform(toExport, new Function<Person, PersonRow>() { + @Override + public PersonRow apply(Person Person) { + return new PersonRow(Person); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java new file mode 100644 index 0000000..1d82559 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.SpeciesModel; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporarySpecies extends CsvProducer<SpeciesRow, SpeciesModel> { + + public CsvProducerForTemporarySpecies(File file, char separator) { + super(file, SpeciesModel .forExport(separator)); + } + + public List<SpeciesRow> getDataToExport(List<Species> toExport) { + + List<SpeciesRow> rows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { + @Override + public SpeciesRow apply(Species species) { + return new SpeciesRow(species); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java new file mode 100644 index 0000000..da9381b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.VesselModel; +import fr.ifremer.tutti.service.referential.csv.VesselRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporaryVessel extends CsvProducer<VesselRow, VesselModel> { + + public CsvProducerForTemporaryVessel(File file, char separator) { + super(file, VesselModel.forExport(separator)); + } + + public List<VesselRow> getDataToExport(List<Vessel> toExport) { + + List<VesselRow> rows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { + @Override + public VesselRow apply(Vessel Vessel) { + return new VesselRow(Vessel); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java index b4a3c49..9676c8f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.birt.core.exception.BirtException; @@ -174,7 +174,7 @@ public class ReportService extends AbstractTuttiService { // export fishing operation progressionModel.increments(t("tutti.report.step.export.fishingOperation")); - File exportDirectory = getService(TuttiExportService.class). + File exportDirectory = getService(GenericFormatExportService.class). exportFishingOperation(model.getCruiseId(), model.getFishingOperationId()); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService2Test.java similarity index 98% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService2Test.java index d1c852b..275e40b 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService2Test.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -44,7 +44,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 2.3.2 */ -public class TuttiExportService2Test { +public class GenericFormatExportService2Test { @ClassRule public static final ServiceDbResource dbResource = @@ -60,7 +60,7 @@ public class TuttiExportService2Test { public static final String OPERATION_3_ID = "100114"; - protected TuttiExportService service; + protected GenericFormatExportService service; protected ServiceDbResource.DataContext dataContext; @@ -77,7 +77,7 @@ public class TuttiExportService2Test { TuttiServiceContext serviceContext = dbResource.getServiceContext(); - service = serviceContext.getService(TuttiExportService.class); + service = serviceContext.getService(GenericFormatExportService.class); } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceAno5804Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java similarity index 92% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceAno5804Test.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java index 3dd2413..e579cc0 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceAno5804Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -42,13 +42,13 @@ import java.io.File; * @author Tony Chemit - chemit@codelutin.com * @since XXX */ -public class TuttiExportServiceAno5804Test { +public class GenericFormatExportServiceAno5804Test { @ClassRule public static final ServiceDbResource dbResource = ServiceDbResource.readDb("dbAno5804"); - protected TuttiExportService service; + protected GenericFormatExportService service; protected PersistenceService persistenceService; @@ -82,7 +82,7 @@ public class TuttiExportServiceAno5804Test { dbResource.setCountryInConfig("12"); dbResource.openDataContext(); - service = serviceContext.getService(TuttiExportService.class); + service = serviceContext.getService(GenericFormatExportService.class); dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3, OPERATION_1_ID, OPERATION_2_ID, OPERATION_3_ID); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java similarity index 98% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index 9019a77..988ef78 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -46,7 +46,7 @@ import java.util.Map; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class TuttiExportServiceTest { +public class GenericFormatExportServiceTest { @ClassRule public static final ServiceDbResource dbResource = @@ -190,7 +190,7 @@ public class TuttiExportServiceTest { public static final int NB_EXPECTED_CGFS_OPERATIONS = 106; - protected TuttiExportService service; + protected GenericFormatExportService service; protected PersistenceService persistenceService; @@ -212,7 +212,7 @@ public class TuttiExportServiceTest { dbResource.setCountryInConfig("12"); dbResource.openDataContext(); - service = serviceContext.getService(TuttiExportService.class); + service = serviceContext.getService(GenericFormatExportService.class); dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 2, OPERATION_1_ID, OPERATION_2_ID); @@ -396,7 +396,7 @@ public class TuttiExportServiceTest { try { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); - service.exportSpecies(exportContext, exportContext.getSpeciesToExport()); + service.exportSpecies(exportContext); } finally { exportContext.close(); } @@ -492,8 +492,8 @@ public class TuttiExportServiceTest { exportContext.addSpecies(allReferentSpeciesById.get("35884")); exportContext.addSpecies(allReferentSpeciesById.get("19279")); - service.exportSpecies(exportContext, - exportContext.getSpeciesToExport()); + service.exportSpecies(exportContext + ); } finally { exportContext.close(); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index 1b6db2c..f1387ed 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -39,7 +39,7 @@ import fr.ifremer.tutti.service.catches.WeightCleaningService; import fr.ifremer.tutti.service.catches.WeightComputingService; import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.service.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService; import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; import fr.ifremer.tutti.service.operationimport.FishingOperationImportService; @@ -721,8 +721,8 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage return serviceContext.getService(CatchesPdfExportService.class); } - public TuttiExportService getTuttiExportService() { - return serviceContext.getService(TuttiExportService.class); + public GenericFormatExportService getTuttiExportService() { + return serviceContext.getService(GenericFormatExportService.class); } public CatchesSumatraExportService getCatchesSumatraExportService() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java index 08b098f..b66ef48 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.service.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; @@ -94,7 +94,7 @@ public class ExportCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, log.info("Will save cruise " + cruise.getId() + " to file: " + file); } - TuttiExportService service = getContext().getTuttiExportService(); + GenericFormatExportService service = getContext().getTuttiExportService(); ProgressionModel progressionModel = service.createExportCruiseProgessionModel(); setProgressionModel(progressionModel); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java index fd1f231..2c4c09e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.service.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; @@ -92,7 +92,7 @@ public class ExportProgramAction extends AbstractTuttiAction<SelectCruiseUIModel log.info("Will save program " + program.getId() + " to file: " + file); } - TuttiExportService service = getContext().getTuttiExportService(); + GenericFormatExportService service = getContext().getTuttiExportService(); ProgressionModel progressionModel = service.createExportProgramProgessionModel(program.getId()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java index 75105d9..9153729 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.util.caracteristics; import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import org.apache.commons.collections4.MapUtils; import org.nuiton.csv.ValueFormatter; import org.nuiton.decorator.Decorator; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f2d889327cf4a81b149575f488973b3393634c56 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:38:09 2015 +0100 utilisation label du pays à la place de son libellé --- .../java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index 6ae4412..336eedf 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -64,7 +64,7 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER); - newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiLocation.PROPERTY_NAME); + newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiLocation.PROPERTY_LABEL); newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME); newColumnForExport("Campagne", Cruise.PROPERTY_NAME); newColumnForExport("Id_Sismer", SurveyRow.PROPERTY_ID_SISMER); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f409b58b4a96dfda17f6e1fb1ca94ac9d53b85bc Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:38:30 2015 +0100 correction du nom du fichier d'export --- .../service/genericformat/producer/CsvProducerForMarineLitter.java | 2 +- .../tutti/service/genericformat/producer/CsvProducerForOperation.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java index d6a8e61..6e6b5f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java @@ -21,7 +21,7 @@ import java.util.List; public class CsvProducerForMarineLitter extends CsvProducer<MarineLitterRow, MarineLitterModel> { public CsvProducerForMarineLitter(File basedir, MarineLitterModel model) { - super(new File(basedir, "survey.csv"), model); + super(new File(basedir, "marineLitter.csv"), model); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java index d2f8b4d..50e0101 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java @@ -18,7 +18,7 @@ import java.io.File; public class CsvProducerForOperation extends CsvProducer<OperationRow, OperationModel> { public CsvProducerForOperation(File basedir, OperationModel model) { - super(new File(basedir, "survey.csv"), model); + super(new File(basedir, "operation.csv"), model); } public OperationRow getDataToExport(Cruise cruise, FishingOperation operation, CatchBatch catchBatch) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 7aefa1dd9c54657dd45df36febc8740b2130297f Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:38:53 2015 +0100 normalisation nom colonne sur les taxons --- .../fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index 7e21971..2f10039 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -48,7 +48,7 @@ public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesEx protected void forExport() { - newColumnForExport("Id", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("ReferenceTaxonId", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REF_TAX_CODE); newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_NAME); newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f7d688ea7040074825a146dd54f8da27ebcb7363 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:44:55 2015 +0100 ajout gearRankOrder sur export des caractéristiques des engins --- .../tutti/service/genericformat/csv/GearCaracteristicModel.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index aa20683..0c20959 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -65,7 +66,10 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + newColumnForExport("Engin", GearCaracteristicRow.PROPERTY_GEAR, Gear.PROPERTY_NAME); + newColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID); newColumnForExportByDecorator("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); newColumnForExport("Valeur", GearCaracteristicRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 9a4b1ab1fdf7407884290f83fcf5bb14755a84b1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:45:32 2015 +0100 ajout parser formatter de Short -a deplacer dans nuiton-csv --- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 38 +++++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 9e16ce2..9dde632 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -29,15 +29,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.csv.BeanPropertyFormatter; -import fr.ifremer.tutti.service.csv.CaracteristicValueFormatter; -import fr.ifremer.tutti.service.csv.DecoratorPropertyFormatter; -import fr.ifremer.tutti.service.csv.ListGearFormatter; -import fr.ifremer.tutti.service.csv.ListIntegerFormatter; -import fr.ifremer.tutti.service.csv.ListPersonFormatter; -import fr.ifremer.tutti.service.csv.ListVesselFormatter; -import fr.ifremer.tutti.service.csv.TuttiRepeatableExport; -import fr.ifremer.tutti.service.csv.VesselFormatter; import fr.ifremer.tutti.util.Weights; import org.nuiton.csv.Common; import org.nuiton.csv.ExportModel; @@ -131,6 +122,35 @@ public class TuttiCsvUtil extends Common { } }; + public static ValueParserFormatter<Short> SHORT = new ShortParserFormatter(null, true); + + public static class ShortParserFormatter extends NullableParserFormatter<Short> { + + public ShortParserFormatter(Short defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } + + @Override + public String format(Short value) { + String str = ""; + if (value != null) { + str = String.valueOf(value); + } + return str; + } + + @Override + protected Short parseNoneEmptyValue(String value) { + Float aFloat = Float.valueOf(value); + if (aFloat > Short.MAX_VALUE) { + // too big + throw new IllegalArgumentException(value + " is too big to be an short, should be a integer."); + } + return aFloat.shortValue(); + } + } + + public static final ValueParserFormatter<String> COMMENT_PARSER_FORMATTER = new ValueParserFormatter<String>() { @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit a0db8aaff50181ace7eabdb8ea2b90318093f1f6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:46:42 2015 +0100 fix i18n --- tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties | 1 + tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties | 1 + 2 files changed, 2 insertions(+) diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index befdb31..6404694 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -81,6 +81,7 @@ tutti.service.export.accidentalCatch.error= tutti.service.export.catches.error= tutti.service.export.closeContext.error= tutti.service.export.context.error= +tutti.service.export.gearCaracteristics.error= tutti.service.export.individualObservations.error= tutti.service.export.invalid.cruise= tutti.service.export.invalid.fishingOperation= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 98ae40f..7abbbf5 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -70,6 +70,7 @@ tutti.service.export.accidentalCatch.error=Erreur lors de l'export des captures tutti.service.export.catches.error=Erreur lors de l'export des captures tutti.service.export.closeContext.error=Erreur lors de la fermeture du contexte d'export tutti.service.export.context.error=Erreur lors de la création des fichiers pour l'export +tutti.service.export.gearCaracteristics.error=Erreur lors de l'export des caractéristiques des engins tutti.service.export.individualObservations.error=Erreur lors de l'export des observations individuelles tutti.service.export.invalid.cruise=Erreur d'élévation de poids sur les traits de la campagne %s \:<ul>%s</ul> tutti.service.export.invalid.fishingOperation=<li>L'élévation des poids ne peut pas être réalisée sur le trait %s, pour la raison suivante \:<ul><li>%s</li></ul></li> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit ad5140dbfe91dd0b6fc2cbe3da2abc4b8b72f7d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:58:25 2015 +0100 revue de comment on export les navires associés --- .../tutti/service/csv/ListVesselFormatter.java | 24 ++++++++++------------ .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 9 +++----- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java index ce3f2ef..0ea521b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java @@ -5,31 +5,29 @@ import com.google.common.base.Joiner; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import org.nuiton.csv.ValueFormatter; -import org.nuiton.decorator.Decorator; import java.util.List; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class ListVesselFormatter implements ValueFormatter<List<Vessel>> { - final Decorator<Vessel> decorator; - - public ListVesselFormatter(Decorator<Vessel> decorator) { - this.decorator = decorator; - } - @Override public String format(List<Vessel> value) { List<String> decoratedValues = Lists.transform(value, new Function<Vessel, String>() { @Override public String apply(Vessel input) { - return decorator.toString(input); + + String result = input.getRegistrationCode(); + if (result == null) { + result = input.getInternationalRegistrationCode(); + } + return result; } }); return Joiner.on('|').join(decoratedValues); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 9dde632..d471fc5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -248,16 +248,13 @@ public class TuttiCsvUtil extends Common { public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = new CaracteristicValueFormatter(); - public static final ValueFormatter<Vessel> VESSEL_VALUE_FORMATTER = new VesselFormatter(); + public static final ValueFormatter<Vessel> VESSEL_FORMATTER = new VesselFormatter(); public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = new ListPersonFormatter(); - public static ListVesselFormatter newListVesselFormatter(Decorator<Vessel> decorator) { - return new ListVesselFormatter(decorator); - } + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = new ListVesselFormatter(); - public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = - new ListIntegerFormatter(); + public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); public static final ValueFormatter<List<Gear>> LIST_GEAR_FORMATTER = new ListGearFormatter(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 045aa840dbbb8f4911f1f56e3d31a2706744e37c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 12:58:47 2015 +0100 renommage formater --- .../java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index 336eedf..a4f038d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -63,7 +63,7 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER); + newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER); newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiLocation.PROPERTY_LABEL); newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME); newColumnForExport("Campagne", Cruise.PROPERTY_NAME); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit dcf765468d1965a290b5fa72c57015c761746758 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 13:04:06 2015 +0100 ajout EnginRankOrder + renommage formatters --- .../fr/ifremer/tutti/service/genericformat/csv/OperationModel.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index cd4309c..8dd47a5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -84,12 +84,15 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); - newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER); + newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + + newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER); newColumnForExport("DateDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND); newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT); newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT); @@ -104,7 +107,7 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN); newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.INTEGER_NULL_TO_9); newColumnForExport("Saisisseur", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.LIST_PERSON_FORMATTER); - newColumnForExport("Navire_Associe", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.newListVesselFormatter(vesselDecorator)); + newColumnForExport("Navire_Associe", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.LIST_VESSEL_FORMATTER); newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newNullableColumnForExport("Poids_Total", OperationRow.PROPERTY_CATCH_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit eec189066c1cc644f2aa7da533e8fc2dbf828dbe Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 13:18:34 2015 +0100 uniformisation des colonnes de l'export + ajout d'EnginRankOrder --- .../tutti/service/genericformat/csv/AccidentalCatchModel.java | 3 ++- .../ifremer/tutti/service/genericformat/csv/CatchModel.java | 11 +++++++---- .../service/genericformat/csv/IndividualObservationModel.java | 10 ++++++---- .../tutti/service/genericformat/csv/MarineLitterModel.java | 1 + 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index b9805ae..5668570 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -78,10 +78,11 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("BatchId", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index bd78bf3..5ae5c28 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -81,11 +81,14 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + + newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); @@ -99,7 +102,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); -// newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); + newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); } @@ -131,7 +134,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); - newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); // newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); // newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index 66dfef4..ee3f059 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -30,8 +30,8 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -63,6 +63,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I IndividualObservationRow row = new IndividualObservationRow(); row.setCruise(Cruises.newCruise()); + return row; } @@ -76,10 +77,12 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); @@ -101,8 +104,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); - //FIXME What can we do with that ? - newMandatoryColumn("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); +// newMandatoryColumn("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newMandatoryColumn("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); // newMandatoryColumn("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 12f1957..e38a774 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -79,6 +79,7 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); newColumnForExport("MarineLitterSizeCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6492f787d0230ff0e6414fb0caa9ab0e063995d5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 14:54:10 2015 +0100 no more need of decoratorService to export vessels --- .../tutti/service/genericformat/GlobalExportContext.java | 2 +- .../tutti/service/genericformat/csv/OperationModel.java | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java index d449c18..15c228d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -116,7 +116,7 @@ public class GlobalExportContext implements Closeable { this.producerForSurvey = new CsvProducerForSurvey(basedir, SurveyModel.forExport(csvSeparator)); this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(basedir, GearCaracteristicModel.forExport(csvSeparator, decoratorService)); - this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator, decoratorService)); + this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator)); this.producerForIndividualObservation = new CsvProducerForIndividualObservation(basedir, IndividualObservationModel.forExport(csvSeparator)); this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesById); this.producerForCatch = new CsvProducerForCatch(basedir, CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 8dd47a5..39f12c4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -30,12 +30,9 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import org.nuiton.decorator.Decorator; /** * Model of a operation export. @@ -45,10 +42,10 @@ import org.nuiton.decorator.Decorator; */ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> { - public static OperationModel forExport(char separator, DecoratorService decoratorService) { + public static OperationModel forExport(char separator) { OperationModel exportModel = new OperationModel(separator); - exportModel.forExport(decoratorService); + exportModel.forExport(); return exportModel; } @@ -77,9 +74,7 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - protected void forExport(DecoratorService decoratorService) { - - Decorator<Vessel> vesselDecorator = decoratorService.getDecoratorByType(Vessel.class); + protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit e03f99d6701a6885a089618a0866c12b99e69ed7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 7 14:54:36 2015 +0100 - add Benthos column on catch export - clean code --- .../service/genericformat/csv/CatchModel.java | 6 +- .../tutti/service/genericformat/csv/CatchRow.java | 16 +-- .../producer/CsvProducerForCatch.java | 151 ++++++++++++--------- 3 files changed, 96 insertions(+), 77 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 5ae5c28..d5343cc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -33,8 +33,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -91,6 +91,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { @@ -135,11 +136,12 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); newMandatoryColumn("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); // newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); // newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - //FIXME + //TODO for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { String headerPrefix = entry.getCode(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java index 74938d9..7fbc73d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java @@ -54,6 +54,8 @@ public class CatchRow implements Serializable { /** Logger. */ private static final Log log = LogFactory.getLog(CatchRow.class); + public static final String PROPOERTY_BENTHOS = "benthos"; + public static final String FREQUENCY_LENGTH_STEP = "frequency.lengthStep"; public static final String FREQUENCY_NUMBER = "frequency.number"; @@ -76,8 +78,6 @@ public class CatchRow implements Serializable { public static final String FINAL_RAISING_FACTOR = "finalRaisingFactor"; - public static final String BENTHOS_ROW = "benthosRow"; - protected Cruise cruise; protected FishingOperation fishingOperation; @@ -100,15 +100,15 @@ public class CatchRow implements Serializable { protected String batchWeightUnit; - protected final boolean benthosRow; + protected final boolean benthos; protected final boolean vrac; protected final List<String> comment = new ArrayList<>(); - public CatchRow(boolean vrac, boolean benthosRow) { + public CatchRow(boolean vrac, boolean benthos) { this.vrac = vrac; - this.benthosRow = benthosRow; + this.benthos = benthos; } public void setCruise(Cruise cruise) { @@ -235,12 +235,12 @@ public class CatchRow implements Serializable { return !isVrac(); } - public boolean isBenthosRow() { - return benthosRow; + public boolean isBenthos() { + return benthos; } public CatchRow copy() { - CatchRow result = new CatchRow(vrac, benthosRow); + CatchRow result = new CatchRow(vrac, benthos); result.setCruise(cruise); result.setFishingOperation(fishingOperation); result.sampleCategory.addAll(sampleCategory); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index d5033df..749220a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -48,37 +48,28 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { Caracteristic weightMeasuredCaracteristic = operationExportContext.getWeightMeasuredCaracteristic(); String batchWeightUnit = weightMeasuredCaracteristic.getUnit(); - for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { - - boolean vracBatch = operationExportContext.isVracBatch(speciesBatch); - - CatchRow row = new CatchRow(vracBatch, false); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setSpecies(speciesBatch.getSpecies()); - row.setBatchWeightUnit(batchWeightUnit); + addSpeciesBatches(operationExportContext, rootSpeciesBatch, speciesCatchRaisingFactor, batchWeightUnit, rows); + addBenthosBatches(operationExportContext, rootBenthosBatch, benthosCatchRaisingFactor, batchWeightUnit, rows); - float raisingFactor = speciesCatchRaisingFactor; + // compute final raising factor + // see http://forge.codelutin.com/issues/4135 + // see http://forge.codelutin.com/issues/5110 + for (CatchRow row : rows) { - if (!vracBatch) { + float finalRaisingFactor = computeFinalRaisingFactor(row, speciesCatchRaisingFactor, benthosCatchRaisingFactor); + row.setFinalRaisingFactor(finalRaisingFactor); - // for HV, always use a 1.0 raising factor - raisingFactor = 1.f; - } + } - Float batchWeight = Numbers.getValueOrComputedValue( - speciesBatch.getSampleCategoryWeight(), - speciesBatch.getSampleCategoryComputedWeight()); + return rows; - float totalBatchWeight = batchWeight == null ? 0 : raisingFactor * batchWeight; + } - addSpeciesBatch(operationExportContext, - row, - rows, - speciesBatch, - totalBatchWeight - ); - } + protected void addBenthosBatches(OperationExportContext operationExportContext, + BatchContainer<BenthosBatch> rootBenthosBatch, + Float benthosCatchRaisingFactor, + String batchWeightUnit, + List<CatchRow> rows) { for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { @@ -108,52 +99,49 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { row, rows, benthosBatch, - totalBatchWeight - ); - } + totalBatchWeight); - // compute final raising factor - // see http://forge.codelutin.com/issues/4135 - // see http://forge.codelutin.com/issues/5110 - for (CatchRow row : rows) { + } - float finalRaisingFactor; + } - if (row.isVrac()) { + protected void addSpeciesBatches(OperationExportContext operationExportContext, + BatchContainer<SpeciesBatch> rootSpeciesBatch, + Float speciesCatchRaisingFactor, + String batchWeightUnit, + List<CatchRow> rows) { - finalRaisingFactor = row.isBenthosRow() ? benthosCatchRaisingFactor : speciesCatchRaisingFactor; + for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { - } else { + boolean vracBatch = operationExportContext.isVracBatch(speciesBatch); - finalRaisingFactor = 1f; + CatchRow row = new CatchRow(vracBatch, false); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setSpecies(speciesBatch.getSpecies()); + row.setBatchWeightUnit(batchWeightUnit); - } + float raisingFactor = speciesCatchRaisingFactor; - for (ExportSampleCategory exportSampleCategory : row.getSampleCategory()) { + if (!vracBatch) { - if (exportSampleCategory != null) { - Float totalWeight = exportSampleCategory.getCategoryWeight(); - Float sampleWeight = Numbers.getValueOrComputedValue( - exportSampleCategory.getSampleWeight(), - exportSampleCategory.getSampleComputedWeight()); + // for HV, always use a 1.0 raising factor + raisingFactor = 1.f; + } - if (totalWeight != null && sampleWeight != null && sampleWeight != 0f) { + Float batchWeight = Numbers.getValueOrComputedValue( + speciesBatch.getSampleCategoryWeight(), + speciesBatch.getSampleCategoryComputedWeight()); + float totalBatchWeight = batchWeight == null ? 0 : raisingFactor * batchWeight; - float currentRate = totalWeight / sampleWeight; - if (Weights.isNotEqualWeight(1.0f, currentRate)) { + addSpeciesBatch(operationExportContext, + row, + rows, + speciesBatch, + totalBatchWeight); - // the only case which can change the final rate - finalRaisingFactor *= currentRate; - } - } - } - } - row.setFinalRaisingFactor(finalRaisingFactor); } - - return rows; - } protected void addSpeciesBatch(OperationExportContext operationExportContext, @@ -292,16 +280,6 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { Integer rankOrder = benthosBatch.getRankOrder(); - if (currentRow.getSampleCategory().isEmpty()) { - - //FIXME Remove this when improve export for import - // See http://forge.codelutin.com/issues/5175 - // See http://forge.codelutin.com/issues/5754 - // Add 1000 to each benthos only batch rank-order - - rankOrder += 1000; - } - addBatchSampleCategory(operationExportContext.getSampleCategoryModel(), currentRow, benthosBatch.getSampleCategoryId(), @@ -407,6 +385,45 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } } + protected float computeFinalRaisingFactor(CatchRow row, Float speciesCatchRaisingFactor, Float benthosCatchRaisingFactor) { + + float finalRaisingFactor; + + if (row.isVrac()) { + + finalRaisingFactor = row.isBenthos() ? benthosCatchRaisingFactor : speciesCatchRaisingFactor; + + } else { + + finalRaisingFactor = 1f; + + } + + for (ExportSampleCategory exportSampleCategory : row.getSampleCategory()) { + + if (exportSampleCategory != null) { + Float totalWeight = exportSampleCategory.getCategoryWeight(); + Float sampleWeight = Numbers.getValueOrComputedValue( + exportSampleCategory.getSampleWeight(), + exportSampleCategory.getSampleComputedWeight()); + + if (totalWeight != null && sampleWeight != null && sampleWeight != 0f) { + + + float currentRate = totalWeight / sampleWeight; + if (Weights.isNotEqualWeight(1.0f, currentRate)) { + + // the only case which can change the final rate + finalRaisingFactor *= currentRate; + } + } + } + } + + return finalRaisingFactor; + + } + protected void setRaisingFactor(CatchRow row, float totalBatchWeight, Float referenceWeight) { row.setReferenceWeight(referenceWeight); row.setRaisingFactor(referenceWeight == null ? 1.0f : (totalBatchWeight / referenceWeight)); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 9b885ba813850b9fc816e604210b8ee1ccbf2e5d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 13:04:12 2015 +0100 use more precise function name --- .../ifremer/tutti/persistence/TuttiPersistenceImpl.java | 2 +- .../persistence/entities/referential/Speciess.java | 17 +++++++---------- .../referential/SpeciesPersistenceServiceReadTest.java | 2 +- .../fr/ifremer/tutti/service/PersistenceService.java | 4 ++-- .../service/csv/AbstractTuttiImportExportModel.java | 2 +- .../tutti/ui/swing/action/ImportProtocolAction.java | 2 +- .../action/SelectSpeciesForBenthosBatchAction.java | 2 +- ...electSpeciesForIndividualObservationBatchAction.java | 2 +- .../action/SelectSpeciesForSpeciesBatchAction.java | 2 +- .../swing/content/protocol/EditProtocolUIHandler.java | 3 +-- 10 files changed, 17 insertions(+), 21 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 0a96870..f45dd85 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -817,7 +817,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { // see http://forge.codelutin.com/issues/4154 List<Species> allReferentSpecies = getAllReferentSpecies(); - Map<String, Species> map = Speciess.splitByTaxonId(allReferentSpecies); + Map<String, Species> map = Speciess.splitByReferenceTaxonId(allReferentSpecies); if (!protocol.isSpeciesEmpty()) { Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index fc547d8..fddb39f 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -78,7 +78,7 @@ public class Speciess extends AbstractSpeciess { }; - public static final Function<Species, String> GET_TAXON_ID = new Function<Species, String>() { + public static final Function<Species, String> GET_REFERECE_TAXON_ID = new Function<Species, String>() { @Override public String apply(Species input) { return String.valueOf(input.getReferenceTaxonId()); @@ -106,12 +106,8 @@ public class Speciess extends AbstractSpeciess { } }; - public static Map<String, Species> splitByTaxonId(Iterable<Species> list) { - return Maps.uniqueIndex(list, GET_TAXON_ID); - } - - public static Multimap<String, Species> splitByReferenceTaxonId(Iterable<Species> list) { - return Multimaps.index(list, GET_TAXON_ID); + public static Map<String, Species> splitByReferenceTaxonId(Iterable<Species> list) { + return Maps.uniqueIndex(list, GET_REFERECE_TAXON_ID); } public static Multimap<String, Species> splitByRefTaxCode(Iterable<Species> list) { @@ -122,10 +118,11 @@ public class Speciess extends AbstractSpeciess { return Multimaps.index(list, GET_SURVEY_CODE); } - public static Set<String> toTaxonIds(List<Species> list) { + public static Set<String> toReferenceTaxonIds(List<Species> list) { Set<String> result = list == null ? Collections.<String>emptySet() : - Sets.newHashSet(Lists.transform(list, GET_TAXON_ID)); + Sets.newHashSet(Lists.transform(list, GET_REFERECE_TAXON_ID)); return result; } -} //Speciess + +} diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java index bf2f0e8..1be7bf9 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java @@ -57,7 +57,7 @@ public class SpeciesPersistenceServiceReadTest extends ReferentialPersistenceSer TuttiEntities.splitById(result); assertResultList(result, fixtures.refNbReferentSpecies()); - Speciess.splitByTaxonId(result); + Speciess.splitByReferenceTaxonId(result); } @Test diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 59e208d..5c72706 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -540,7 +540,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isSpeciesEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitByReferenceTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getSpecies()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); @@ -574,7 +574,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isBenthosEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitByReferenceTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getBenthos()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index f915145..09148ef 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -55,7 +55,7 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx if (species == null) { species = Lists.newArrayList(); } - Map<String, Species> universe = Speciess.splitByTaxonId(species); + Map<String, Species> universe = Speciess.splitByReferenceTaxonId(species); newForeignKeyColumn(propertyName, Species.class, foreignKeyName, universe); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java index 189adc5..d4c8c26 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java @@ -117,7 +117,7 @@ public class ImportProtocolAction extends AbstractChangeScreenAction { if (doAction) { - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByReferenceTaxonId( getDataContext().getReferentSpecies()); // clean species diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java index 8d8cab8..48b8e24 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForBenthosBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java index e5795d6..0ca62ca 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java @@ -84,7 +84,7 @@ public class SelectSpeciesForIndividualObservationBatchAction extends AbstractTu if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java index 174b73a..0d341e3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForSpeciesBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 573498a..44e9159 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.ui.swing.content.protocol; import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; @@ -186,7 +185,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI Speciess.splitByReferenceTaxonId(allSpecies); model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByReferenceTaxonId( getDataContext().getReferentSpecies()); model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit cacb25e8648c06879e493a0c30093aec9a5c561c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 13:08:00 2015 +0100 - introduce technical parser formatter - introduce none technical formatter for all entities used in generic ie (if anything need to be modified, let's do it in formatter but not in model) --- .../persistence/entities/referential/Vessels.java | 12 ++++++ .../csv/CaracteristicTechnicalFormatter.java | 22 ++++++++++ ...rser.java => CaracteristicTechnicalParser.java} | 4 +- .../tutti/service/csv/CountryFormatter.java | 23 ++++++++++ .../csv/FishingOperationLocationFormatter.java | 19 ++++++++ ...FishingOperationLocationTechnicalFormatter.java | 19 ++++++++ ...> FishingOperationLocationTechnicalParser.java} | 16 +++---- .../csv/FishingOperationStrataFormatter.java | 19 ++++++++ .../FishingOperationStrataTechnicalFormatter.java | 19 ++++++++ ... => FishingOperationStrataTechnicalParser.java} | 16 +++---- .../csv/FishingOperationSubStrataFormatter.java | 19 ++++++++ ...ishingOperationSubStrataTechnicalFormatter.java | 19 ++++++++ ... FishingOperationSubStrataTechnicalParser.java} | 16 +++---- .../ifremer/tutti/service/csv/GearFormatter.java | 23 ++++++++++ .../tutti/service/csv/GearTechnicalFormatter.java | 23 ++++++++++ .../{GearParser.java => GearTechnicalParser.java} | 16 +++---- .../tutti/service/csv/HarbourFormatter.java | 23 ++++++++++ .../service/csv/HarbourTechnicalFormatter.java | 23 ++++++++++ ...bourParser.java => HarbourTechnicalParser.java} | 8 ++-- .../tutti/service/csv/ListGearFormatter.java | 30 ------------- .../tutti/service/csv/ListPersonFormatter.java | 22 ++++------ .../service/csv/ListPersonTechnicalFormatter.java | 25 +++++++++++ ...nParser.java => ListPersonTechnicalParser.java} | 19 ++++---- .../tutti/service/csv/ListVesselFormatter.java | 18 ++------ .../service/csv/ListVesselTechnicalFormatter.java | 25 +++++++++++ ...lParser.java => ListVesselTechnicalParser.java} | 21 +++------ .../tutti/service/csv/ProgramFormatter.java | 23 ++++++++++ .../service/csv/ProgramTechnicalFormatter.java | 23 ++++++++++ ...gramParser.java => ProgramTechnicalParser.java} | 24 +++++------ .../tutti/service/csv/ProgramZoneFormatter.java | 23 ++++++++++ .../service/csv/SpeciesTechnicalFormatter.java | 23 ++++++++++ ...ciesParser.java => SpeciesTechnicalParser.java} | 4 +- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 42 +++++++++++++++++- .../ifremer/tutti/service/csv/VesselFormatter.java | 16 +++---- .../fr/ifremer/tutti/service/csv/VesselParser.java | 50 ---------------------- .../service/csv/VesselTechnicalFormatter.java | 23 ++++++++++ .../tutti/service/csv/VesselTechnicalParser.java | 43 +++++++++++++++++++ 37 files changed, 599 insertions(+), 194 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java index d91161f..e4ba98f 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java @@ -50,6 +50,18 @@ public class Vessels extends AbstractVessels { } }; + public static Function<Vessel, String> GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE = new Function<Vessel, String>() { + @Override + public String apply(Vessel input) { + + String result = input.getRegistrationCode(); + if (result == null) { + result = input.getInternationalRegistrationCode(); + } + return result; + } + }; + public static final Function<Vessel, String> GET_REGISTRATION_CODE = new Function<Vessel, String>() { @Override public String apply(Vessel input) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java new file mode 100644 index 0000000..13b65d3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CaracteristicTechnicalFormatter implements ValueFormatter<Caracteristic> { + + @Override + public String format(Caracteristic value) { + + String result = TuttiEntities.GET_ID.apply(value); + return result; + + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java similarity index 87% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java index 7e27c22..3c93821 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java @@ -15,13 +15,13 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class CaracteristicParser implements ValueParser<Caracteristic> { +public class CaracteristicTechnicalParser implements ValueParser<Caracteristic> { private final PersistenceService persistenceService; private Map<String, Caracteristic> caracteristicsById; - public CaracteristicParser(PersistenceService persistenceService) { + public CaracteristicTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CountryFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CountryFormatter.java new file mode 100644 index 0000000..d16f5df --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CountryFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CountryFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + String result = ""; + if (value != null) { + result = TuttiLocations.GET_LABEL.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java new file mode 100644 index 0000000..f590a25 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java @@ -0,0 +1,19 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class FishingOperationLocationFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java new file mode 100644 index 0000000..fd2c9dd --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java @@ -0,0 +1,19 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class FishingOperationLocationTechnicalFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java similarity index 68% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java index c7a6018..2b65ad5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java @@ -15,15 +15,15 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class FishingOperationLocationParser implements ValueParser<TuttiLocation> { +public class FishingOperationLocationTechnicalParser implements ValueParser<TuttiLocation> { private final PersistenceService persistenceService; private final String zoneId; - private Map<String, TuttiLocation> locationsByName; + private Map<String, TuttiLocation> locationsByLabel; - public FishingOperationLocationParser(PersistenceService persistenceService, String zoneId) { + public FishingOperationLocationTechnicalParser(PersistenceService persistenceService, String zoneId) { this.persistenceService = persistenceService; this.zoneId = zoneId; } @@ -31,21 +31,21 @@ public class FishingOperationLocationParser implements ValueParser<TuttiLocation @Override public TuttiLocation parse(String value) throws ParseException { - if (locationsByName == null) { + if (locationsByLabel == null) { List<TuttiLocation> locations = persistenceService.getAllFishingOperationLocation(zoneId, null, null); - locationsByName = TuttiLocations.splitByName(locations); + locationsByLabel = TuttiLocations.splitByLabel(locations); } TuttiLocation location; - if ("NA".equals(value)) { + if ("".equals(value)) { location = null; } else { - location = locationsByName.get(value); + location = locationsByLabel.get(value); if (location == null) { - throw new ParseException("Could not found a fishing operation location with name " + value, 0); + throw new ParseException("Could not found a fishing operation location with label " + value, 0); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java new file mode 100644 index 0000000..50deedb --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java @@ -0,0 +1,19 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class FishingOperationStrataFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java new file mode 100644 index 0000000..078ae70 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java @@ -0,0 +1,19 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class FishingOperationStrataTechnicalFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java similarity index 68% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java index a9cb4bd..0d3fcef 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java @@ -15,15 +15,15 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class FishingOperationStrataParser implements ValueParser<TuttiLocation> { +public class FishingOperationStrataTechnicalParser implements ValueParser<TuttiLocation> { private final PersistenceService persistenceService; private final String zoneId; - private Map<String, TuttiLocation> locationsByName; + private Map<String, TuttiLocation> locationsByLabel; - public FishingOperationStrataParser(PersistenceService persistenceService, String zoneId) { + public FishingOperationStrataTechnicalParser(PersistenceService persistenceService, String zoneId) { this.persistenceService = persistenceService; this.zoneId = zoneId; } @@ -31,21 +31,21 @@ public class FishingOperationStrataParser implements ValueParser<TuttiLocation> @Override public TuttiLocation parse(String value) throws ParseException { - if (locationsByName == null) { + if (locationsByLabel == null) { List<TuttiLocation> locations = persistenceService.getAllFishingOperationStrata(zoneId); - locationsByName = TuttiLocations.splitByName(locations); + locationsByLabel = TuttiLocations.splitByLabel(locations); } TuttiLocation location; - if ("NA".equals(value)) { + if ("".equals(value)) { location = null; } else { - location = locationsByName.get(value); + location = locationsByLabel.get(value); if (location == null) { - throw new ParseException("Could not found a fishing operation stata with name " + value, 0); + throw new ParseException("Could not found a fishing operation stata with label " + value, 0); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java new file mode 100644 index 0000000..4eb6fb1 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java @@ -0,0 +1,19 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class FishingOperationSubStrataFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java new file mode 100644 index 0000000..9e0b399 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java @@ -0,0 +1,19 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class FishingOperationSubStrataTechnicalFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java similarity index 68% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java index 058d88c..03d4f90 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java @@ -15,15 +15,15 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class FishingOperationSubStrataParser implements ValueParser<TuttiLocation> { +public class FishingOperationSubStrataTechnicalParser implements ValueParser<TuttiLocation> { private final PersistenceService persistenceService; private final String zoneId; - private Map<String, TuttiLocation> locationsByName; + private Map<String, TuttiLocation> locationsByLabel; - public FishingOperationSubStrataParser(PersistenceService persistenceService, String zoneId) { + public FishingOperationSubStrataTechnicalParser(PersistenceService persistenceService, String zoneId) { this.persistenceService = persistenceService; this.zoneId = zoneId; } @@ -31,21 +31,21 @@ public class FishingOperationSubStrataParser implements ValueParser<TuttiLocatio @Override public TuttiLocation parse(String value) throws ParseException { - if (locationsByName == null) { + if (locationsByLabel == null) { List<TuttiLocation> locations = persistenceService.getAllFishingOperationSubStrata(zoneId, null); - locationsByName = TuttiLocations.splitByName(locations); + locationsByLabel = TuttiLocations.splitByLabel(locations); } TuttiLocation location; - if ("NA".equals(value)) { + if ("".equals(value)) { location = null; } else { - location = locationsByName.get(value); + location = locationsByLabel.get(value); if (location == null) { - throw new ParseException("Could not found a fishing operation subStata with name " + value, 0); + throw new ParseException("Could not found a fishing operation subStata with label " + value, 0); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java new file mode 100644 index 0000000..7b8a06e --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class GearFormatter implements ValueFormatter<Gear> { + + @Override + public String format(Gear value) { + String result = ""; + if (value != null) { + result = Gears.GET_NAME.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java new file mode 100644 index 0000000..5c152d2 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class GearTechnicalFormatter implements ValueFormatter<Gear> { + + @Override + public String format(Gear value) { + String result = ""; + if (value != null) { + result = TuttiEntities.GET_ID.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java similarity index 67% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java index 228e3ae..2b91dae 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java @@ -1,7 +1,7 @@ package fr.ifremer.tutti.service.csv; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.service.PersistenceService; import org.nuiton.csv.ValueParser; @@ -15,15 +15,15 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class GearParser implements ValueParser<Gear> { +public class GearTechnicalParser implements ValueParser<Gear> { private final PersistenceService persistenceService; - private Map<String, Gear> gearsByName; + private Map<String, Gear> gearsById; private boolean mandatory; - public GearParser(PersistenceService persistenceService, boolean mandatory) { + public GearTechnicalParser(PersistenceService persistenceService, boolean mandatory) { this.persistenceService = persistenceService; this.mandatory = mandatory; } @@ -31,14 +31,14 @@ public class GearParser implements ValueParser<Gear> { @Override public Gear parse(String value) throws ParseException { - if (gearsByName == null) { + if (gearsById == null) { List<Gear> gears = persistenceService.getAllGear(); - gearsByName = Gears.splitByName(gears); + gearsById = TuttiEntities.splitById(gears); } - Gear gear = gearsByName.get(value); + Gear gear = gearsById.get(value); if (gear == null && mandatory) { - throw new ParseException("Could not found a gear with name " + value, 0); + throw new ParseException("Could not found a gear with id " + value, 0); } return gear; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java new file mode 100644 index 0000000..b2c2391 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since XXX + */ +public class HarbourFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + String result = ""; + if (value != null) { + result = TuttiLocations.GET_NAME.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java new file mode 100644 index 0000000..413c83b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since XXX + */ +public class HarbourTechnicalFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + String result = ""; + if (value != null) { + result = TuttiLocations.GET_LABEL.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java similarity index 80% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java index cd61338..77b1230 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java @@ -15,13 +15,13 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class HarbourParser implements ValueParser<TuttiLocation> { +public class HarbourTechnicalParser implements ValueParser<TuttiLocation> { private final PersistenceService persistenceService; private Map<String, TuttiLocation> locationsByName; - public HarbourParser(PersistenceService persistenceService) { + public HarbourTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; } @@ -30,12 +30,12 @@ public class HarbourParser implements ValueParser<TuttiLocation> { if (locationsByName == null) { List<TuttiLocation> locations = persistenceService.getAllHarbour(); - locationsByName = TuttiLocations.splitByName(locations); + locationsByName = TuttiLocations.splitByLabel(locations); } TuttiLocation location = locationsByName.get(value); if (location == null) { - throw new ParseException("Could not found a harbour with name " + value, 0); + throw new ParseException("Could not found a harbour with label " + value, 0); } return location; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java deleted file mode 100644 index 5194ca5..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java +++ /dev/null @@ -1,30 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Function; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public class ListGearFormatter implements ValueFormatter<List<Gear>> { - - @Override - public String format(List<Gear> value) { - List<String> decoratedValues = - Lists.transform(value, new Function<Gear, String>() { - @Override - public String apply(Gear input) { - return input.getName(); - } - }); - return Joiner.on('|').join(decoratedValues); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java index bc3df5d..086a7f5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java @@ -1,30 +1,24 @@ package fr.ifremer.tutti.service.csv; -import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Persons; import org.nuiton.csv.ValueFormatter; import java.util.List; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class ListPersonFormatter implements ValueFormatter<List<Person>> { @Override public String format(List<Person> value) { - List<String> decoratedValues = - Lists.transform(value, new Function<Person, String>() { - @Override - public String apply(Person input) { - return input.getFirstName() + ' ' + input.getLastName(); - } - }); - return Joiner.on('|').join(decoratedValues); + List<String> fullNames = Lists.transform(value, Persons.GET_FULL_NAME); + return Joiner.on('|').join(fullNames); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java new file mode 100644 index 0000000..552ff69 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import org.nuiton.csv.ValueFormatter; + +import java.util.List; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class ListPersonTechnicalFormatter implements ValueFormatter<List<Person>> { + + @Override + public String format(List<Person> value) { + List<String> ids = Lists.transform(value, TuttiEntities.newIdFunction()); + return Joiner.on('|').join(ids); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java similarity index 66% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java index 32d2e95..b097fc1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java @@ -1,5 +1,6 @@ package fr.ifremer.tutti.service.csv; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Persons; import fr.ifremer.tutti.service.PersistenceService; @@ -16,31 +17,31 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class ListPersonParser implements ValueParser<List<Person>> { +public class ListPersonTechnicalParser implements ValueParser<List<Person>> { private final PersistenceService persistenceService; - private Map<String, Person> personsByFullName; + private Map<String, Person> personsById; - public ListPersonParser(PersistenceService persistenceService) { + public ListPersonTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; } @Override public List<Person> parse(String value) throws ParseException { - if (personsByFullName == null) { + if (personsById == null) { List<Person> allPerson = persistenceService.getAllPerson(); - personsByFullName = Persons.splitByFullName(allPerson); + personsById = TuttiEntities.splitById(allPerson); } List<Person> persons = new ArrayList<>(); - String[] fullNames = value.split("|"); - for (String fullName : fullNames) { - Person person = personsByFullName.get(fullName); + String[] ids = value.split("|"); + for (String id : ids) { + Person person = personsById.get(id); if (person == null) { - throw new ParseException("Could not found a person with name " + value, 0); + throw new ParseException("Could not found a person with id " + value, 0); } persons.add(person); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java index 0ea521b..2cd846b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java @@ -1,9 +1,9 @@ package fr.ifremer.tutti.service.csv; -import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; import org.nuiton.csv.ValueFormatter; import java.util.List; @@ -18,18 +18,8 @@ public class ListVesselFormatter implements ValueFormatter<List<Vessel>> { @Override public String format(List<Vessel> value) { - List<String> decoratedValues = - Lists.transform(value, new Function<Vessel, String>() { - @Override - public String apply(Vessel input) { - - String result = input.getRegistrationCode(); - if (result == null) { - result = input.getInternationalRegistrationCode(); - } - return result; - } - }); - return Joiner.on('|').join(decoratedValues); + List<String> codes = Lists.transform(value, Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE); + return Joiner.on('|').join(codes); } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java new file mode 100644 index 0000000..55c5e3f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import org.nuiton.csv.ValueFormatter; + +import java.util.List; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class ListVesselTechnicalFormatter implements ValueFormatter<List<Vessel>> { + + @Override + public String format(List<Vessel> value) { + List<String> codes = Lists.transform(value, TuttiEntities.GET_ID); + return Joiner.on('|').join(codes); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java similarity index 57% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java index 8ecf44e..f2224cf 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java @@ -16,39 +16,32 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class ListVesselParser implements ValueParser<List<Vessel>> { +public class ListVesselTechnicalParser implements ValueParser<List<Vessel>> { private final PersistenceService persistenceService; - private Map<String, Vessel> vesselsByRegistrationCode; + private Map<String, Vessel> vesselsById; - private Map<String, Vessel> vesselsByInternalRegistrationCode; - - public ListVesselParser(PersistenceService persistenceService) { + public ListVesselTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; } @Override public List<Vessel> parse(String value) throws ParseException { - if (vesselsByRegistrationCode == null) { + if (vesselsById == null) { List<Vessel> allVessels = persistenceService.getAllVessel(); - vesselsByRegistrationCode = Vessels.splitByRegistrationCode(allVessels); - vesselsByInternalRegistrationCode = Vessels.splitByInternationalRegistrationCode(allVessels); + vesselsById = Vessels.splitByRegistrationCode(allVessels); } List<Vessel> vessels = new ArrayList<>(); String[] immatriculations = value.split("|"); for (String immatriculation : immatriculations) { - Vessel vessel = vesselsByRegistrationCode.get(immatriculation); - - if (vessel == null) { - vessel = vesselsByInternalRegistrationCode.get(immatriculation); - } + Vessel vessel = vesselsById.get(immatriculation); if (vessel == null) { - throw new ParseException("Could not found a vessel with registrationCode " + value + ", neither with internationalRegistrationCode", 0); + throw new ParseException("Could not found a vessel with code " + value, 0); } vessels.add(vessel); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramFormatter.java new file mode 100644 index 0000000..8acd5d1 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.Programs; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class ProgramFormatter implements ValueFormatter<Program> { + + @Override + public String format(Program value) { + String result = ""; + if (value != null) { + result = Programs.GET_NAME.apply(value); + } + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalFormatter.java new file mode 100644 index 0000000..b2fee74 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Program; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class ProgramTechnicalFormatter implements ValueFormatter<Program> { + + @Override + public String format(Program value) { + String result = ""; + if (value != null) { + result = TuttiEntities.GET_ID.apply(value); + } + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalParser.java similarity index 59% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalParser.java index 11d64f8..b9cbd10 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalParser.java @@ -1,7 +1,7 @@ package fr.ifremer.tutti.service.csv; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.Programs; import fr.ifremer.tutti.service.PersistenceService; import org.nuiton.csv.ValueParser; @@ -10,29 +10,29 @@ import java.util.List; import java.util.Map; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public class ProgramParser implements ValueParser<Program> { + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class ProgramTechnicalParser implements ValueParser<Program> { private final PersistenceService persistenceService; - private Map<String, Program> programsByName; + private Map<String, Program> programsById; - public ProgramParser(PersistenceService persistenceService) { + public ProgramTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; } @Override public Program parse(String value) throws ParseException { - if (programsByName == null) { + if (programsById == null) { List<Program> allProgram = persistenceService.getAllProgram(); - programsByName = Programs.splitByName(allProgram); + programsById = TuttiEntities.splitById(allProgram); } - Program program = programsByName.get(value); + Program program = programsById.get(value); if (program == null) { throw new ParseException("Could not found a program with name " + value, 0); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramZoneFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramZoneFormatter.java new file mode 100644 index 0000000..98fe709 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramZoneFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class ProgramZoneFormatter implements ValueFormatter<TuttiLocation> { + + @Override + public String format(TuttiLocation value) { + String result = ""; + if (value != null) { + result = TuttiLocations.GET_NAME.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java new file mode 100644 index 0000000..75626ee --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class SpeciesTechnicalFormatter implements ValueFormatter<Species> { + + @Override + public String format(Species value) { + String result = ""; + if (value != null) { + result = Speciess.GET_REFERECE_TAXON_ID.apply(value); + } + return result; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java similarity index 90% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParser.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java index 494c9f4..c1a69c1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java @@ -18,13 +18,13 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class SpeciesParser implements ValueParser<Species> { +public class SpeciesTechnicalParser implements ValueParser<Species> { private final PersistenceService persistenceService; private Multimap<String, Species> speciesByReferenceTaxonId; - public SpeciesParser(PersistenceService persistenceService) { + public SpeciesTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index d471fc5..e8db3f1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -23,11 +23,13 @@ package fr.ifremer.tutti.service.csv; */ import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.util.Weights; import org.nuiton.csv.Common; @@ -246,17 +248,53 @@ public class TuttiCsvUtil extends Common { public static final ValueParserFormatter<Date> YEAR = new DateValue("yyyy"); + public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = new CaracteristicTechnicalFormatter(); + public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = new CaracteristicValueFormatter(); + public static final ValueFormatter<Program> PROGRAM_FORMATTER = new ProgramFormatter(); + + public static final ValueFormatter<Program> PROGRAM_TECHNICAL_FORMATTER = new ProgramTechnicalFormatter(); + + public static final ValueFormatter<Gear> GEAR_FORMATTER = new GearFormatter(); + + public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = new GearTechnicalFormatter(); + + public static final ValueFormatter<TuttiLocation> COUNTRY_FORMATTER = new CountryFormatter(); + + public static final ValueFormatter<TuttiLocation> PROGRAM_ZONE_FORMATTER = new ProgramZoneFormatter(); + + public static final ValueFormatter<TuttiLocation> HARBOUR_FORMATTER = new HarbourFormatter(); + + public static final ValueFormatter<TuttiLocation> HARBOUR_TECHNICAL_FORMATTER = new HarbourTechnicalFormatter(); + + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_FORMATTER = new FishingOperationStrataFormatter(); + + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER = new FishingOperationStrataTechnicalFormatter(); + + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_FORMATTER = new FishingOperationSubStrataFormatter(); + + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER = new FishingOperationSubStrataTechnicalFormatter(); + + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_FORMATTER = new FishingOperationLocationFormatter(); + + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER = new FishingOperationLocationTechnicalFormatter(); + + public static final ValueFormatter<Vessel> VESSEL_TECHNICAL_FORMATTER = new VesselTechnicalFormatter(); + public static final ValueFormatter<Vessel> VESSEL_FORMATTER = new VesselFormatter(); + public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = new SpeciesTechnicalFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = new ListPersonFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = new ListPersonTechnicalFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = new ListVesselFormatter(); - public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = new ListVesselTechnicalFormatter(); - public static final ValueFormatter<List<Gear>> LIST_GEAR_FORMATTER = new ListGearFormatter(); + public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName, String defaultNullValue) { return new BeanPropertyFormatter<E>(propertyName, defaultNullValue); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java index f88f19f..43cf7e2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java @@ -1,24 +1,22 @@ package fr.ifremer.tutti.service.csv; import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; import org.nuiton.csv.ValueFormatter; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class VesselFormatter implements ValueFormatter<Vessel> { @Override public String format(Vessel value) { String result = ""; if (value != null) { - result = value.getRegistrationCode(); - if (result == null) { - result = value.getInternationalRegistrationCode(); - } + result = Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE.apply(value); } return result; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParser.java deleted file mode 100644 index f8d3ea8..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParser.java +++ /dev/null @@ -1,50 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselParser implements ValueParser<Vessel> { - - private final PersistenceService persistenceService; - - private Map<String, Vessel> vesselsByRegistrationCode; - - private Map<String, Vessel> vesselsByInternalRegistrationCode; - - public VesselParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Vessel parse(String value) throws ParseException { - - if (vesselsByRegistrationCode == null) { - List<Vessel> allVessels = persistenceService.getAllVessel(); - vesselsByRegistrationCode = Vessels.splitByRegistrationCode(allVessels); - vesselsByInternalRegistrationCode = Vessels.splitByInternationalRegistrationCode(allVessels); - } - Vessel vessel = vesselsByRegistrationCode.get(value); - - if (vessel == null) { - vessel = vesselsByInternalRegistrationCode.get(value); - } - - if (vessel == null) { - throw new ParseException("Could not found a vessel with registrationCode " + value + ", neither with internationalRegistrationCode", 0); - } - return vessel; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java new file mode 100644 index 0000000..0748353 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class VesselTechnicalFormatter implements ValueFormatter<Vessel> { + + @Override + public String format(Vessel value) { + String result = ""; + if (value != null) { + result = TuttiEntities.GET_ID.apply(value); + } + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java new file mode 100644 index 0000000..4a95d47 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java @@ -0,0 +1,43 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.PersistenceService; +import org.nuiton.csv.ValueParser; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class VesselTechnicalParser implements ValueParser<Vessel> { + + private final PersistenceService persistenceService; + + private Map<String, Vessel> vesselsById; + + public VesselTechnicalParser(PersistenceService persistenceService) { + this.persistenceService = persistenceService; + } + + @Override + public Vessel parse(String value) throws ParseException { + + if (vesselsById == null) { + List<Vessel> allVessels = persistenceService.getAllVessel(); + vesselsById = TuttiEntities.splitById(allVessels); + } + Vessel vessel = vesselsById.get(value); + + if (vessel == null) { + throw new ParseException("Could not found a vessel with code " + value, 0); + } + return vessel; + + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 1462d44a5cbba96dcdaea6feff9e056d264e0382 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 14:05:07 2015 +0100 remover unused method + add shortcut other one --- .../CaracteristicQualitativeValues.java | 23 ++++++++++------------ 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicQualitativeValues.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicQualitativeValues.java index 81c3725..0566ab6 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicQualitativeValues.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicQualitativeValues.java @@ -29,23 +29,21 @@ import java.util.Iterator; public class CaracteristicQualitativeValues extends AbstractCaracteristicQualitativeValues { - public static CaracteristicQualitativeValue getCaracteristicQualitativeValue(Caracteristic caracteristic, Integer id) { - CaracteristicQualitativeValue result = null; - if (id != null && !caracteristic.isQualitativeValueEmpty()) { - for (CaracteristicQualitativeValue caracteristicQualitativeValue : caracteristic.getQualitativeValue()) { - if (id.equals(caracteristicQualitativeValue.getIdAsInt())) { - result = caracteristicQualitativeValue; - break; - } + public static CaracteristicQualitativeValue getQualitativeValue(Caracteristic caracteristic, Integer qualitativeValueId) { + CaracteristicQualitativeValue value = null; + for (CaracteristicQualitativeValue qv : caracteristic.getQualitativeValue()) { + if (qualitativeValueId.equals(qv.getIdAsInt())) { + value = qv; + break; } } - return result; + return value; } - public static CaracteristicQualitativeValue getQualitativeValue(Caracteristic caracteristic, Integer qualitativeValueId) { + public static CaracteristicQualitativeValue getQualitativeValue(Caracteristic caracteristic, String qualitativeValueId) { CaracteristicQualitativeValue value = null; for (CaracteristicQualitativeValue qv : caracteristic.getQualitativeValue()) { - if (qualitativeValueId.equals(qv.getIdAsInt())) { + if (qualitativeValueId.equals(qv.getId())) { value = qv; break; } @@ -53,8 +51,7 @@ public class CaracteristicQualitativeValues extends AbstractCaracteristicQualita return value; } - public static void removeQualitativeValue(Collection<CaracteristicQualitativeValue> values, - int id) { + public static void removeQualitativeValue(Collection<CaracteristicQualitativeValue> values, int id) { Iterator<CaracteristicQualitativeValue> iterator = values.iterator(); while (iterator.hasNext()) { CaracteristicQualitativeValue next = iterator.next(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 80507ac0d36bdbba8459d21b5104bd4805b086f6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 14:44:45 2015 +0100 use same parser formatter + clean multipost code --- .../catches/multipost/AccidentalCatchRowModel.java | 48 ++++------- .../catches/multipost/AttachmentRowModel.java | 1 - .../catches/multipost/CaracteristicRowModel.java | 18 ++-- .../catches/multipost/CatchFrequencyRowModel.java | 20 ++--- .../service/catches/multipost/CatchRowModel.java | 30 ++----- .../catches/multipost/CatchWeightsRowModel.java | 10 +-- .../multipost/IndividualObservationRowModel.java | 29 ++----- .../catches/multipost/MarineLitterRowModel.java | 32 ++----- .../multipost/MarineLitterWeightRowModel.java | 3 +- .../catches/multipost/MultiPostImportService.java | 97 +++++++++++++--------- .../csv/AbstractTuttiImportExportModel.java | 19 ++--- .../service/csv/AbstractTuttiImportModel.java | 8 +- .../csv/CaracteristicValueTechnicalFormatter.java | 43 ++++++++++ .../csv/CaracteristicValueTechnicalParser.java | 56 +++++++++++++ ...lue.java => ForeignKeyListParserFormatter.java} | 10 +-- ...eyValue.java => ForeignKeyParserFormatter.java} | 6 +- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 73 ++-------------- .../operationimport/ImportFromColumnFileModel.java | 14 ++-- .../tutti/service/protocol/SpeciesRowModel.java | 4 +- 19 files changed, 244 insertions(+), 277 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java index c15f738..d488299 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java @@ -23,10 +23,10 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -44,48 +44,28 @@ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<Acci public AccidentalCatchRowModel(char separator, List<Species> species, - List<CaracteristicQualitativeValue> genderValues, - List<Caracteristic> lengthStepCaracteristics, - List<CaracteristicQualitativeValue> deadOrAliveValues) { + Caracteristic sexCaracteristic, + Caracteristic dedOrAliveCaracteristic, + List<Caracteristic> lengthStepCaracteristics) { super(separator); newColumnForImportExport(AccidentalCatchRow.BATCH_ID); - newColumnForExport(AccidentalCatchRow.SPECIES, - TuttiCsvUtil.SPECIES_REFERENCE_TAXON_ID_FORMATTER); - - newSpeciesForeignKeyColumn(AccidentalCatchRow.SPECIES, - Species.PROPERTY_REFERENCE_TAXON_ID, - species); + newColumnForExport(AccidentalCatchRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newSpeciesForeignKeyColumn(AccidentalCatchRow.SPECIES, species); - newColumnForExport(AccidentalCatchRow.GENDER, - TuttiCsvUtil.CARACTERISTIC_QUALITATIVE_VALUE_FORMATTER); + newColumnForExport(AccidentalCatchRow.GENDER, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newMandatoryColumn(AccidentalCatchRow.GENDER, new CaracteristicValueTechnicalParser(sexCaracteristic)); - newForeignKeyColumn(AccidentalCatchRow.GENDER, - CaracteristicQualitativeValue.class, - CaracteristicQualitativeValue.PROPERTY_ID, - genderValues); - - newColumnForImportExport(AccidentalCatchRow.WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(AccidentalCatchRow.WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); newColumnForImportExport(AccidentalCatchRow.SIZE, TuttiCsvUtil.FLOAT); - newColumnForExport(AccidentalCatchRow.LENGTH_STEP_CARACTERISTIC, - TuttiCsvUtil.CARACTERISTIC_ID_FORMATTER); - - newForeignKeyColumn(AccidentalCatchRow.LENGTH_STEP_CARACTERISTIC, - Caracteristic.class, - Caracteristic.PROPERTY_ID, - lengthStepCaracteristics); - - newColumnForExport(AccidentalCatchRow.DEAD_OR_ALIVE, - TuttiCsvUtil.CARACTERISTIC_QUALITATIVE_VALUE_FORMATTER); + newColumnForExport(AccidentalCatchRow.LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + newForeignKeyColumn(AccidentalCatchRow.LENGTH_STEP_CARACTERISTIC, Caracteristic.class, lengthStepCaracteristics); - newForeignKeyColumn(AccidentalCatchRow.DEAD_OR_ALIVE, - CaracteristicQualitativeValue.class, - CaracteristicQualitativeValue.PROPERTY_ID, - deadOrAliveValues); + newColumnForExport(AccidentalCatchRow.DEAD_OR_ALIVE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newMandatoryColumn(AccidentalCatchRow.DEAD_OR_ALIVE, new CaracteristicValueTechnicalParser(dedOrAliveCaracteristic)); newColumnForImportExport(AccidentalCatchRow.COMMENT); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java index 0014bb2..566e08d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java @@ -56,7 +56,6 @@ public class AttachmentRowModel extends AbstractTuttiImportExportModel<Attachmen return value != null ? value.getName() : null; } }); - newMandatoryColumn(AttachmentRow.ATTACHMENT_FILE, new ValueParser<File>() { @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java index 4b90e05..fc85175 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java @@ -23,8 +23,8 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -38,23 +38,15 @@ public class CaracteristicRowModel extends AbstractTuttiImportExportModel<Caract this(separator, null); } - public CaracteristicRowModel(char separator, - List<Caracteristic> caracteristics) { + public CaracteristicRowModel(char separator, List<Caracteristic> caracteristics) { super(separator); newColumnForImportExport(CaracteristicRow.BATCH_ID); - newColumnForExport(CaracteristicRow.CARACTERISTIC, - TuttiCsvUtil.CARACTERISTIC_ID_FORMATTER); - - newForeignKeyColumn(CaracteristicRow.CARACTERISTIC, - Caracteristic.class, - Caracteristic.PROPERTY_ID, - caracteristics); - - newColumnForExport(CaracteristicRow.VALUE, - TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER2); + newColumnForExport(CaracteristicRow.CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + newForeignKeyColumn(CaracteristicRow.CARACTERISTIC, Caracteristic.class, caracteristics); + newColumnForExport(CaracteristicRow.VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); newMandatoryColumn(CaracteristicRow.VALUE, TuttiCsvUtil.STRING); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java index 3331f48..73f5a08 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java @@ -23,8 +23,8 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -45,22 +45,14 @@ public class CatchFrequencyRowModel extends AbstractTuttiImportExportModel<Catch newColumnForImportExport(CatchFrequencyRow.BATCH_ID); - newColumnForExport(CatchFrequencyRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, - TuttiCsvUtil.CARACTERISTIC_ID_FORMATTER); - - newForeignKeyColumn(CatchFrequencyRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, - Caracteristic.class, - Caracteristic.PROPERTY_ID, - caracteristics); + newColumnForExport(CatchFrequencyRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + newForeignKeyColumn(CatchFrequencyRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, Caracteristic.class, caracteristics); - newColumnForImportExport(CatchFrequencyRow.FREQUENCY_LENGTH_STEP, - TuttiCsvUtil.FLOAT); + newColumnForImportExport(CatchFrequencyRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); - newColumnForImportExport(CatchFrequencyRow.FREQUENCY_NUMBER, - TuttiCsvUtil.INTEGER); + newColumnForImportExport(CatchFrequencyRow.FREQUENCY_NUMBER, TuttiCsvUtil.INTEGER); - newColumnForImportExport(CatchFrequencyRow.FREQUENCY_WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchFrequencyRow.FREQUENCY_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java index 9014d90..9852f33 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java @@ -47,35 +47,23 @@ public class CatchRowModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForImportExport(CatchRow.PARENT_ID); - newColumnForExport(CatchRow.SPECIES, - TuttiCsvUtil.SPECIES_REFERENCE_TAXON_ID_FORMATTER); + newColumnForExport(CatchRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newSpeciesForeignKeyColumn(CatchRow.SPECIES, species); - newSpeciesForeignKeyColumn(CatchRow.SPECIES, - Species.PROPERTY_REFERENCE_TAXON_ID, - species); + newColumnForImportExport(CatchRow.CATEGORY_ID, TuttiCsvUtil.INTEGER); - newColumnForImportExport(CatchRow.CATEGORY_ID, - TuttiCsvUtil.INTEGER); + newColumnForExport(CatchRow.CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newMandatoryColumn(CatchRow.CATEGORY_VALUE, TuttiCsvUtil.STRING); - newColumnForExport(CatchRow.CATEGORY_VALUE, - TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER2); + newColumnForImportExport(CatchRow.CATEGORY_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - newMandatoryColumn(CatchRow.CATEGORY_VALUE, - TuttiCsvUtil.STRING); + newColumnForImportExport(CatchRow.WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - newColumnForImportExport(CatchRow.CATEGORY_WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - - newColumnForImportExport(CatchRow.WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - - newColumnForImportExport(CatchRow.NUMBER, - TuttiCsvUtil.INTEGER); + newColumnForImportExport(CatchRow.NUMBER, TuttiCsvUtil.INTEGER); newColumnForImportExport(CatchRow.COMMENT); - newColumnForImportExport(CatchRow.TO_CONFIRM, - TuttiCsvUtil.PRIMITIVE_BOOLEAN); + newColumnForImportExport(CatchRow.TO_CONFIRM, TuttiCsvUtil.PRIMITIVE_BOOLEAN); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java index 569739a..58421b8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java @@ -33,12 +33,10 @@ public class CatchWeightsRowModel extends AbstractFishingOperationRowModel<Catch public CatchWeightsRowModel(char separator) { super(separator); - newColumnForImportExport(CatchWeightsRow.TOTAL_SORTED_WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - newColumnForImportExport(CatchWeightsRow.INERT_WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - newColumnForImportExport(CatchWeightsRow.LIVING_NOT_ITEMIZED_WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchWeightsRow.TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchWeightsRow.INERT_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchWeightsRow.LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java index ff35722..f7209aa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -41,33 +41,20 @@ public class IndividualObservationRowModel extends AbstractTuttiImportExportMode this(separator, null, null); } - public IndividualObservationRowModel(char separator, - List<Species> species, - List<Caracteristic> lengthStepCaracteristics) { + public IndividualObservationRowModel(char separator, List<Species> species, List<Caracteristic> lengthStepCaracteristics) { super(separator); newColumnForImportExport(IndividualObservationRow.BATCH_ID); - newColumnForExport(IndividualObservationRow.SPECIES, - TuttiCsvUtil.SPECIES_REFERENCE_TAXON_ID_FORMATTER); - - newSpeciesForeignKeyColumn(IndividualObservationRow.SPECIES, - Species.PROPERTY_REFERENCE_TAXON_ID, - species); - - newColumnForImportExport(IndividualObservationRow.WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForExport(IndividualObservationRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newSpeciesForeignKeyColumn(IndividualObservationRow.SPECIES, species); - newColumnForImportExport(IndividualObservationRow.SIZE, - TuttiCsvUtil.FLOAT); + newColumnForImportExport(IndividualObservationRow.WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); - newColumnForExport(IndividualObservationRow.LENGTH_STEP_CARACTERISTIC, - TuttiCsvUtil.CARACTERISTIC_ID_FORMATTER); + newColumnForImportExport(IndividualObservationRow.SIZE, TuttiCsvUtil.FLOAT); - newForeignKeyColumn(IndividualObservationRow.LENGTH_STEP_CARACTERISTIC, - Caracteristic.class, - Caracteristic.PROPERTY_ID, - lengthStepCaracteristics); + newColumnForExport(IndividualObservationRow.LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + newForeignKeyColumn(IndividualObservationRow.LENGTH_STEP_CARACTERISTIC, Caracteristic.class, lengthStepCaracteristics); newColumnForImportExport(IndividualObservationRow.COMMENT); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java index 628230d..53ad530 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java @@ -22,11 +22,10 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; - -import java.util.List; +import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * @author kmorin <morin@codelutin.com> @@ -38,33 +37,20 @@ public class MarineLitterRowModel extends AbstractTuttiImportExportModel<MarineL this(separator, null, null); } - public MarineLitterRowModel(char separator, - List<CaracteristicQualitativeValue> categoryValues, - List<CaracteristicQualitativeValue> sizeCategoryValues) { + public MarineLitterRowModel(char separator, Caracteristic categoryCaracteristic, Caracteristic sizeCategoryCaracteristic) { super(separator); newColumnForImportExport(MarineLitterRow.BATCH_ID); - newColumnForExport(MarineLitterRow.CATEGORY, - TuttiCsvUtil.CARACTERISTIC_QUALITATIVE_VALUE_FORMATTER); - - newForeignKeyColumn(MarineLitterRow.CATEGORY, - CaracteristicQualitativeValue.class, - CaracteristicQualitativeValue.PROPERTY_ID, - categoryValues); - - newColumnForExport(MarineLitterRow.SIZE_CATEGORY, - TuttiCsvUtil.CARACTERISTIC_QUALITATIVE_VALUE_FORMATTER); + newColumnForExport(MarineLitterRow.CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newMandatoryColumn(MarineLitterRow.CATEGORY, new CaracteristicValueTechnicalParser(categoryCaracteristic)); - newForeignKeyColumn(MarineLitterRow.SIZE_CATEGORY, - CaracteristicQualitativeValue.class, - CaracteristicQualitativeValue.PROPERTY_ID, - sizeCategoryValues); + newColumnForExport(MarineLitterRow.SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newMandatoryColumn(MarineLitterRow.SIZE_CATEGORY, new CaracteristicValueTechnicalParser(sizeCategoryCaracteristic)); newColumnForImportExport(MarineLitterRow.NUMBER, TuttiCsvUtil.INTEGER); - newColumnForImportExport(MarineLitterRow.WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(MarineLitterRow.WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); newColumnForImportExport(MarineLitterRow.COMMENT); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java index 64ff121..dbe1306 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java @@ -33,8 +33,7 @@ public class MarineLitterWeightRowModel extends AbstractFishingOperationRowModel public MarineLitterWeightRowModel(char separator) { super(separator); - newColumnForImportExport(MarineLitterWeightRow.TOTAL_WEIGHT, - TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(MarineLitterWeightRow.TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index 856ec9d..61b3c11 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -53,7 +53,6 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequencys; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchs; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.AbstractTuttiService; @@ -61,6 +60,7 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.TuttiServiceContext; +import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -68,10 +68,12 @@ import org.apache.commons.lang3.tuple.Pair; import org.nuiton.csv.Import; import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.Reader; import java.io.Serializable; +import java.text.ParseException; import java.util.Calendar; import java.util.Date; import java.util.Iterator; @@ -845,18 +847,20 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult BatchContainer<MarineLitterBatch> marineLitterBatches = persistenceService.getRootMarineLitterBatch(operationId); - List<CaracteristicQualitativeValue> categoryValues = - persistenceService.getMarineLitterCategoryCaracteristic().getQualitativeValue(); - List<CaracteristicQualitativeValue> sizeCategoryValues = - persistenceService.getMarineLitterSizeCategoryCaracteristic().getQualitativeValue(); + + Caracteristic marineLitterCategoryCaracteristic = + persistenceService.getMarineLitterCategoryCaracteristic(); + Caracteristic marineLitterSizeCategoryCaracteristic = + persistenceService.getMarineLitterSizeCategoryCaracteristic(); // Import batches // map containing the batches by their persistence id + final Map<String, MarineLitterBatch> batches = importMarineLitterBatches( tempDir, operation, - categoryValues, - sizeCategoryValues, + marineLitterCategoryCaracteristic, + marineLitterSizeCategoryCaracteristic, marineLitterBatches, notImportedBatches); @@ -884,8 +888,8 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } protected Map<String, MarineLitterBatch> importMarineLitterBatches(File file, FishingOperation operation, - List<CaracteristicQualitativeValue> categoryValues, - List<CaracteristicQualitativeValue> sizeCategoryValues, + Caracteristic categoryCaracteristic, + Caracteristic sizeCategoryCaracteristic, BatchContainer<MarineLitterBatch> marineLitterBatches, Map<String, MarineLitterBatch> notImportedBatches) { @@ -898,8 +902,8 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try { MarineLitterRowModel csvModel = new MarineLitterRowModel(MultiPostExportService.CSV_SEPARATOR, - categoryValues, - sizeCategoryValues); + categoryCaracteristic, + sizeCategoryCaracteristic); Import<MarineLitterRow> importer = Import.newImport(csvModel, reader); @@ -1105,17 +1109,22 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult IndividualObservationBatch batch = batches.get(caracteristicRow.getBatchId()); if (batch != null) { Caracteristic caracteristic = caracteristicRow.getCaracteristic(); + CaracteristicValueTechnicalParser parser = new CaracteristicValueTechnicalParser(caracteristic); Serializable value = caracteristicRow.getValue(); - - switch (caracteristic.getCaracteristicType()) { - case QUALITATIVE: - value = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, Integer.parseInt(value.toString())); - break; - - case NUMBER: - value = Float.parseFloat(value.toString()); - break; + try { + parser.parse(String.valueOf(value)); + } catch (ParseException e) { + throw new ApplicationTechnicalException("Could not parse caracteristic value: " + value, e); } +// switch (caracteristic.getCaracteristicType()) { +// case QUALITATIVE: +// value = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, Integer.parseInt(value.toString())); +// break; +// +// case NUMBER: +// value = Float.parseFloat(value.toString()); +// break; +// } CaracteristicMap map = batch.getCaracteristics(); map.put(caracteristic, value); } @@ -1161,19 +1170,20 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult TuttiDataContext dataContext = context.getDataContext(); List<Species> speciesList = dataContext.getReferentSpecies(); - List<CaracteristicQualitativeValue> genderValues = dataContext.getGenderValues(); List<Caracteristic> caracteristics = dataContext.getCaracteristicWithProtected(); - List<CaracteristicQualitativeValue> dedOrAliveValues = dataContext.getDeadOrAliveValues(); + + Caracteristic sexCaracteristic = persistenceService.getSexCaracteristic(); + Caracteristic deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); // Import batches // map containing the batches by their persistence id - final Map<String, AccidentalBatch> batches = importAccidentalCatchesBatches( + Map<String, AccidentalBatch> batches = importAccidentalCatchesBatches( tempDir, operation, + sexCaracteristic, + deadOrAliveCaracteristic, speciesList, - genderValues, - caracteristics, - dedOrAliveValues + caracteristics ); // Import caracteristics @@ -1199,10 +1209,10 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult protected Map<String, AccidentalBatch> importAccidentalCatchesBatches(File file, FishingOperation operation, + Caracteristic sexCaracteristic, + Caracteristic dedOrAliveCaracteristic, List<Species> speciesList, - List<CaracteristicQualitativeValue> genderValues, - List<Caracteristic> caracteristics, - List<CaracteristicQualitativeValue> dedOrAliveValues) { + List<Caracteristic> caracteristics) { Map<String, AccidentalBatch> batches = Maps.newLinkedHashMap(); @@ -1214,9 +1224,9 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult AccidentalCatchRowModel csvModel = new AccidentalCatchRowModel(MultiPostExportService.CSV_SEPARATOR, speciesList, - genderValues, - caracteristics, - dedOrAliveValues); + sexCaracteristic, + dedOrAliveCaracteristic, caracteristics + ); Import<AccidentalCatchRow> importer = Import.newImport(csvModel, reader); @@ -1270,17 +1280,22 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult AccidentalBatch batch = batches.get(caracteristicRow.getBatchId()); if (batch != null) { Caracteristic caracteristic = caracteristicRow.getCaracteristic(); + CaracteristicValueTechnicalParser parser = new CaracteristicValueTechnicalParser(caracteristic); Serializable value = caracteristicRow.getValue(); - - switch (caracteristic.getCaracteristicType()) { - case QUALITATIVE: - value = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, Integer.parseInt(value.toString())); - break; - - case NUMBER: - value = Float.parseFloat(value.toString()); - break; + try { + parser.parse(String.valueOf(value)); + } catch (ParseException e) { + throw new ApplicationTechnicalException("Could not parse caracteristic value: " + value, e); } +// switch (caracteristic.getCaracteristicType()) { +// case QUALITATIVE: +// value = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value.toString()); +// break; +// +// case NUMBER: +// value = Float.parseFloat(value.toString()); +// break; +// } CaracteristicMap map = batch.getCaracteristics(); map.put(caracteristic, value); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 09148ef..6601161 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -44,32 +44,23 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx } public <E extends TuttiEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { - newMandatoryColumn(headerName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe)); + newMandatoryColumn(headerName, propertyName, new ForeignKeyParserFormatter<>(entityType, foreignKeyName, universe)); } - public <E extends TuttiEntity> void newForeignKeyColumn(String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { - newMandatoryColumn(propertyName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe)); - } - - public void newSpeciesForeignKeyColumn(String propertyName, String foreignKeyName, List<Species> species) { + public void newSpeciesForeignKeyColumn(String propertyName, List<Species> species) { if (species == null) { species = Lists.newArrayList(); } Map<String, Species> universe = Speciess.splitByReferenceTaxonId(species); - newForeignKeyColumn(propertyName, Species.class, foreignKeyName, universe); + newMandatoryColumn(propertyName, propertyName, new ForeignKeyParserFormatter<>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, universe)); } - public <E extends TuttiEntity> void newForeignKeyColumn(String propertyName, Class<E> entityType, String foreignKeyName, List<E> list) { + public <E extends TuttiEntity> void newForeignKeyColumn(String propertyName, Class<E> entityType, List<E> list) { if (list == null) { list = Lists.newArrayList(); } -// Map<String, E> universe = Maps.uniqueIndex(list, TuttiEntities.GET_ID); Map<String, E> universe = TuttiEntities.splitById(list); - newMandatoryColumn(propertyName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe)); - } - - public <E extends TuttiEntity> ForeignKeyValue<E> newForeignKeyValue(Class<E> type, String propertyName, Map<String, E> universe) { - return new ForeignKeyValue<E>(type, propertyName, universe); + newMandatoryColumn(propertyName, propertyName, new ForeignKeyParserFormatter<>(entityType, TuttiEntity.PROPERTY_ID, universe)); } public <T> ExportableColumn<M, T> newNullableColumnForExport(String headerName, String propertyName, ValueFormatter<T> valueFormatter) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java index 9a6f4ff..18e9c1b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java @@ -17,12 +17,12 @@ public abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> super(separator); } - public <E extends TuttiEntity> ForeignKeyValue<E> newForeignKeyValue(Class<E> type, String propertyName, Map<String, E> universe) { - return new ForeignKeyValue<E>(type, propertyName, universe); + public <E extends TuttiEntity> ForeignKeyParserFormatter<E> newForeignKeyParserFormatter(Class<E> type, String propertyName, Map<String, E> universe) { + return new ForeignKeyParserFormatter<E>(type, propertyName, universe); } - public <E extends TuttiEntity> ForeignKeyListValue<E> newForeignKeyListValue(Class<E> type, String propertyName, Map<String, E> universe) { - return new ForeignKeyListValue<E>(type, propertyName, universe); + public <E extends TuttiEntity> ForeignKeyListParserFormatter<E> newForeignKeyListParserFormatter(Class<E> type, String propertyName, Map<String, E> universe) { + return new ForeignKeyListParserFormatter<E>(type, propertyName, universe); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java new file mode 100644 index 0000000..69d71bf --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java @@ -0,0 +1,43 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import org.nuiton.csv.Common; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.csv.ValueParserFormatter; + +import java.io.Serializable; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CaracteristicValueTechnicalFormatter implements ValueFormatter<Serializable> { + + ValueParserFormatter<Integer> integerDelegate = Common.INTEGER; + + ValueParserFormatter<Float> floatDelegate = Common.FLOAT; + + ValueParserFormatter<String> textDelegate = Common.STRING; + + @Override + public String format(Serializable value) { + if (value == null) { + return "NA"; + } + if (value instanceof Float) { + return floatDelegate.format((Float) value); + } + if (value instanceof Integer) { + return integerDelegate.format((Integer) value); + } + if (value instanceof String) { + return textDelegate.format((String) value); + } + // qualitive value + CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value; + String result = qv.getId(); + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java new file mode 100644 index 0000000..bfcdd3c --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java @@ -0,0 +1,56 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristics; +import org.nuiton.csv.Common; +import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ValueParserFormatter; + +import java.io.Serializable; +import java.text.ParseException; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CaracteristicValueTechnicalParser implements ValueParser<Serializable> { + + private final Caracteristic caracteristic; + + ValueParserFormatter<Float> floatDelegate = Common.FLOAT; + + ValueParserFormatter<String> textDelegate = Common.STRING; + + public CaracteristicValueTechnicalParser(Caracteristic caracteristic) { + this.caracteristic = caracteristic; + } + + @Override + public Serializable parse(String value) throws ParseException { + + Serializable result; + + if ("NA".equals(value)) { + + result = null; + + } else if (Caracteristics.isNumberCaracteristic(caracteristic)) { + + result = floatDelegate.parse(value); + + } else if (Caracteristics.isTextCaracteristic(caracteristic)) { + + result = value; + + } else { + + // qualitative value + result = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value); + + } + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListValue.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListParserFormatter.java similarity index 82% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListValue.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListParserFormatter.java index 7242e35..0b151ff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListValue.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyListParserFormatter.java @@ -17,7 +17,7 @@ import static org.nuiton.i18n.I18n.t; * @author kmorin <morin@codelutin.com> * @since 3.10 */ -public class ForeignKeyListValue<E extends TuttiEntity> implements ValueParserFormatter<List<E>> { +public class ForeignKeyListParserFormatter<E extends TuttiEntity> implements ValueParserFormatter<List<E>> { public static final String LIST_SEPARATOR = ","; @@ -27,9 +27,7 @@ public class ForeignKeyListValue<E extends TuttiEntity> implements ValueParserFo protected final Map<String, E> universe; - public ForeignKeyListValue(Class<E> entityType, - String propertyName, - Map<String, E> universe) { + public ForeignKeyListParserFormatter(Class<E> entityType, String propertyName, Map<String, E> universe) { this.entityType = entityType; this.propertyName = propertyName; this.universe = universe; @@ -37,7 +35,7 @@ public class ForeignKeyListValue<E extends TuttiEntity> implements ValueParserFo @Override public List<E> parse(String value) throws ParseException { - List<E> result = new ArrayList<E>(); + List<E> result = new ArrayList<>(); if (StringUtils.isNotBlank(value)) { String[] ids = value.split(LIST_SEPARATOR); @@ -59,7 +57,7 @@ public class ForeignKeyListValue<E extends TuttiEntity> implements ValueParserFo @Override public String format(List<E> e) { - List<String> ids = new ArrayList<String>(); + List<String> ids = new ArrayList<>(); for (E entity : e) { if (entity != null) { ids.add(entity.getId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyValue.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyParserFormatter.java similarity index 85% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyValue.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyParserFormatter.java index 9bc5bb8..95bacf9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyValue.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ForeignKeyParserFormatter.java @@ -15,7 +15,7 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public class ForeignKeyValue<E extends TuttiEntity> implements ValueParserFormatter<E> { +public class ForeignKeyParserFormatter<E extends TuttiEntity> implements ValueParserFormatter<E> { protected final String propertyName; @@ -23,9 +23,7 @@ public class ForeignKeyValue<E extends TuttiEntity> implements ValueParserFormat protected final Map<String, E> universe; - public ForeignKeyValue(Class<E> entityType, - String propertyName, - Map<String, E> universe) { + public ForeignKeyParserFormatter(Class<E> entityType, String propertyName, Map<String, E> universe) { this.entityType = entityType; this.propertyName = propertyName; this.universe = universe; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index e8db3f1..d3c219a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.csv; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -80,28 +79,6 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueParserFormatter<Float> FLOAT_NULL_TO_9 = - new FloatParserFormatter(-9f, true) { - @Override - public String format(Float value) { - if (value == null) { - // if value is null then use the default value - value = defaultValue; - } - return super.format(value); - } - - @Override - protected Float parseNoneEmptyValue(String value) { - Float aFloat = super.parseNoneEmptyValue(value); - if (defaultValue.equals(aFloat)) { - // if having -9, then value is null - aFloat = null; - } - return aFloat; - } - }; - public static final ValueParserFormatter<Integer> INTEGER_NULL_TO_9 = new IntegerParserFormatter(-9, true) { @Override @@ -166,20 +143,6 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueFormatter<Caracteristic> CARACTERISTIC_ID_FORMATTER = new ValueFormatter<Caracteristic>() { - @Override - public String format(Caracteristic value) { - return value != null ? value.getId() : ""; - } - }; - - public static final ValueFormatter<Species> SPECIES_REFERENCE_TAXON_ID_FORMATTER = new ValueFormatter<Species>() { - @Override - public String format(Species value) { - return value != null ? String.valueOf(value.getReferenceTaxonId()) : null; - } - }; - public static final ValueFormatter<Species> SPECIES_NAME_FORMATTER = new ValueFormatter<Species>() { @Override public String format(Species s) { @@ -197,37 +160,15 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER2 = new ValueFormatter<Serializable>() { + public static final ValueFormatter<Species> SPECIES_REF_TAX_CODE_FORMATTER = new ValueFormatter<Species>() { @Override - public String format(Serializable value) { - String result = ""; - if (value != null) { - if (CaracteristicQualitativeValue.class.isAssignableFrom(value.getClass())) { - CaracteristicQualitativeValue cqv = (CaracteristicQualitativeValue) value; - result = cqv.getId(); - - } else { - result = String.valueOf(value); - } - } - return result; + public String format(Species s) { + Preconditions.checkNotNull(s, t("tutti.service.error.species.null")); + String surveyCode = s.getRefTaxCode(); + return surveyCode == null ? "" : surveyCode; } }; - public static ValueFormatter<CaracteristicQualitativeValue> CARACTERISTIC_QUALITATIVE_VALUE_FORMATTER = - new ValueFormatter<CaracteristicQualitativeValue>() { - @Override - public String format(CaracteristicQualitativeValue value) { - String result = ""; - if (value != null) { - result = value.getId(); - } - return result; - } - }; - - public static final ValueParserFormatter<Date> TIME = new DateValue("HH:mm"); - public static ValueParserFormatter<Float> WEIGHT_PARSER_FORMATTER = new FloatParserFormatter(null, true) { @Override @@ -248,10 +189,14 @@ public class TuttiCsvUtil extends Common { public static final ValueParserFormatter<Date> YEAR = new DateValue("yyyy"); + public static final ValueParserFormatter<Date> TIME = new DateValue("HH:mm"); + public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = new CaracteristicTechnicalFormatter(); public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = new CaracteristicValueFormatter(); + public static ValueFormatter<Serializable> CARACTERISTIC_VALUE_TECHNICAL_FORMATTER = new CaracteristicValueTechnicalFormatter(); + public static final ValueFormatter<Program> PROGRAM_FORMATTER = new ProgramFormatter(); public static final ValueFormatter<Program> PROGRAM_TECHNICAL_FORMATTER = new ProgramTechnicalFormatter(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java index 0afb699..42a46e4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java @@ -176,44 +176,44 @@ public class ImportFromColumnFileModel extends AbstractTuttiImportModel<FishingO List<Gear> gears = new ArrayList<>(dataContext.getFishingGears()); gears.addAll(dataContext.getScientificGears()); Map<String, Gear> gearUniverse = TuttiEntities.splitById(gears); - valueParser = newForeignKeyValue(Gear.class, field, gearUniverse); + valueParser = newForeignKeyParserFormatter(Gear.class, field, gearUniverse); break; case FishingOperation.PROPERTY_VESSEL: List<Vessel> vessels = new ArrayList<>(dataContext.getFishingVessels()); vessels.addAll(dataContext.getScientificVessels()); Map<String, Vessel> vesselUniverse = TuttiEntities.splitById(vessels); - valueParser = newForeignKeyValue(Vessel.class, field, vesselUniverse); + valueParser = newForeignKeyParserFormatter(Vessel.class, field, vesselUniverse); break; case FishingOperation.PROPERTY_SECONDARY_VESSEL: vessels = new ArrayList<>(dataContext.getFishingVessels()); vessels.addAll(dataContext.getScientificVessels()); vesselUniverse = TuttiEntities.splitById(vessels); - valueParser = newForeignKeyListValue(Vessel.class, field, vesselUniverse); + valueParser = newForeignKeyListParserFormatter(Vessel.class, field, vesselUniverse); break; case FishingOperation.PROPERTY_STRATA: Map<String, TuttiLocation> strataUniverse = TuttiEntities.splitById( persistenceService.getAllFishingOperationStrata(zoneId)); - valueParser = newForeignKeyValue(TuttiLocation.class, field, strataUniverse); + valueParser = newForeignKeyParserFormatter(TuttiLocation.class, field, strataUniverse); break; case FishingOperation.PROPERTY_SUB_STRATA: Map<String, TuttiLocation> subStrataUniverse = TuttiEntities.splitById( persistenceService.getAllFishingOperationSubStrata(zoneId, null)); - valueParser = newForeignKeyValue(TuttiLocation.class, field, subStrataUniverse); + valueParser = newForeignKeyParserFormatter(TuttiLocation.class, field, subStrataUniverse); break; case FishingOperation.PROPERTY_LOCATION: Map<String, TuttiLocation> locationUniverse = TuttiEntities.splitById( persistenceService.getAllFishingOperationLocation(zoneId, null, null)); - valueParser = newForeignKeyValue(TuttiLocation.class, field, locationUniverse); + valueParser = newForeignKeyParserFormatter(TuttiLocation.class, field, locationUniverse); break; case FishingOperation.PROPERTY_RECORDER_PERSON: Map<String, Person> personUniverse = TuttiEntities.splitById(dataContext.getPersons()); - valueParser = newForeignKeyListValue(Person.class, field, personUniverse); + valueParser = newForeignKeyListParserFormatter(Person.class, field, personUniverse); break; default: diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java index e294367..f520823 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.ForeignKeyValue; +import fr.ifremer.tutti.service.csv.ForeignKeyParserFormatter; import fr.ifremer.tutti.service.csv.StringParserFormatter; import org.nuiton.csv.Common; import org.nuiton.csv.ImportRuntimeException; @@ -56,7 +56,7 @@ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> newMandatoryColumn( SpeciesRow.PROPERTY_SPECIES_REFERENCE_TAXON_ID, SpeciesRow.PROPERTY_SPECIES, - new ForeignKeyValue<Species>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, speciesMap) { + new ForeignKeyParserFormatter<Species>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, speciesMap) { Set<Integer> taxonIds = Sets.newHashSet(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c311d9cb189b8ad3755c4514232c2f8ceaf3aac3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 15:46:34 2015 +0100 remove not used export model --- .../service/csv/AbstractTuttiExportModel.java | 58 ---------------------- .../tutti/service/pupitri/csv/SpeciesRowModel.java | 4 +- 2 files changed, 2 insertions(+), 60 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java deleted file mode 100644 index ac3febb..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java +++ /dev/null @@ -1,58 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import org.nuiton.csv.ExportableColumn; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.csv.ext.AbstractExportModel; -import org.nuiton.decorator.Decorator; - -/** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public abstract class AbstractTuttiExportModel<M> extends AbstractExportModel<M> { - - public AbstractTuttiExportModel(char separator) { - super(separator); - } - - public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) { - return newColumnForExportByDecorator(headerName, propertyName, decorator, null); - } - - public <T> ExportableColumn<M, T> newNullableColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) { - DecoratorPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newDecoratorFormatter(decorator, ""); - return newNullableColumnForExport(headerName, propertyName, valueFormatter); - } - - public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) { - DecoratorPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newDecoratorFormatter(decorator, defaultNullValue); - return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter); - } - - public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) { - return newColumnForExport(headerName, propertyName, formatterPropertyName, null); - } - - public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) { - BeanPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newBeanFormatter(formatterPropertyName, defaultNullValue); - return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter); - } - - public <T> ExportableColumn<M, T> newNullableColumnForExport(String headerName, String propertyName, ValueFormatter<T> valueFormatter) { - return modelBuilder.newColumnForExport(headerName, new BeanNullableGetter<M, T>(propertyName), valueFormatter); - } - - public ExportableColumn<M, String> newNullableColumnForExport(String headerName, String propertyName) { - return newNullableColumnForExport(headerName, propertyName, TuttiCsvUtil.STRING); - } - - public <T> ExportableColumn<M, T> newIndexNullableColumnForExport(String headerName, String collectionName, int order, String propertyName, ValueFormatter<T> valueFormatter) { - return modelBuilder.newColumnForExport(headerName, new BeanIndexNullableGetter<M, T>(collectionName, order, propertyName), valueFormatter); - } - - public ExportableColumn<M, String> newIndexNullableColumnForExport(String headerName, String collectionName, int order, String propertyName) { - return newIndexNullableColumnForExport(headerName, collectionName, order, propertyName, TuttiCsvUtil.STRING); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/SpeciesRowModel.java index 8daa3d1..9673ed6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/SpeciesRowModel.java @@ -22,13 +22,13 @@ package fr.ifremer.tutti.service.pupitri.csv; * #L% */ -import fr.ifremer.tutti.service.csv.AbstractTuttiExportModel; +import org.nuiton.csv.ext.AbstractExportModel; /** * @author kmorin <kmorin@codelutin.com> * @since 1.2 */ -public class SpeciesRowModel extends AbstractTuttiExportModel<SpeciesRow> { +public class SpeciesRowModel extends AbstractExportModel<SpeciesRow> { public SpeciesRowModel(char separator) { super(separator); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 8debd31b3416d061c1be75f7f5e3d66af3ff1104 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 15:48:10 2015 +0100 add technical column + finish import model definition --- t | 75 +++++++++++++ .../service/genericformat/GlobalImportContext.java | 107 +++++++++--------- .../genericformat/csv/AccidentalCatchModel.java | 33 +++--- .../service/genericformat/csv/CatchModel.java | 123 ++++++++++++++------- .../tutti/service/genericformat/csv/CatchRow.java | 10 ++ .../genericformat/csv/GearCaracteristicModel.java | 47 ++++---- .../csv/IndividualObservationModel.java | 31 +++--- .../genericformat/csv/MarineLitterModel.java | 25 +++-- .../service/genericformat/csv/OperationModel.java | 86 ++++++++------ .../service/genericformat/csv/ParameterModel.java | 19 ++-- .../genericformat/csv/SpeciesExportModel.java | 23 ++-- .../service/genericformat/csv/SurveyModel.java | 56 ++++++---- 12 files changed, 409 insertions(+), 226 deletions(-) diff --git a/t b/t new file mode 100644 index 0000000..f495ebc --- /dev/null +++ b/t @@ -0,0 +1,75 @@ +[1mdiff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m +[1mindex 6d08564..fbbca75 100644[m +[1m--- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m +[1m+++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m +[36m@@ -3,6 +3,7 @@[m [mpackage fr.ifremer.tutti.service.genericformat;[m + import fr.ifremer.tutti.persistence.entities.data.Program;[m + import fr.ifremer.tutti.service.PersistenceService;[m + import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser;[m +[32m+[m[32mimport fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser;[m + import fr.ifremer.tutti.service.csv.FishingOperationLocationTechnicalParser;[m + import fr.ifremer.tutti.service.csv.FishingOperationStrataTechnicalParser;[m + import fr.ifremer.tutti.service.csv.FishingOperationSubStrataTechnicalParser;[m +[36m@@ -10,7 +11,6 @@[m [mimport fr.ifremer.tutti.service.csv.GearTechnicalParser;[m + import fr.ifremer.tutti.service.csv.HarbourTechnicalParser;[m + import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser;[m + import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser;[m +[31m-import fr.ifremer.tutti.service.csv.ProgramTechnicalParser;[m + import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser;[m + import fr.ifremer.tutti.service.csv.VesselTechnicalParser;[m + [m +[36m@@ -24,8 +24,6 @@[m [mpublic class GlobalImportContext {[m + [m + private final VesselTechnicalParser vesselParser;[m + [m +[31m- private final ProgramTechnicalParser programParser;[m +[31m-[m + private final HarbourTechnicalParser harbourParser;[m + [m + private final GearTechnicalParser mandatoryGearParser;[m +[36m@@ -46,9 +44,12 @@[m [mpublic class GlobalImportContext {[m + [m + private final SpeciesTechnicalParser speciesParser;[m + [m +[32m+[m[32m private final CaracteristicValueTechnicalParser marineLitterCategoryValueParser;[m +[32m+[m +[32m+[m[32m private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser;[m +[32m+[m + public GlobalImportContext(PersistenceService persistenceService, Program program) {[m + this.vesselParser = new VesselTechnicalParser(persistenceService);[m +[31m- this.programParser = new ProgramTechnicalParser(persistenceService);[m + this.harbourParser = new HarbourTechnicalParser(persistenceService);[m + this.listPersonParser = new ListPersonTechnicalParser(persistenceService);[m + this.mandatoryGearParser = new GearTechnicalParser(persistenceService, true);[m +[36m@@ -59,16 +60,14 @@[m [mpublic class GlobalImportContext {[m + this.fishingOperationLocationParser = new FishingOperationLocationTechnicalParser(persistenceService, program.getZone().getId());[m + this.listVesselParser = new ListVesselTechnicalParser(persistenceService);[m + this.speciesParser = new SpeciesTechnicalParser(persistenceService);[m +[32m+[m[32m this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic());[m +[32m+[m[32m this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic());[m + }[m + [m + public VesselTechnicalParser getVesselParser() {[m + return vesselParser;[m + }[m + [m +[31m- public ProgramTechnicalParser getProgramParser() {[m +[31m- return programParser;[m +[31m- }[m +[31m-[m + public HarbourTechnicalParser getHarbourParser() {[m + return harbourParser;[m + }[m +[36m@@ -108,4 +107,12 @@[m [mpublic class GlobalImportContext {[m + public SpeciesTechnicalParser getSpeciesParser() {[m + return speciesParser;[m + }[m +[32m+[m +[32m+[m[32m public CaracteristicValueTechnicalParser getMarineLitterCategoryValueParser() {[m +[32m+[m[32m return marineLitterCategoryValueParser;[m +[32m+[m[32m }[m +[32m+[m +[32m+[m[32m public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() {[m +[32m+[m[32m return marineLitterSizeCategoryValueParser;[m +[32m+[m[32m }[m + }[m diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index a6e31bc..fbbca75 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -2,17 +2,17 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.csv.CaracteristicParser; -import fr.ifremer.tutti.service.csv.FishingOperationLocationParser; -import fr.ifremer.tutti.service.csv.FishingOperationStrataParser; -import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParser; -import fr.ifremer.tutti.service.csv.GearParser; -import fr.ifremer.tutti.service.csv.HarbourParser; -import fr.ifremer.tutti.service.csv.ListPersonParser; -import fr.ifremer.tutti.service.csv.ListVesselParser; -import fr.ifremer.tutti.service.csv.ProgramParser; -import fr.ifremer.tutti.service.csv.SpeciesParser; -import fr.ifremer.tutti.service.csv.VesselParser; +import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.FishingOperationLocationTechnicalParser; +import fr.ifremer.tutti.service.csv.FishingOperationStrataTechnicalParser; +import fr.ifremer.tutti.service.csv.FishingOperationSubStrataTechnicalParser; +import fr.ifremer.tutti.service.csv.GearTechnicalParser; +import fr.ifremer.tutti.service.csv.HarbourTechnicalParser; +import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser; +import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser; +import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser; +import fr.ifremer.tutti.service.csv.VesselTechnicalParser; /** * Created on 2/5/15. @@ -22,90 +22,97 @@ import fr.ifremer.tutti.service.csv.VesselParser; */ public class GlobalImportContext { - private final VesselParser vesselParser; + private final VesselTechnicalParser vesselParser; - private final ProgramParser programParser; + private final HarbourTechnicalParser harbourParser; - private final HarbourParser harbourParser; + private final GearTechnicalParser mandatoryGearParser; - private final GearParser mandatoryGearParser; + private final GearTechnicalParser optionalGearParser; - private final GearParser optionalGearParser; + private final ListPersonTechnicalParser listPersonParser; - private final ListPersonParser listPersonParser; + private final CaracteristicTechnicalParser caracteristicParser; - private final CaracteristicParser caracteristicParser; + private final FishingOperationStrataTechnicalParser fishingOperationStrataParser; - private final FishingOperationStrataParser fishingOperationStrataParser; + private final FishingOperationSubStrataTechnicalParser fishingOperationSubStrataParser; - private final FishingOperationSubStrataParser fishingOperationSubStrataParser; + private final FishingOperationLocationTechnicalParser fishingOperationLocationParser; - private final FishingOperationLocationParser fishingOperationLocationParser; + private final ListVesselTechnicalParser listVesselParser; - private final ListVesselParser listVesselParser; + private final SpeciesTechnicalParser speciesParser; - private final SpeciesParser speciesParser; + private final CaracteristicValueTechnicalParser marineLitterCategoryValueParser; + + private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser; public GlobalImportContext(PersistenceService persistenceService, Program program) { - this.vesselParser = new VesselParser(persistenceService); - this.programParser = new ProgramParser(persistenceService); - this.harbourParser = new HarbourParser(persistenceService); - this.listPersonParser = new ListPersonParser(persistenceService); - this.mandatoryGearParser = new GearParser(persistenceService, true); - this.optionalGearParser = new GearParser(persistenceService, false); - this.caracteristicParser = new CaracteristicParser(persistenceService); - this.fishingOperationStrataParser = new FishingOperationStrataParser(persistenceService, program.getZone().getId()); - this.fishingOperationSubStrataParser = new FishingOperationSubStrataParser(persistenceService, program.getZone().getId()); - this.fishingOperationLocationParser = new FishingOperationLocationParser(persistenceService, program.getZone().getId()); - this.listVesselParser = new ListVesselParser(persistenceService); - this.speciesParser = new SpeciesParser(persistenceService); + this.vesselParser = new VesselTechnicalParser(persistenceService); + this.harbourParser = new HarbourTechnicalParser(persistenceService); + this.listPersonParser = new ListPersonTechnicalParser(persistenceService); + this.mandatoryGearParser = new GearTechnicalParser(persistenceService, true); + this.optionalGearParser = new GearTechnicalParser(persistenceService, false); + this.caracteristicParser = new CaracteristicTechnicalParser(persistenceService); + this.fishingOperationStrataParser = new FishingOperationStrataTechnicalParser(persistenceService, program.getZone().getId()); + this.fishingOperationSubStrataParser = new FishingOperationSubStrataTechnicalParser(persistenceService, program.getZone().getId()); + this.fishingOperationLocationParser = new FishingOperationLocationTechnicalParser(persistenceService, program.getZone().getId()); + this.listVesselParser = new ListVesselTechnicalParser(persistenceService); + this.speciesParser = new SpeciesTechnicalParser(persistenceService); + this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic()); + this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); } - public VesselParser getVesselParser() { + public VesselTechnicalParser getVesselParser() { return vesselParser; } - public ProgramParser getProgramParser() { - return programParser; - } - - public HarbourParser getHarbourParser() { + public HarbourTechnicalParser getHarbourParser() { return harbourParser; } - public ListPersonParser getListPersonParser() { + public ListPersonTechnicalParser getListPersonParser() { return listPersonParser; } - public GearParser getMandatoryGearParser() { + public GearTechnicalParser getMandatoryGearParser() { return mandatoryGearParser; } - public GearParser getOptionalGearParser() { + public GearTechnicalParser getOptionalGearParser() { return optionalGearParser; } - public CaracteristicParser getCaracteristicParser() { + public CaracteristicTechnicalParser getCaracteristicParser() { return caracteristicParser; } - public FishingOperationStrataParser getFishingOperationStrataParser() { + public FishingOperationStrataTechnicalParser getFishingOperationStrataParser() { return fishingOperationStrataParser; } - public FishingOperationSubStrataParser getFishingOperationSubStrataParser() { + public FishingOperationSubStrataTechnicalParser getFishingOperationSubStrataParser() { return fishingOperationSubStrataParser; } - public FishingOperationLocationParser getFishingOperationLocationParser() { + public FishingOperationLocationTechnicalParser getFishingOperationLocationParser() { return fishingOperationLocationParser; } - public ListVesselParser getListVesselParser() { + public ListVesselTechnicalParser getListVesselParser() { return listVesselParser; } - public SpeciesParser getSpeciesParser() { + public SpeciesTechnicalParser getSpeciesParser() { return speciesParser; } + + public CaracteristicValueTechnicalParser getMarineLitterCategoryValueParser() { + return marineLitterCategoryValueParser; + } + + public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() { + return marineLitterSizeCategoryValueParser; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index 5668570..a796968 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -26,12 +26,10 @@ import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -69,49 +67,52 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden protected AccidentalCatchModel(char separator) { super(separator); - } protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("BatchId", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); - newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); newColumnForExport("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newColumnForExport("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID); + newColumnForExport("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("CaracteristicValue", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("CaracteristicValue_Id", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); - - //FIXME What can we do with that ? - newMandatoryColumn("BatchId", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newIgnoredColumn("Engin"); + newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("BatchId"); newMandatoryColumn("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); -// newMandatoryColumn("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newIgnoredColumn("ReferenceTaxonName"); newMandatoryColumn("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newMandatoryColumn("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); - newMandatoryColumn("CaracteristicValue", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE); + newIgnoredColumn("CaracteristicValue"); + + newMandatoryColumn("CaracteristicValue_Id", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE); } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index d5343cc..d910b5e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -25,17 +25,20 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import org.apache.commons.beanutils.PropertyUtils; +import org.nuiton.csv.ValueSetter; + +import java.io.Serializable; /** * Model of a catch export. @@ -79,18 +82,18 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); - newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); - newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); + newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); @@ -98,18 +101,19 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { String headerPrefix = entry.getCode(); int categoryOrder = entry.getOrder(); - String categoryName = CatchRow.SAMPLE_CATEGORY; - newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); - newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); - newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); + String collectionName = CatchRow.SAMPLE_CATEGORY; + newIndexNullableColumnForExport(headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", collectionName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newIndexNullableColumnForExport("Tot_" + headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); + newIndexNullableColumnForExport("Ech_" + headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); + newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); + } // mensuration - newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); + newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); @@ -122,53 +126,92 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + String headerPrefix = entry.getCode(); + int categoryOrder = entry.getOrder(); + String collectionName = CatchRow.SAMPLE_CATEGORY; + + newIndexNullableColumnForExport(headerPrefix + "_Id", collectionName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + + } + } protected void forImport(SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); + newIgnoredColumn("Engin"); + newIgnoredColumn("EnginRankOrder"); newMandatoryColumn("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); - newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); -// newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); -// newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newMandatoryColumn("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Code_Espece_Campagne"); + newIgnoredColumn("Nom_scientifique"); newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - //TODO for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { String headerPrefix = entry.getCode(); - int categoryOrder = entry.getOrder(); - String categoryName = CatchRow.SAMPLE_CATEGORY; - newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); - newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); -// newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); -// newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchRow.BATCH_WEIGHT_UNIT); + + newIgnoredColumn(headerPrefix); + newMandatoryColumn("Num_Ordre_" + headerPrefix + "_H2", TuttiCsvUtil.INTEGER, new SampleCategoryValueSetter<Integer>(entry, ExportSampleCategory.PROPERTY_RANK_ORDER)); + newMandatoryColumn("Tot_" + headerPrefix, TuttiCsvUtil.FLOAT, new SampleCategoryValueSetter<Float>(entry, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT)); + newMandatoryColumn("Ech_" + headerPrefix, TuttiCsvUtil.FLOAT, new SampleCategoryValueSetter<Float>(entry, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT)); + + newIgnoredColumn("Type_Volume_Poids_" + headerPrefix); + newIgnoredColumn("Unite_Volume_Poids_" + headerPrefix); + } // mensuration - newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); -// newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); - newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); -// newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); -// newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); + newMandatoryColumn("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newIgnoredColumn("Libelle_Longueur"); + newMandatoryColumn("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); + newMandatoryColumn("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newMandatoryColumn("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); + newIgnoredColumn("Unite_Taille"); + newIgnoredColumn("Precision_Mesure"); + newMandatoryColumn("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); + + newIgnoredColumn("Poids_Reference"); + newIgnoredColumn("Coef_Elev_Espece_Capture"); + newIgnoredColumn("Coef_Final_Elevation"); + + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + String headerPrefix = entry.getCode(); + + newMandatoryColumn(headerPrefix + "_Id", new CaracteristicValueTechnicalParser(entry.getCaracteristic()), new SampleCategoryValueSetter<Serializable>(entry, ExportSampleCategory.PROPERTY_CATEGORY_VALUE)); + + } + } + + private static class SampleCategoryValueSetter<O> implements ValueSetter<CatchRow, O> { + + private final SampleCategoryModelEntry sampleCategoryModelEntry; -// newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); -// newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); -// newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + private final String propertyName; + + public SampleCategoryValueSetter(SampleCategoryModelEntry sampleCategoryModelEntry, String propertyName) { + this.sampleCategoryModelEntry = sampleCategoryModelEntry; + this.propertyName = propertyName; + } + @Override + public void set(CatchRow row, O value) throws Exception { + + ExportSampleCategory sampleCategory = row.getSampleCategory(sampleCategoryModelEntry); + PropertyUtils.setProperty(sampleCategory, propertyName, value); + + } } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java index 7fbc73d..d9ac96a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -278,4 +279,13 @@ public class CatchRow implements Serializable { } return result; } + + public ExportSampleCategory getSampleCategory(SampleCategoryModelEntry sampleCategoryModelEntry) { + int categoryOrder = sampleCategoryModelEntry.getOrder(); + if (sampleCategory.size()< categoryOrder) { + sampleCategory.add(categoryOrder , new ExportSampleCategory()); + } + return sampleCategory.get(categoryOrder); + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index 0c20959..48019e8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -24,13 +24,11 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -57,6 +55,16 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } + @Override + public GearCaracteristicRow newEmptyInstance() { + + GearCaracteristicRow row = new GearCaracteristicRow(); + Cruise cruise = Cruises.newCruise(); + row.setCruise(cruise); + return row; + + } + protected GearCaracteristicModel(char separator) { super(separator); } @@ -64,37 +72,38 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC protected void forExport(DecoratorService decoratorService) { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Engin", GearCaracteristicRow.PROPERTY_GEAR, Gear.PROPERTY_NAME); - newColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newColumnForExport("Engin", GearCaracteristicRow.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); + newColumnForExport("EnginRankOrder", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID); + newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExportByDecorator("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); newColumnForExport("Valeur", GearCaracteristicRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, TuttiCsvUtil.GEAR_TECHNICAL_FORMATTER); + newColumnForExport("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newMandatoryColumn("Engin", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getMandatoryGearParser()); - newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); - newMandatoryColumn("Valeur", GearCaracteristicRow.PROPERTY_VALUE); - - } + newIgnoredColumn("Engin"); + //FIXME + newMandatoryColumn("EnginRankOrder", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - @Override - public GearCaracteristicRow newEmptyInstance() { + newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newIgnoredColumn("Libelle_PMFM"); + newIgnoredColumn("Valeur"); - GearCaracteristicRow row = new GearCaracteristicRow(); - Cruise cruise = Cruises.newCruise(); - row.setCruise(cruise); - return row; + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getMandatoryGearParser()); + newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index ee3f059..2f4bc65 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -26,10 +26,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -75,42 +72,46 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); - newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); - newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newColumnForExport("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID); + newColumnForExport("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("CaracteristicValue", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("CaracteristicValue_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); - -// newMandatoryColumn("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newIgnoredColumn("Engin"); + newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("BatchId"); newMandatoryColumn("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); -// newMandatoryColumn("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newIgnoredColumn("ReferenceTaxonName"); newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newMandatoryColumn("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); - newMandatoryColumn("CaracteristicValue", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE); + newIgnoredColumn("CaracteristicValue"); + + newMandatoryColumn("CaracteristicValue_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index e38a774..9c2ccbe 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -26,10 +26,9 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -72,13 +71,13 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); @@ -87,24 +86,32 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt newColumnForExport("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); newColumnForExport("Commentaire", MarineLitterBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + newColumnForExport("MarineLitterCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newColumnForExport("MarineLitterSizeCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); + newIgnoredColumn("Engin"); + newIgnoredColumn("EnginRankOrder"); - newMandatoryColumn("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, globalImportContext.getCaracteristicParser()); - newMandatoryColumn("MarineLitterSizeCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, globalImportContext.getCaracteristicParser()); + newIgnoredColumn("MarineLitterCategory"); + newIgnoredColumn("MarineLitterSizeCategory"); newMandatoryColumn("Number", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); newMandatoryColumn("Commentaire", MarineLitterBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + newMandatoryColumn("MarineLitterCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, globalImportContext.getMarineLitterCategoryValueParser()); + newMandatoryColumn("MarineLitterSizeCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, globalImportContext.getMarineLitterSizeCategoryValueParser()); + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 39f12c4..733f4e1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -27,9 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.FishingOperations; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -77,14 +75,13 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - - newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME); + newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER); @@ -95,9 +92,10 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT); newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT); newColumnForExport("Duree", OperationRow.PROPERTY_DURATION); - newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA"); - newColumnForExport("Sous_Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA"); - newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA"); + newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiCsvUtil.FISHING_OPERATION_STRATA_FORMATTER); + newColumnForExport("Sous_Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiCsvUtil.FISHING_OPERATION_SUB_STRATA_FORMATTER); + newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiCsvUtil.FISHING_OPERATION_LOCATION_FORMATTER); + newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN); newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN); newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.INTEGER_NULL_TO_9); @@ -162,93 +160,109 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newNullableColumnForExport("Poids_Total_Macro_Dechet", OperationRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); newNullableColumnForExport("Poids_Total_Macro_Dechet_Calcule", OperationRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newColumnForExport("Navire_Id", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_TECHNICAL_FORMATTER); + newColumnForExport("Strate_Id", FishingOperation.PROPERTY_STRATA, TuttiCsvUtil.FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER); + newColumnForExport("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, TuttiCsvUtil.FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER); + newColumnForExport("Localite_Id", FishingOperation.PROPERTY_LOCATION, TuttiCsvUtil.FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER); + newColumnForExport("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); + newColumnForExport("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.LIST_VESSEL_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); + newIgnoredColumn("Engin"); + newIgnoredColumn("EnginRankOrder"); - newMandatoryColumn("Navire", FishingOperation.PROPERTY_VESSEL, globalImportContext.getVesselParser()); + newIgnoredColumn("Navire"); newMandatoryColumn("DateDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND); newMandatoryColumn("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT); newMandatoryColumn("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT); newMandatoryColumn("DateFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND); newMandatoryColumn("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT); newMandatoryColumn("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT); -// newColumnForExport("Duree", OperationRow.PROPERTY_DURATION); - newMandatoryColumn("Strate", FishingOperation.PROPERTY_STRATA, globalImportContext.getFishingOperationStrataParser()); - newMandatoryColumn("Sous_Strate", FishingOperation.PROPERTY_SUB_STRATA, globalImportContext.getFishingOperationSubStrataParser()); - newMandatoryColumn("Localite", FishingOperation.PROPERTY_LOCATION, globalImportContext.getFishingOperationLocationParser()); + newIgnoredColumn("Duree"); + newIgnoredColumn("Strate"); + newIgnoredColumn("Sous_Strate"); + newIgnoredColumn("Localite"); newMandatoryColumn("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN); newMandatoryColumn("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN); newMandatoryColumn("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.INTEGER_NULL_TO_9); - newMandatoryColumn("Saisisseur", FishingOperation.PROPERTY_RECORDER_PERSON, globalImportContext.getListPersonParser()); - newMandatoryColumn("Navire_Associe", FishingOperation.PROPERTY_SECONDARY_VESSEL, globalImportContext.getListVesselParser()); + newIgnoredColumn("Saisisseur"); + newIgnoredColumn("Navire_Associe"); newMandatoryColumn("Commentaire", FishingOperation.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newMandatoryColumn("Poids_Total", OperationRow.PROPERTY_CATCH_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newNullableColumnForExport("Poids_Total_Calcule", OperationRow.PROPERTY_CATCH_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Calcule"); newMandatoryColumn("Poids_Total_Vrac", OperationRow.PROPERTY_CATCH_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Vrac_Calcule", OperationRow.PROPERTY_CATCH_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Vrac_Calcule"); newMandatoryColumn("Poids_Total_HorsVrac", OperationRow.PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_HorsVrac_Calcule", OperationRow.PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_HorsVrac_Calcule"); newMandatoryColumn("Poids_Total_Non_Trie", OperationRow.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Non_Trie_Calcule", OperationRow.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Non_Trie_Calcule"); newMandatoryColumn("Poids_Total_Tremis", OperationRow.PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Tremis_Calcule", OperationRow.PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Tremis_Calcule"); newMandatoryColumn("Poids_Total_Carroussel", OperationRow.PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Carroussel_Calcule", OperationRow.PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Carroussel_Calcule"); newMandatoryColumn("Poids_Total_Espece", OperationRow.PROPERTY_SPECIES_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Espece_Calcule", OperationRow.PROPERTY_SPECIES_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Espece_Calcule"); newMandatoryColumn("Poids_Total_Espece_Vrac", OperationRow.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Espece_Vrac_Calcule", OperationRow.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Espece_Vrac_Calcule"); newMandatoryColumn("Poids_Total_Espece_Vrac_Trie", OperationRow.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Espece_Vrac_Trie_Calcule", OperationRow.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Espece_Vrac_Trie_Calcule"); newMandatoryColumn("Poids_Total_Espece_HorsVrac", OperationRow.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Espece_HorsVrac_Calcule", OperationRow.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Espece_HorsVrac_Calcule"); newMandatoryColumn("Poids_Total_Espece_Inerte_Trie", OperationRow.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Espece_Inerte_Trie_Calcule", OperationRow.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Espece_Inerte_Trie_Calcule"); newMandatoryColumn("Poids_Total_Espece_Vivant_non_detaille_trie", OperationRow.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Espece_Vivant_non_detaille_trie_Calcule", OperationRow.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Espece_Vivant_non_detaille_trie_Calcule"); newMandatoryColumn("Poids_Total_Benthos", OperationRow.PROPERTY_BENTHOS_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Benthos_Calcule", OperationRow.PROPERTY_BENTHOS_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Benthos_Calcule"); newMandatoryColumn("Poids_Total_Benthos_Vrac", OperationRow.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Benthos_Vrac_Calcule", OperationRow.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Benthos_Vrac_Calcule"); newMandatoryColumn("Poids_Total_Benthos_Vrac_Trie", OperationRow.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Benthos_Vrac_Trie_Calcule", OperationRow.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Benthos_Vrac_Trie_Calcule"); newMandatoryColumn("Poids_Total_Benthos_HorsVrac", OperationRow.PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Benthos_HorsVrac_Calcule", OperationRow.PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Benthos_HorsVrac_Calcule"); newMandatoryColumn("Poids_Total_Benthos_Inerte_Trie", OperationRow.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Benthos_Inerte_Trie_Calcule", OperationRow.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Benthos_Inerte_Trie_Calcule"); newMandatoryColumn("Poids_Total_Benthos_Vivant_non_detaille_trie", OperationRow.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newMandatoryColumn("Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule", OperationRow.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule"); newMandatoryColumn("Poids_Total_Macro_Dechet", OperationRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); -// newNullableColumnForExport("Poids_Total_Macro_Dechet_Calcule", OperationRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN); + newIgnoredColumn("Poids_Total_Macro_Dechet_Calcule"); + + newMandatoryColumn("Navire_Id", FishingOperation.PROPERTY_VESSEL, globalImportContext.getVesselParser()); + newMandatoryColumn("Strate_Id", FishingOperation.PROPERTY_STRATA, globalImportContext.getFishingOperationStrataParser()); + newMandatoryColumn("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, globalImportContext.getFishingOperationSubStrataParser()); + newMandatoryColumn("Localite_Id", FishingOperation.PROPERTY_LOCATION, globalImportContext.getFishingOperationLocationParser()); + newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, globalImportContext.getListPersonParser()); + newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, globalImportContext.getListVesselParser()); } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index 4128b72..4743096 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -25,11 +25,10 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -72,32 +71,36 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> protected void forExport(DecoratorService decoratorService) { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID); + newColumnForExport("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExportByDecorator("Libelle_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); newColumnForExport("Valeur", ParameterRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Valeur_Id", ParameterRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); newMandatoryColumn("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); -// newMandatoryColumn("Libelle_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); - newMandatoryColumn("Valeur", ParameterRow.PROPERTY_VALUE); + newIgnoredColumn("Libelle_PMFM"); + newIgnoredColumn("Valeur"); + + newMandatoryColumn("Valeur_Id", ParameterRow.PROPERTY_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index 2f10039..b7d0ae8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -22,9 +22,8 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * To export a species used in data to export. @@ -42,21 +41,25 @@ public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesEx } + @Override + public SpeciesExportRow newEmptyInstance() { + + SpeciesExportRow row = new SpeciesExportRow(); + return row; + + } + protected SpeciesExportModel(char separator) { super(separator); } protected void forExport() { - newColumnForExport("ReferenceTaxonId", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); - newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REF_TAX_CODE); - newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_NAME); - newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE); + newColumnForExport("ReferenceTaxonId", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_REF_TAX_CODE_FORMATTER); + newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); } - @Override - public SpeciesExportRow newEmptyInstance() { - return new SpeciesExportRow(); - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index a4f038d..c46da8a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -25,9 +25,8 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** @@ -54,6 +53,16 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } + @Override + public SurveyRow newEmptyInstance() { + + Cruise cruise = Cruises.newCruise(); + SurveyRow row = new SurveyRow(); + row.setCruise(cruise); + return row; + + } + protected SurveyModel(char separator) { super(separator); } @@ -61,49 +70,50 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER); - newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiLocation.PROPERTY_LABEL); - newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME); + newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiCsvUtil.COUNTRY_FORMATTER); + newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiCsvUtil.PROGRAM_ZONE_FORMATTER); newColumnForExport("Campagne", Cruise.PROPERTY_NAME); newColumnForExport("Id_Sismer", SurveyRow.PROPERTY_ID_SISMER); newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND); - newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiLocation.PROPERTY_NAME); + newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_FORMATTER); newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND); - newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiLocation.PROPERTY_NAME); + newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_FORMATTER); newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_FORMATTER); newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_FORMATTER); newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + newColumnForExport("Navire_Id", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_TECHNICAL_FORMATTER); + newColumnForExport("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER); + newColumnForExport("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER); + newColumnForExport("Chef_Mission_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); + newColumnForExport("Resp_Salle_Tri_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); + } protected void forImport(GlobalImportContext globalImportContext) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - - newMandatoryColumn("Navire", Cruise.PROPERTY_VESSEL, globalImportContext.getVesselParser()); + newIgnoredColumn("Navire"); newMandatoryColumn("Campagne", Cruise.PROPERTY_NAME); newMandatoryColumn("Id_Sismer", SurveyRow.PROPERTY_ID_SISMER); newMandatoryColumn("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND); - newMandatoryColumn("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, globalImportContext.getHarbourParser()); + newIgnoredColumn("Port_Deb_Campagne"); newMandatoryColumn("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND); - newMandatoryColumn("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, globalImportContext.getHarbourParser()); - newMandatoryColumn("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, globalImportContext.getListPersonParser()); - newMandatoryColumn("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, globalImportContext.getListPersonParser()); + newIgnoredColumn("Port_Fin_Campagne"); + newIgnoredColumn("Chef_Mission"); + newIgnoredColumn("Resp_Salle_Tri"); newMandatoryColumn("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - } - - @Override - public SurveyRow newEmptyInstance() { - - Cruise cruise = Cruises.newCruise(); - SurveyRow surveyRow = new SurveyRow(); - surveyRow.setCruise(cruise); - return surveyRow; + newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, globalImportContext.getVesselParser()); + newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, globalImportContext.getHarbourParser()); + newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, globalImportContext.getHarbourParser()); + newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_PROGRAM, globalImportContext.getListPersonParser()); + newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_PROGRAM, globalImportContext.getListPersonParser()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit dff04e67512eeace72e35c697df41db387a3cfeb Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 16:10:52 2015 +0100 revert Speciess modification (see commit 9b885ba813850b9fc816e604210b8ee1ccbf2e5d) --- .../tutti/persistence/TuttiPersistenceImpl.java | 2 +- .../persistence/entities/referential/Speciess.java | 7 +++- .../SpeciesPersistenceServiceReadTest.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 4 +- .../csv/AbstractTuttiImportExportModel.java | 2 +- .../service/csv/ProgramTechnicalFormatter.java | 23 ------------ .../tutti/service/csv/ProgramTechnicalParser.java | 43 ---------------------- .../tutti/service/csv/SpeciesTechnicalParser.java | 16 +++----- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 2 - .../ui/swing/action/ImportProtocolAction.java | 2 +- .../action/SelectSpeciesForBenthosBatchAction.java | 2 +- ...SpeciesForIndividualObservationBatchAction.java | 2 +- .../action/SelectSpeciesForSpeciesBatchAction.java | 2 +- .../content/protocol/EditProtocolUIHandler.java | 2 +- .../content/protocol/EditProtocolUIModel.java | 10 ++--- 15 files changed, 26 insertions(+), 95 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index f45dd85..0a96870 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -817,7 +817,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { // see http://forge.codelutin.com/issues/4154 List<Species> allReferentSpecies = getAllReferentSpecies(); - Map<String, Species> map = Speciess.splitByReferenceTaxonId(allReferentSpecies); + Map<String, Species> map = Speciess.splitByTaxonId(allReferentSpecies); if (!protocol.isSpeciesEmpty()) { Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index fddb39f..ab869e1 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -106,10 +106,14 @@ public class Speciess extends AbstractSpeciess { } }; - public static Map<String, Species> splitByReferenceTaxonId(Iterable<Species> list) { + public static Map<String, Species> splitByTaxonId(Iterable<Species> list) { return Maps.uniqueIndex(list, GET_REFERECE_TAXON_ID); } + public static Multimap<String, Species> splitByReferenceTaxonId(Iterable<Species> list) { + return Multimaps.index(list, GET_REFERECE_TAXON_ID); + } + public static Multimap<String, Species> splitByRefTaxCode(Iterable<Species> list) { return Multimaps.index(list, GET_REF_TAX_CODE); } @@ -124,5 +128,4 @@ public class Speciess extends AbstractSpeciess { Sets.newHashSet(Lists.transform(list, GET_REFERECE_TAXON_ID)); return result; } - } diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java index 1be7bf9..bf2f0e8 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java @@ -57,7 +57,7 @@ public class SpeciesPersistenceServiceReadTest extends ReferentialPersistenceSer TuttiEntities.splitById(result); assertResultList(result, fixtures.refNbReferentSpecies()); - Speciess.splitByReferenceTaxonId(result); + Speciess.splitByTaxonId(result); } @Test diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 5c72706..59e208d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -540,7 +540,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isSpeciesEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByReferenceTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getSpecies()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); @@ -574,7 +574,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isBenthosEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByReferenceTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getBenthos()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 6601161..22a5cd3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -51,7 +51,7 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx if (species == null) { species = Lists.newArrayList(); } - Map<String, Species> universe = Speciess.splitByReferenceTaxonId(species); + Map<String, Species> universe = Speciess.splitByTaxonId(species); newMandatoryColumn(propertyName, propertyName, new ForeignKeyParserFormatter<>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, universe)); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalFormatter.java deleted file mode 100644 index b2fee74..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Program; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ProgramTechnicalFormatter implements ValueFormatter<Program> { - - @Override - public String format(Program value) { - String result = ""; - if (value != null) { - result = TuttiEntities.GET_ID.apply(value); - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalParser.java deleted file mode 100644 index b9cbd10..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ProgramTechnicalParser implements ValueParser<Program> { - - private final PersistenceService persistenceService; - - private Map<String, Program> programsById; - - public ProgramTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Program parse(String value) throws ParseException { - - if (programsById == null) { - List<Program> allProgram = persistenceService.getAllProgram(); - programsById = TuttiEntities.splitById(allProgram); - } - Program program = programsById.get(value); - - if (program == null) { - throw new ParseException("Could not found a program with name " + value, 0); - } - return program; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java index c1a69c1..ea93f81 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java @@ -1,16 +1,13 @@ package fr.ifremer.tutti.service.csv; -import com.google.common.collect.Iterables; -import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; import fr.ifremer.tutti.service.PersistenceService; -import org.apache.commons.collections4.CollectionUtils; import org.nuiton.csv.ValueParser; import java.text.ParseException; -import java.util.Collection; import java.util.List; +import java.util.Map; /** * Created on 2/5/15. @@ -22,7 +19,7 @@ public class SpeciesTechnicalParser implements ValueParser<Species> { private final PersistenceService persistenceService; - private Multimap<String, Species> speciesByReferenceTaxonId; + private Map<String, Species> speciesByReferenceTaxonId; public SpeciesTechnicalParser(PersistenceService persistenceService) { this.persistenceService = persistenceService; @@ -33,14 +30,13 @@ public class SpeciesTechnicalParser implements ValueParser<Species> { if (speciesByReferenceTaxonId == null) { List<Species> gears = persistenceService.getAllReferentSpecies(); - speciesByReferenceTaxonId = Speciess.splitByReferenceTaxonId(gears); + speciesByReferenceTaxonId = Speciess.splitByTaxonId(gears); } - Collection<Species> specieses = speciesByReferenceTaxonId.get(value); + Species species = speciesByReferenceTaxonId.get(value); - if (CollectionUtils.isEmpty(specieses)) { - throw new ParseException("Could not found a species with referenceTaxonId " + value, 0); + if (species == null) { + throw new ParseException("Could not found a referent species with referenceTaxonId " + value, 0); } - Species species = Iterables.get(specieses, 0); return species; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index d3c219a..de1565f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -199,8 +199,6 @@ public class TuttiCsvUtil extends Common { public static final ValueFormatter<Program> PROGRAM_FORMATTER = new ProgramFormatter(); - public static final ValueFormatter<Program> PROGRAM_TECHNICAL_FORMATTER = new ProgramTechnicalFormatter(); - public static final ValueFormatter<Gear> GEAR_FORMATTER = new GearFormatter(); public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = new GearTechnicalFormatter(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java index d4c8c26..189adc5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java @@ -117,7 +117,7 @@ public class ImportProtocolAction extends AbstractChangeScreenAction { if (doAction) { - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByReferenceTaxonId( + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( getDataContext().getReferentSpecies()); // clean species diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java index 48b8e24..8d8cab8 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForBenthosBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByReferenceTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java index 0ca62ca..e5795d6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java @@ -84,7 +84,7 @@ public class SelectSpeciesForIndividualObservationBatchAction extends AbstractTu if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByReferenceTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java index 0d341e3..174b73a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForSpeciesBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByReferenceTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 44e9159..9f4f872 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -185,7 +185,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI Speciess.splitByReferenceTaxonId(allSpecies); model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByReferenceTaxonId( + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( getDataContext().getReferentSpecies()); model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java index 0ef2903..11d4055 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java @@ -193,11 +193,11 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, this.caracteristicMappingRows = new HashMap<Caracteristic, EditProtocolCaracteristicsRowModel>( Maps.uniqueIndex(caracteristicMappingRows, new Function<EditProtocolCaracteristicsRowModel, Caracteristic>() { - @Override - public Caracteristic apply(EditProtocolCaracteristicsRowModel editProtocolCaracteristicsRowModel) { - return editProtocolCaracteristicsRowModel.getPsfm(); - } - }) + @Override + public Caracteristic apply(EditProtocolCaracteristicsRowModel editProtocolCaracteristicsRowModel) { + return editProtocolCaracteristicsRowModel.getPsfm(); + } + }) ); firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, caracteristicMappingRows); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6d806d43415d0cbfda67c24b0f269ec0ae5391e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 16:23:36 2015 +0100 add a nice precondition to be sure to use always a list of referent species while invoking the method Speciess#splitReferenceSpeciesByReferenceTaxonId --- .../tutti/persistence/TuttiPersistenceImpl.java | 2 +- .../persistence/entities/referential/Speciess.java | 18 +++++++++++++++++- .../referential/SpeciesPersistenceServiceReadTest.java | 2 +- .../fr/ifremer/tutti/service/PersistenceService.java | 4 ++-- .../service/csv/AbstractTuttiImportExportModel.java | 2 +- .../tutti/service/csv/SpeciesTechnicalParser.java | 4 ++-- .../tutti/ui/swing/action/ImportProtocolAction.java | 5 +++-- .../action/SelectSpeciesForBenthosBatchAction.java | 2 +- ...lectSpeciesForIndividualObservationBatchAction.java | 2 +- .../action/SelectSpeciesForSpeciesBatchAction.java | 2 +- .../swing/content/protocol/EditProtocolUIHandler.java | 4 ++-- 11 files changed, 32 insertions(+), 15 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 0a96870..1dda3e4 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -817,7 +817,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { // see http://forge.codelutin.com/issues/4154 List<Species> allReferentSpecies = getAllReferentSpecies(); - Map<String, Species> map = Speciess.splitByTaxonId(allReferentSpecies); + Map<String, Species> map = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); if (!protocol.isSpeciesEmpty()) { Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index ab869e1..1b52844 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -106,7 +106,23 @@ public class Speciess extends AbstractSpeciess { } }; - public static Map<String, Species> splitByTaxonId(Iterable<Species> list) { + /** + * Indexe une liste d'espèces référentes par la propriété {@link Species#PROPERTY_REFERENCE_TAXON_ID}. + * + * Attention de ne pas utiliser cette méthode sur une liste d'espèces non référentes, car le {@link Species#PROPERTY_REFERENCE_TAXON_ID} + * peut servir pour différentes espèces (le référent et ses synonymes). + * + * Cette méthode vérifie donc avant d'effectuer le split que toutes les espèces données sont référentes. + * + * @param list la liste des espèces référentes. + * @return la dictionnaire des espèces référentes indexées par leur code {@link Species#PROPERTY_REFERENCE_TAXON_ID}. + */ + public static Map<String, Species> splitReferenceSpeciesByReferenceTaxonId(Iterable<Species> list) { + + for (Species species : list) { + Preconditions.checkArgument(species.isReferenceTaxon(), "L'espèce " + species.getId() + " n'est pas référente."); + } + return Maps.uniqueIndex(list, GET_REFERECE_TAXON_ID); } diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java index bf2f0e8..322084f 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java @@ -57,7 +57,7 @@ public class SpeciesPersistenceServiceReadTest extends ReferentialPersistenceSer TuttiEntities.splitById(result); assertResultList(result, fixtures.refNbReferentSpecies()); - Speciess.splitByTaxonId(result); + Speciess.splitReferenceSpeciesByReferenceTaxonId(result); } @Test diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 59e208d..0b39493 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -540,7 +540,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isSpeciesEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getSpecies()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); @@ -574,7 +574,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isBenthosEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getBenthos()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 22a5cd3..97b22d8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -51,7 +51,7 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx if (species == null) { species = Lists.newArrayList(); } - Map<String, Species> universe = Speciess.splitByTaxonId(species); + Map<String, Species> universe = Speciess.splitReferenceSpeciesByReferenceTaxonId(species); newMandatoryColumn(propertyName, propertyName, new ForeignKeyParserFormatter<>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, universe)); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java index ea93f81..c54a9b0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java @@ -29,8 +29,8 @@ public class SpeciesTechnicalParser implements ValueParser<Species> { public Species parse(String value) throws ParseException { if (speciesByReferenceTaxonId == null) { - List<Species> gears = persistenceService.getAllReferentSpecies(); - speciesByReferenceTaxonId = Speciess.splitByTaxonId(gears); + List<Species> referentSpecies = persistenceService.getAllReferentSpecies(); + speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); } Species species = speciesByReferenceTaxonId.get(value); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java index 189adc5..c61c8be 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java @@ -44,6 +44,7 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; import javax.swing.UIManager; import java.io.File; +import java.util.List; import java.util.Map; import java.util.Set; @@ -117,8 +118,8 @@ public class ImportProtocolAction extends AbstractChangeScreenAction { if (doAction) { - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( - getDataContext().getReferentSpecies()); + List<Species> referentSpecies = getDataContext().getReferentSpecies(); + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); // clean species doAction = cleanSpecies(allReferentSpeciesByTaxonId, protocol); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java index 8d8cab8..945c3c3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForBenthosBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java index e5795d6..f692047 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java @@ -84,7 +84,7 @@ public class SelectSpeciesForIndividualObservationBatchAction extends AbstractTu if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java index 174b73a..faf18c2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForSpeciesBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 9f4f872..d47e74d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -185,8 +185,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI Speciess.splitByReferenceTaxonId(allSpecies); model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( - getDataContext().getReferentSpecies()); + List<Species> referentSpecies = getDataContext().getReferentSpecies(); + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); List<Caracteristic> caracteristics = Lists.newArrayList(getDataContext().getCaracteristics()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 282106fb7132dff75549c9b03e5598164f442e2b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:38:37 2015 +0100 fix full name function --- .../fr/ifremer/tutti/persistence/entities/referential/Persons.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java index 5a0365c..7761a6e 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java @@ -65,9 +65,7 @@ public class Persons extends AbstractPersons { public static final Function<Person, String> GET_FULL_NAME = new Function<Person, String>() { @Override public String apply(Person input) { - return StringUtils.lowerCase( - StringUtils.trimToEmpty(input.getFirstName()) + - StringUtils.trimToEmpty(input.getLastName())); + return StringUtils.trimToEmpty(input.getFirstName()) + " " + StringUtils.trimToEmpty(input.getLastName()); } }; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6347e72175a471332f153c8cd438a89ae9928cbd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:38:50 2015 +0100 can have null caracteristic to export --- .../fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java index 13b65d3..cc478ca 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java @@ -15,7 +15,7 @@ public class CaracteristicTechnicalFormatter implements ValueFormatter<Caracteri @Override public String format(Caracteristic value) { - String result = TuttiEntities.GET_ID.apply(value); + String result = value == null ? "" : TuttiEntities.GET_ID.apply(value); return result; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c53c64074af7f0bc2e57034bb29c9c9462b8cca7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:39:09 2015 +0100 fix column names --- .../fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index c46da8a..7b3a4a5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -88,8 +88,8 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newColumnForExport("Navire_Id", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_TECHNICAL_FORMATTER); newColumnForExport("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER); newColumnForExport("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER); - newColumnForExport("Chef_Mission_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); - newColumnForExport("Resp_Salle_Tri_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); + newColumnForExport("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); + newColumnForExport("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); } @@ -112,8 +112,8 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, globalImportContext.getVesselParser()); newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, globalImportContext.getHarbourParser()); newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, globalImportContext.getHarbourParser()); - newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_PROGRAM, globalImportContext.getListPersonParser()); - newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_PROGRAM, globalImportContext.getListPersonParser()); + newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, globalImportContext.getListPersonParser()); + newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, globalImportContext.getListPersonParser()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 008a8b14aa660cc152b3b6e8639e87b87ecf979d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:40:46 2015 +0100 add sample category export + fix species export (do not use id but referenceTaxonId) --- .../service/genericformat/GlobalExportContext.java | 21 ++++++-- .../genericformat/csv/SampleCategoryModel.java | 61 ++++++++++++++++++++++ .../genericformat/csv/SampleCategoryRow.java | 53 +++++++++++++++++++ .../producer/CsvProducerForSampleCategory.java | 40 ++++++++++++++ .../producer/CsvProducerForSpecies.java | 47 +++++++++-------- 5 files changed, 197 insertions(+), 25 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java index 15c228d..68adad7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -1,12 +1,12 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.Maps; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.catches.WeightComputingService; @@ -26,6 +26,7 @@ import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualO import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; @@ -92,6 +93,8 @@ public class GlobalExportContext implements Closeable { private final CsvProducerForTemporaryVessel producerForTemporaryVessel; + private final CsvProducerForSampleCategory producerForSampleCategory; + protected String checkError; GlobalExportContext(File basedir, @@ -112,23 +115,25 @@ public class GlobalExportContext implements Closeable { this.genderCaracteristic = persistenceService.getSexCaracteristic(); List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); - Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); + Map<String, Species> speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); this.producerForSurvey = new CsvProducerForSurvey(basedir, SurveyModel.forExport(csvSeparator)); this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(basedir, GearCaracteristicModel.forExport(csvSeparator, decoratorService)); this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator)); this.producerForIndividualObservation = new CsvProducerForIndividualObservation(basedir, IndividualObservationModel.forExport(csvSeparator)); - this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesById); + this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesByReferenceTaxonId); this.producerForCatch = new CsvProducerForCatch(basedir, CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(basedir, AccidentalCatchModel.forExport(csvSeparator)); this.producerForParameter = new CsvProducerForParameter(basedir, ParameterModel.forExport(csvSeparator, decoratorService)); this.producerForMarineLitter = new CsvProducerForMarineLitter(basedir, MarineLitterModel.forExport(csvSeparator)); + this.producerForSampleCategory = new CsvProducerForSampleCategory(basedir, fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel.forExport(csvSeparator)); this.producerForTemporaryGear = new CsvProducerForTemporaryGear(new File(basedir, "temporaryGears.csv"), csvSeparator); this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(new File(basedir, "temporaryPersons.csv"), csvSeparator); this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(new File(basedir, "temporarySpecies.csv"), csvSeparator); this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(new File(basedir, "temporaryVessels.csv"), csvSeparator); + this.protocolFile = new File(basedir, "protocol.tuttiProtocol"); } @@ -158,6 +163,7 @@ public class GlobalExportContext implements Closeable { @Override public void close() throws IOException { + IOUtils.closeQuietly(producerForSurvey); IOUtils.closeQuietly(producerForSpecies); IOUtils.closeQuietly(producerForGearCaracteristics); @@ -171,6 +177,8 @@ public class GlobalExportContext implements Closeable { IOUtils.closeQuietly(producerForTemporaryPerson); IOUtils.closeQuietly(producerForTemporarySpecies); IOUtils.closeQuietly(producerForTemporaryVessel); + IOUtils.closeQuietly(producerForSampleCategory); + } public String getCheckError() { @@ -233,8 +241,15 @@ public class GlobalExportContext implements Closeable { return producerForTemporaryVessel; } + public CsvProducerForSampleCategory getProducerForSampleCategory() { + return producerForSampleCategory; + } + public File getProtocolFile() { return protocolFile; } + public SampleCategoryModel getSampleCategoryModel() { + return sampleCategoryModel; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java new file mode 100644 index 0000000..bb63285 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java @@ -0,0 +1,61 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCategoryRow> { + + public static SampleCategoryModel forExport(char separator) { + + SampleCategoryModel exportModel = new SampleCategoryModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static SampleCategoryModel forImport(char separator, GlobalImportContext globalImportContext) { + + SampleCategoryModel importModel = new SampleCategoryModel(separator); + importModel.forImport(globalImportContext); + return importModel; + + } + + @Override + public SampleCategoryRow newEmptyInstance() { + + SampleCategoryRow row = new SampleCategoryRow(); + row.setSampleCategoryModelEntry(new SampleCategoryModelEntry()); + return row; + + } + + protected SampleCategoryModel(char separator) { + super(separator); + } + + protected void forExport() { + + newColumnForExport(SampleCategoryRow.PROPERTY_CODE); + newColumnForExport(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); + newColumnForExport(SampleCategoryRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + + } + + protected void forImport(GlobalImportContext globalImportContext) { + + newMandatoryColumn(SampleCategoryRow.PROPERTY_CODE); + newMandatoryColumn(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); + newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java new file mode 100644 index 0000000..e09bb42 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java @@ -0,0 +1,53 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; + +import java.io.Serializable; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class SampleCategoryRow implements Serializable { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_CODE = "code"; + + public static final String PROPERTY_ORDER = "order"; + + public static final String PROPERTY_CARACTERISTIC = "caracteristic"; + + private SampleCategoryModelEntry sampleCategoryModelEntry; + + public void setSampleCategoryModelEntry(SampleCategoryModelEntry sampleCategoryModelEntry) { + this.sampleCategoryModelEntry = sampleCategoryModelEntry; + } + + public String getCode() { + return sampleCategoryModelEntry.getCode(); + } + + public Caracteristic getCaracteristic() { + return sampleCategoryModelEntry.getCaracteristic(); + } + + public int getOrder() { + return sampleCategoryModelEntry.getOrder(); + } + + public void setOrder(int order) { + sampleCategoryModelEntry.setOrder(order); + } + + public void setCaracteristic(Caracteristic caracteristic) { + sampleCategoryModelEntry.setCaracteristic(caracteristic); + } + + public void setCode(String code) { + sampleCategoryModelEntry.setCode(code); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java new file mode 100644 index 0000000..d26f735 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java @@ -0,0 +1,40 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForSampleCategory extends CsvProducer<SampleCategoryRow, SampleCategoryModel> { + + public CsvProducerForSampleCategory(File basedir, SampleCategoryModel model) { + super(new File(basedir, "sampleCategory.csv"), model); + } + + public List<SampleCategoryRow> getDataToExport(fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel) { + + List<SampleCategoryRow> rows = new ArrayList<>(); + + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + SampleCategoryRow row = new SampleCategoryRow(); + row.setSampleCategoryModelEntry(entry); + rows.add(row); + + } + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java index 18362a8..ec99aa0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java @@ -7,7 +7,6 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.GlobalExportContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; @@ -27,16 +26,16 @@ import java.util.Map; */ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, SpeciesExportModel> { - final Map<String, Species> speciesById; + final Map<String, Species> speciesByReferenceTaxonId; final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesById) { + public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesByReferenceTaxonId) { super(new File(basedir, "species.csv"), model); - this.speciesById = speciesById; + this.speciesByReferenceTaxonId = speciesByReferenceTaxonId; } - public void prepareSpeciesBatchRows(GlobalExportContext exportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch) { + public void prepareSpeciesBatchRows(BatchContainer<SpeciesBatch> rootSpeciesBatch) { for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { addSpecies(speciesBatch.getSpecies()); @@ -44,7 +43,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void prepareBenthosBatchRows(GlobalExportContext exportContext, BatchContainer<BenthosBatch> rootBenthosBatch) { + public void prepareBenthosBatchRows(BatchContainer<BenthosBatch> rootBenthosBatch) { for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { addSpecies(benthosBatch.getSpecies()); @@ -52,7 +51,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void prepareIndividualRows(GlobalExportContext exportContext, List<IndividualObservationRow> rows) { + public void prepareIndividualRows(List<IndividualObservationRow> rows) { for (IndividualObservationRow row : rows) { addSpecies(row.getSpecies()); @@ -60,7 +59,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void prepareAccidentalRows(GlobalExportContext exportContext, List<AccidentalCatchRow> rows) { + public void prepareAccidentalRows(List<AccidentalCatchRow> rows) { for (AccidentalCatchRow row : rows) { addSpecies(row.getSpecies()); @@ -68,21 +67,8 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void addSpecies(Species species) { - String speciesId = species.getId(); - if (!speciesToExport.containsKey(speciesId)) { - - // not treated species, add a new row - Species fullSpecies = speciesById.get(speciesId); - SpeciesExportRow row = new SpeciesExportRow(); - row.setSpecies(fullSpecies); - speciesToExport.put(speciesId, row); - // add the survey code (see http://forge.codelutin.com/issues/4799) - species.setSurveyCode(fullSpecies.getSurveyCode()); - } - } + public List<SpeciesExportRow> getDataToExport() { - public List<SpeciesExportRow> getSpeciesToExport() { List<SpeciesExportRow> result = Lists.newArrayList(speciesToExport.values()); Collections.sort(result, new Comparator<SpeciesExportRow>() { @@ -92,6 +78,23 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } }); return result; + + } + + protected void addSpecies(Species species) { + + String speciesId = String.valueOf(species.getReferenceTaxonId()); + + if (!speciesToExport.containsKey(speciesId)) { + + // not treated species, add a new row + Species fullSpecies = speciesByReferenceTaxonId.get(speciesId); + SpeciesExportRow row = new SpeciesExportRow(); + row.setSpecies(fullSpecies); + speciesToExport.put(speciesId, row); + // add the survey code (see http://forge.codelutin.com/issues/4799) + species.setSurveyCode(fullSpecies.getSurveyCode()); + } } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit d03e0b366e478a2f23fd8a197bc2babd4074277a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:41:58 2015 +0100 check cruises for program export + improve export shared code --- .../genericformat/GenericFormatExportService.java | 355 +++++++++++++-------- .../resources/i18n/tutti-service_en_GB.properties | 5 + .../resources/i18n/tutti-service_fr_FR.properties | 6 +- 3 files changed, 232 insertions(+), 134 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 55c00c3..becbd4a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.genericformat; * #L% */ +import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.ProgressionModel; @@ -33,6 +34,7 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -53,6 +55,7 @@ import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAccidentalCatch; @@ -62,12 +65,9 @@ import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualO import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; @@ -77,9 +77,12 @@ import fr.ifremer.tutti.service.referential.csv.GearRow; import fr.ifremer.tutti.service.referential.csv.PersonRow; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import fr.ifremer.tutti.service.referential.csv.VesselRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.collections4.MapUtils; -import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -88,6 +91,8 @@ import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -138,13 +143,13 @@ public class GenericFormatExportService extends AbstractTuttiService { public ProgressionModel createExportProgramProgessionModel(String programId) { - // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + (protocol + - // temporary gear + temporary person + temporar species + temporary vessel + zip) + // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litters) + + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) List<Cruise> allCruise = persistenceService.getAllCruise(programId); ProgressionModel progressionModel = new ProgressionModel(); - progressionModel.setTotal(9 * allCruise.size() + 6); + progressionModel.setTotal(9 * allCruise.size() + 8); return progressionModel; } @@ -163,36 +168,51 @@ public class GenericFormatExportService extends AbstractTuttiService { List<Cruise> allCruise = persistenceService.getAllCruise(programId); - File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); + ApplicationBusinessException checkError = null; + try { + checkProgramCruises(progressionModel, allCruise); + } catch (ApplicationBusinessException e) { + // error while checking cruise + if (log.isDebugEnabled()) { + log.debug("Got a check cruise error", e); + } + checkError = e; + } + File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - GlobalExportContext exportContext = createExportContext(basedir); - exportTechnicalFiles(exportContext, progressionModel); + try (GlobalExportContext exportContext = createExportContext(basedir)) { - try { for (Cruise cruise : allCruise) { + // load full cruise cruise = persistenceService.getCruise(cruise.getId()); exportCruise(cruise, exportContext, progressionModel); + } - ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); + terminatesExport(exportContext, progressionModel); - ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); - } finally { - IOUtils.closeQuietly(exportContext); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create program export", e); } + + buildExportZip(basedir, exportFile, progressionModel); + + if (checkError != null) { + throw checkError; + } + } public ProgressionModel createExportCruiseProgessionModel() { - // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + - // (protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) + // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litter) + + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) ProgressionModel progressionModel = new ProgressionModel(); - progressionModel.setTotal(9 + 6); + progressionModel.setTotal(9 + 8); return progressionModel; } @@ -225,110 +245,21 @@ public class GenericFormatExportService extends AbstractTuttiService { ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - GlobalExportContext exportContext = createExportContext(basedir); - - exportTechnicalFiles(exportContext, progressionModel); + try (GlobalExportContext exportContext = createExportContext(basedir)) { - try { exportCruise(cruise, exportContext, progressionModel); - ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); + terminatesExport(exportContext, progressionModel); - ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); - } catch (ApplicationBusinessException e) { - if (checkError != null) { - throw checkError; - } - throw e; - } finally { - IOUtils.closeQuietly(exportContext); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create cruise export", e); } + buildExportZip(basedir, exportFile, progressionModel); + if (checkError != null) { throw checkError; } - } - - protected void exportTechnicalFiles(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - exportProtocol(exportContext, progressionModel); - exportTemporaryGears(exportContext, progressionModel); - exportTemporaryPersons(exportContext, progressionModel); - exportTemporarySpeciess(exportContext, progressionModel); - exportTemporaryVessels(exportContext, progressionModel); - - } - - protected void exportTemporaryGears(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); - - try { - - CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); - - List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary gear", e); - } - - } - - protected void exportTemporaryPersons(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); - - try { - - CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); - - List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary person", e); - } - - } - - protected void exportTemporarySpeciess(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); - - try { - - CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); - - List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary species", e); - } - - } - - protected void exportTemporaryVessels(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); - - try { - - CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); - - List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); - producerForTemporaryVessel.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary vessels", e); - } } @@ -367,22 +298,25 @@ public class GenericFormatExportService extends AbstractTuttiService { ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - GlobalExportContext exportContext = createExportContext(basedir); + try (GlobalExportContext exportContext = createExportContext(basedir)) { - FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); + FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); - try { exportCruise(cruise, Lists.newArrayList(fishingOperation), exportContext, null); - ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - } finally { - IOUtils.closeQuietly(exportContext); + + terminatesExport(exportContext, null); + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create cruise export", e); } if (checkError != null) { // rethrow error throw checkError; } + return basedir; + } protected GlobalExportContext createExportContext(File basedir) { @@ -396,7 +330,46 @@ public class GenericFormatExportService extends AbstractTuttiService { } + protected void checkProgramCruises(ProgressionModel progressionModel, List<Cruise> allCruise) { + + List<String> errorsByCruise = new ArrayList<>(); + for (Cruise cruise : allCruise) { + + cruise = persistenceService.getCruise(cruise.getId()); + String error = getCruiseErrors(progressionModel, cruise, null); + + if (error != null) { + + if (log.isInfoEnabled()) { + log.info("Found some errors on cruise: " + cruise.getName()); + } + errorsByCruise.add(error); + + } + + } + + if (!errorsByCruise.isEmpty()) { + + // At least one cruise is bad + String errorMessage = Joiner.on("\n").join(errorsByCruise); + throw new ApplicationBusinessException(errorMessage); + + } + } + protected void checkCruise(ProgressionModel progressionModel, Cruise cruise, String fishingOperationId) { + + String error = getCruiseErrors(progressionModel, cruise, fishingOperationId); + + if (error != null) { + throw new ApplicationBusinessException(error); + } + + } + + protected String getCruiseErrors(ProgressionModel progressionModel, Cruise cruise, String fishingOperationId) { + Preconditions.checkNotNull(cruise); increments(progressionModel, t("tutti.service.exportCruise.checkCruise", cruise.getName())); @@ -404,13 +377,17 @@ public class GenericFormatExportService extends AbstractTuttiService { // check cruise fishing operations Map<String, String> errors = weightComputingService.checkCruise(cruise.getId(), fishingOperationId); - if (MapUtils.isNotEmpty(errors)) { + String result; - // there is some fishing operations with some errors + if (MapUtils.isEmpty(errors)) { - Decorator<Cruise> cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); + result = null; + + } else { + Decorator<Cruise> cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); Decorator<FishingOperation> fishingOperationDecorator = decoratorService.getDecoratorByType(FishingOperation.class); + StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : errors.entrySet()) { String operationId = entry.getKey(); @@ -419,8 +396,12 @@ public class GenericFormatExportService extends AbstractTuttiService { sb.append(t("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue())); } String cruiseStr = cruiseDecorator.toString(cruise); - throw new ApplicationBusinessException(t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString())); + result = t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString()); + } + + return result; + } protected void increments(ProgressionModel progressionModel, String message) { @@ -432,6 +413,118 @@ public class GenericFormatExportService extends AbstractTuttiService { } } + protected void terminatesExport(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + SampleCategoryModel sampleCategoryModel = exportContext.getSampleCategoryModel(); + increments(progressionModel, t("tutti.service.genericExport.exportSampleCategoyModel", sampleCategoryModel.getNbSampling())); + exportSampleCategoryModel(exportContext, sampleCategoryModel); + + exportProtocol(exportContext, progressionModel); + + List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); + exportTemporaryGears(exportContext, temporaryGears); + + List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); + exportTemporaryPersons(exportContext, temporaryPersons); + + List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); + exportTemporarySpeciess(exportContext, temporarySpeciess); + + List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); + exportTemporaryVessels(exportContext, temporaryVessels); + + increments(progressionModel, t("tutti.service.genericExport.exportSpecies")); + exportSpecies(exportContext); + + } + + protected void buildExportZip(File basedir, File exportFile, ProgressionModel progressionModel) { + + increments(progressionModel, t("tutti.service.genericExport.buildZip", exportFile)); + + ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.genericExport.zip.error", exportFile)); + + } + + protected void exportTemporaryGears(GlobalExportContext exportContext, List<Gear> temporaryGears) { + + try { + + CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); + + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary gear", e); + } + + } + + protected void exportTemporaryPersons(GlobalExportContext exportContext, List<Person> temporaryPersons) { + + try { + + CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); + + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); + } + + } + + protected void exportTemporarySpeciess(GlobalExportContext exportContext, List<Species> temporarySpeciess) { + + try { + + CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); + + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); + } + + } + + protected void exportTemporaryVessels(GlobalExportContext exportContext, List<Vessel> temporaryVessels) { + + try { + + CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); + + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); + producerForTemporaryVessel.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); + } + + } + + protected void exportSampleCategoryModel(GlobalExportContext exportContext, SampleCategoryModel sampleCategoryModel) { + + try { + + CsvProducerForSampleCategory producerForSampleCategory = exportContext.getProducerForSampleCategory(); + + List<SampleCategoryRow> dataToExport = producerForSampleCategory.getDataToExport(sampleCategoryModel); + producerForSampleCategory.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export sample categories gear", e); + } + + } + protected void exportProtocol(GlobalExportContext exportContext, ProgressionModel progressionModel) { boolean protocolFilled = context.getDataContext().isProtocolFilled(); @@ -488,8 +581,6 @@ public class GenericFormatExportService extends AbstractTuttiService { increments(progressionModel, t("tutti.service.exportCruise.exportCatches", cruiseName)); exportCatches(exportContext, cruise, loadedOperations); - increments(progressionModel, t("tutti.service.exportCruise.exportSpecies", cruiseName)); - exportSpecies(exportContext); } protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { @@ -617,7 +708,7 @@ public class GenericFormatExportService extends AbstractTuttiService { continue; } List<IndividualObservationRow> rows = producerForIndividualObservation.getDataToExport(operationContext); - producerForSpecies.prepareIndividualRows(exportContext, rows); + producerForSpecies.prepareIndividualRows(rows); producerForIndividualObservation.write(rows); } @@ -637,7 +728,7 @@ public class GenericFormatExportService extends AbstractTuttiService { OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); List<AccidentalCatchRow> rows = producerForAccidentalCatch.getDataToExport(operationContext); - producerForSpecies.prepareAccidentalRows(exportContext, rows); + producerForSpecies.prepareAccidentalRows(rows); producerForAccidentalCatch.write(rows); } @@ -678,8 +769,8 @@ public class GenericFormatExportService extends AbstractTuttiService { CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); // Warning! This will also add the survey code to batch species - producerForSpecies.prepareSpeciesBatchRows(exportContext, rootSpeciesBatch); - producerForSpecies.prepareBenthosBatchRows(exportContext, rootBenthosBatch); + producerForSpecies.prepareSpeciesBatchRows(rootSpeciesBatch); + producerForSpecies.prepareBenthosBatchRows(rootBenthosBatch); Float totalWeight = Numbers.getValueOrComputedValue( catchBatch.getCatchTotalWeight(), @@ -736,7 +827,7 @@ public class GenericFormatExportService extends AbstractTuttiService { try { CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); - List<SpeciesExportRow> rows = producerForSpecies.getSpeciesToExport(); + List<SpeciesExportRow> rows = producerForSpecies.getDataToExport(); producerForSpecies.write(rows); } catch (Exception e) { diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 6404694..111508a 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -103,6 +103,7 @@ tutti.service.exportCruise.exportParameters= tutti.service.exportCruise.exportSpecies= tutti.service.exportCruise.exportSurvey= tutti.service.exportPdf.error= +tutti.service.exportProgram.exportSpecies= tutti.service.exportSumatra.error.species.null= tutti.service.exportSumatra.error.station.null= tutti.service.exportSumatra.header.averageSize= @@ -136,7 +137,10 @@ tutti.service.exportSumatraV2.header.species=Species tutti.service.exportSumatraV2.header.station=Station number tutti.service.exportSumatraV2.header.totalWeight=TotalWeight tutti.service.exportSumatraV2.header.year=Year +tutti.service.genericExport.buildZip= tutti.service.genericExport.exportProtocol= +tutti.service.genericExport.exportSampleCategoyModel= +tutti.service.genericExport.exportSpecies= tutti.service.genericExport.exportTemporaryGear= tutti.service.genericExport.exportTemporaryPerson= tutti.service.genericExport.exportTemporarySpecies= @@ -146,6 +150,7 @@ tutti.service.genericExport.skipTemporaryGearExport= tutti.service.genericExport.skipTemporaryPersonExport= tutti.service.genericExport.skipTemporarySpeciesExport= tutti.service.genericExport.skipTemporaryVesselExport= +tutti.service.genericExport.zip.error= tutti.service.multipost.attachment.copy.error= tutti.service.multipost.attachment.mkdir.error= tutti.service.multipost.export.attachments.error= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 7abbbf5..d21dacf 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -79,8 +79,6 @@ tutti.service.export.operations.error=Erreur lors de l'export des traits tutti.service.export.parameters.error=Erreur lors de l'export des paramètres tutti.service.export.species.error=Erreur lors de l'export des espèces tutti.service.export.survey.error=Erreur lors de l'export de la campagne -tutti.service.export.zip.error=Erreur lors de la création du zip d'export %s -tutti.service.exportCruise.buildZip=Création de l'archive de l'export (fichier %s) tutti.service.exportCruise.checkCruise=Vérification de la campagne %s tutti.service.exportCruise.exportAccidentalCatches=<html>Export du fichier <strong>accidentalCatch.csv</strong> pour la campagne %s</html> tutti.service.exportCruise.exportCatches=<html>Export du fichier <strong>catch.csv</strong> pour la campagne %s</html> @@ -113,7 +111,10 @@ tutti.service.exportSumatra.header.surveySpecies=espececampagne tutti.service.exportSumatra.header.totalWeight=total tutti.service.exportSumatra.header.weight=total tutti.service.exportSumatra.header.year=annee +tutti.service.genericExport.buildZip=Création de l'archive de l'export (fichier %s) tutti.service.genericExport.exportProtocol=Export du protocol %s +tutti.service.genericExport.exportSampleCategoyModel=Export des %s catégories +tutti.service.genericExport.exportSpecies=<html>Export du fichier <strong>species.csv</strong></html> tutti.service.genericExport.exportTemporaryGear=Export de %s engins temporaires tutti.service.genericExport.exportTemporaryPerson=Export de %s personnes temporaires tutti.service.genericExport.exportTemporarySpecies=Export de %s espèces temporaires @@ -123,6 +124,7 @@ tutti.service.genericExport.skipTemporaryGearExport=Pas d'engin temporaire à ex tutti.service.genericExport.skipTemporaryPersonExport=Pas de personne temporaire à exporter tutti.service.genericExport.skipTemporarySpeciesExport=Pas d'espèce temporaire à exporter tutti.service.genericExport.skipTemporaryVesselExport=Pas de navire temporaire à exporter +tutti.service.genericExport.zip.error=Erreur lors de la création du zip d'export %s tutti.service.multipost.attachment.copy.error=Erreur lors de l'export de la pièce-jointe %s tutti.service.multipost.attachment.mkdir.error=Impossible de créer le répertoire %s tutti.service.multipost.export.attachments.error=Erreur lors de l'export des pièces-jointes -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 0057c45c377d33fd1268cd73a5bc82a176d9b03d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 11:54:24 2015 +0100 fix when adding total to progression model --- .../java/fr/ifremer/tutti/ui/swing/action/AbstractTuttiAction.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractTuttiAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractTuttiAction.java index 3f5264c..07e340b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractTuttiAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractTuttiAction.java @@ -89,10 +89,11 @@ public abstract class AbstractTuttiAction<M extends AbstractBean, UI extends Tut ProgressionModel progressionModel = getProgressionModel(); if (progressionModel == null) { progressionModel = new ProgressionModel(); - progressionModel.setTotal(total); progressionModel.setMessage(""); progressionModel.setCurrent(0); setProgressionModel(progressionModel); + progressionModel.setTotal(total); + } else { progressionModel.adaptTotal(total); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 7005b0c7b4f76d477c4a94410e58757486a2cfcd Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 11:54:46 2015 +0100 better API --- .../service/genericformat/GenericFormatExportService.java | 15 ++++++--------- .../ifremer/tutti/ui/swing/action/ExportCruiseAction.java | 7 +++---- .../tutti/ui/swing/action/ExportProgramAction.java | 7 ++++--- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index becbd4a..59212d1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -141,16 +141,15 @@ public class GenericFormatExportService extends AbstractTuttiService { } - public ProgressionModel createExportProgramProgessionModel(String programId) { + public int getExportProgramNbSteps(String programId) { // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litters) + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) List<Cruise> allCruise = persistenceService.getAllCruise(programId); - ProgressionModel progressionModel = new ProgressionModel(); - progressionModel.setTotal(9 * allCruise.size() + 8); - return progressionModel; + int result = 9 * allCruise.size() + 8; + return result; } @@ -206,14 +205,12 @@ public class GenericFormatExportService extends AbstractTuttiService { } - public ProgressionModel createExportCruiseProgessionModel() { + public int getExportCruiseNbSteps() { // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litter) + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) - - ProgressionModel progressionModel = new ProgressionModel(); - progressionModel.setTotal(9 + 8); - return progressionModel; + int result = 9 + 8; + return result; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java index b66ef48..6d2535e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; @@ -96,13 +95,13 @@ public class ExportCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, GenericFormatExportService service = getContext().getTuttiExportService(); - ProgressionModel progressionModel = service.createExportCruiseProgessionModel(); - setProgressionModel(progressionModel); + int nbSteps = service.getExportCruiseNbSteps(); + createProgressionModelIfRequired(nbSteps); ApplicationBusinessException exportError = null; try { - service.exportCruise(cruise.getId(), file, progressionModel); + service.exportCruise(cruise.getId(), file, getProgressionModel()); sendMessage(t("tutti.exportCruise.action.success", cruise.getName(), file.getName())); } catch (ApplicationBusinessException e) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java index 2c4c09e..d0bda41 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; @@ -94,12 +93,14 @@ public class ExportProgramAction extends AbstractTuttiAction<SelectCruiseUIModel GenericFormatExportService service = getContext().getTuttiExportService(); - ProgressionModel progressionModel = service.createExportProgramProgessionModel(program.getId()); + int nbSteps = service.getExportProgramNbSteps(program.getId()); + + createProgressionModelIfRequired(nbSteps); ApplicationBusinessException exportError = null; try { - service.exportProgram(program.getId(), file, progressionModel); + service.exportProgram(program.getId(), file, getProgressionModel()); } catch (ApplicationBusinessException e) { String errorMessage; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit dc315eae9731d9b4ba0640a47f9f84437704c4f4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:22:03 2015 +0100 introduce CsvConsumer --- .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java new file mode 100644 index 0000000..d23d5e0 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -0,0 +1,54 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import org.apache.commons.io.IOUtils; +import org.nuiton.csv.Import2; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedReader; +import java.io.Closeable; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.file.Path; +import java.util.Iterator; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O>> implements Closeable, Iterable<ImportRow<O>> { + + private final BufferedReader reader; + + private final Import2<O> importer; + + public CsvComsumer(Path file, M model) { + + try { + this.reader = Files.newReader(file.toFile(), Charsets.UTF_8); + } catch (FileNotFoundException e) { + // should never happen + throw new ApplicationTechnicalException("file not found " + file, e); + } + + this.importer = Import2.newImport(model, reader); + + } + + @Override + public Iterator<ImportRow<O>> iterator() { + Iterator<ImportRow<O>> iterator = this.importer.iterator(); + return iterator; + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(importer); + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 15694c03dd51d50c41a15c2b7d4149b7d9547d35 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:23:01 2015 +0100 use CsvConsumer API for referential import + improve then import code --- .../ReferentialTemporaryGearService.java | 52 +++++++++------------- .../ReferentialTemporaryPersonService.java | 50 +++++++++------------ .../ReferentialTemporarySpeciesService.java | 50 +++++++++------------ .../ReferentialTemporaryVesselService.java | 50 +++++++++------------ .../consumer/CsvConsumerForTemporaryGear.java | 21 +++++++++ .../consumer/CsvConsumerForTemporaryPerson.java | 21 +++++++++ .../consumer/CsvConsumerForTemporarySpecies.java | 21 +++++++++ .../consumer/CsvConsumerForTemporaryVessel.java | 21 +++++++++ .../producer/CsvProducerForTemporaryGear.java | 4 +- .../producer/CsvProducerForTemporaryPerson.java | 4 +- .../producer/CsvProducerForTemporarySpecies.java | 6 +-- .../producer/CsvProducerForTemporaryVessel.java | 4 +- .../resources/i18n/tutti-service_fr_FR.properties | 4 ++ .../ReferentialTemporaryExportServiceTest.java | 3 ++ .../ReferentialTemporaryGearServiceTest.java | 8 ++-- .../ReferentialTemporaryPersonServiceTest.java | 4 +- .../ReferentialTemporarySpeciesServiceTest.java | 12 ++--- .../ReferentialTemporaryVesselServiceTest.java | 6 +-- 18 files changed, 200 insertions(+), 141 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index 15711ee..27f0417 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.service.referential; * #L% */ -import com.google.common.base.Charsets; import com.google.common.collect.Lists; -import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Gears; @@ -34,20 +32,20 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.referential.csv.GearModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; import fr.ifremer.tutti.service.referential.csv.GearRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.io.Reader; import java.util.Collection; import java.util.List; @@ -174,7 +172,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { public void exportTemporaryGear(File file, List<Gear> toExport) throws IOException { - try (CsvProducerForTemporaryGear producerForTemporarySpecies = new CsvProducerForTemporaryGear(file, getCsvSeparator())) { + try (CsvProducerForTemporaryGear producerForTemporarySpecies = new CsvProducerForTemporaryGear(file.toPath(), getCsvSeparator())) { List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); producerForTemporarySpecies.write(dataToExport); @@ -189,31 +187,25 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { ImportRequestResult<Gear, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Gear>newIdAstIntFunction(), Gears.GET_NAME); - try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + try (CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(file.toPath(), getCsvSeparator())) { - GearModel csvModel = GearModel.forImport(getCsvSeparator()); - try (Import<GearRow> importer = Import.newImport(csvModel, reader)) { + for (ImportRow<GearRow> bean : consumer) { - for (GearRow bean : importer) { + if (bean.isValid()) { - importGear(bean, requestResult); + importGear(bean.getBean(), requestResult); - } + } else { - } + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); + throw new ApplicationBusinessException(message); - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); + } - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); } - throw new ApplicationTechnicalException(message, e); + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.gears.error", file), e); } return requestResult; @@ -231,15 +223,15 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { // Ajout if (delete) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); } if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.add.noName.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); } if (!requestResult.addExistingNaturalId(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); } requestResult.addEntityToAdd(bean.toEntity()); @@ -251,7 +243,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { Gear gear = requestResult.getExistingEntityById(id); if (gear == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.notExistingId.error", id)); } if (delete) { @@ -261,7 +253,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { if (persistenceService.isTemporaryGearUsed(id)) { String gearRef = id + " : " + decoratorService.getDecoratorByType(Gear.class).toString(gear); - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.used.error", gearRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.used.error", gearRef)); } requestResult.addIdToDelete(id); @@ -272,11 +264,11 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { // Mise à jour if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.noName.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.noName.error", id)); } if (!name.equals(gear.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); } requestResult.addEntityToUpdate(bean.toEntity()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index f6f8813..fc55b45 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.service.referential; * #L% */ -import com.google.common.base.Charsets; import com.google.common.collect.Lists; -import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Persons; @@ -34,20 +32,20 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.referential.csv.PersonModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; import fr.ifremer.tutti.service.referential.csv.PersonRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.io.Reader; import java.util.Collection; import java.util.List; @@ -167,7 +165,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { public void exportTemporaryPerson(File file, List<Person> toExport) throws IOException { - try (CsvProducerForTemporaryPerson producerForTemporarySpecies = new CsvProducerForTemporaryPerson(file, getCsvSeparator())) { + try (CsvProducerForTemporaryPerson producerForTemporarySpecies = new CsvProducerForTemporaryPerson(file.toPath(), getCsvSeparator())) { List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); producerForTemporarySpecies.write(dataToExport); @@ -182,14 +180,18 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { ImportRequestResult<Person, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Person>newIdAstIntFunction(), Persons.GET_FULL_NAME); - try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + try (CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(file.toPath(), getCsvSeparator())) { - PersonModel csvModel = PersonModel.forImport(getCsvSeparator()); - try (Import<PersonRow> importer = Import.newImport(csvModel, reader)) { + for (ImportRow<PersonRow> bean : consumer) { - for (PersonRow bean : importer) { + if (bean.isValid()) { - importPerson(bean, requestResult); + importPerson(bean.getBean(), requestResult); + + } else { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); + throw new ApplicationBusinessException(message); } @@ -197,16 +199,6 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } catch (IOException e) { throw new ApplicationTechnicalException(t("tutti.service.referential.import.persons.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - } return requestResult; @@ -224,15 +216,15 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { // Ajout if (delete) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); } if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.add.noName.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); } if (!requestResult.addExistingNaturalId(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); } requestResult.addEntityToAdd(bean.toEntity()); @@ -244,7 +236,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { Person person = requestResult.getExistingEntityById(id); if (person == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.notExistingId.error", id)); } if (delete) { @@ -254,7 +246,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { if (persistenceService.isTemporaryPersonUsed(id)) { String personRef = id + " : " + decoratorService.getDecoratorByType(Person.class).toString(person); - throw new IllegalArgumentException(t("tutti.service.referential.import.person.used.error", personRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); } requestResult.addIdToDelete(id); @@ -265,11 +257,11 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { // Mise à jour if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.noName.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.noName.error", id)); } if (!name.equals(person.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); } requestResult.addEntityToUpdate(bean.toEntity()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index e22439e..92bbd67 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.service.referential; * #L% */ -import com.google.common.base.Charsets; import com.google.common.collect.Lists; -import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; @@ -34,20 +32,20 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.referential.csv.SpeciesModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.io.Reader; import java.util.Collection; import java.util.List; @@ -164,7 +162,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { public void exportTemporarySpecies(File file, List<Species> toExport) throws IOException { - try (CsvProducerForTemporarySpecies producerForTemporarySpecies = new CsvProducerForTemporarySpecies(file, getCsvSeparator())) { + try (CsvProducerForTemporarySpecies producerForTemporarySpecies = new CsvProducerForTemporarySpecies(file.toPath(), getCsvSeparator())) { List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); producerForTemporarySpecies.write(dataToExport); @@ -179,14 +177,18 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { ImportRequestResult<Species, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Species>newIdAstIntFunction(), Speciess.GET_NAME); - try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + try (CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(file.toPath(), getCsvSeparator())) { - SpeciesModel csvModel = SpeciesModel.forImport(getCsvSeparator()); - try (Import<SpeciesRow> importer = Import.newImport(csvModel, reader)) { + for (ImportRow<SpeciesRow> bean : consumer) { - for (SpeciesRow bean : importer) { + if (bean.isValid()) { - importSpecies(bean, requestResult); + importSpecies(bean.getBean(), requestResult); + + } else { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); + throw new ApplicationBusinessException(message); } @@ -194,16 +196,6 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { } catch (IOException e) { throw new ApplicationTechnicalException(t("tutti.service.referential.import.species.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - } return requestResult; @@ -221,15 +213,15 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { // Ajout if (delete) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); } if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.add.noName.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); } if (!requestResult.addExistingNaturalId(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); } requestResult.addEntityToAdd(bean.toEntity(null)); @@ -241,7 +233,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { Species species = requestResult.getExistingEntityById(id); if (species == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.notExistingId.error", id)); } Integer referenceTaxonId = species.getReferenceTaxonId(); @@ -253,7 +245,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { if (persistenceService.isTemporarySpeciesUsed(referenceTaxonId)) { String speciesRef = id + " : " + decoratorService.getDecoratorByType(Species.class, DecoratorService.WITH_SURVEY_CODE).toString(species); - throw new IllegalArgumentException(t("tutti.service.referential.import.species.used.error", speciesRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); } requestResult.addIdToDelete(referenceTaxonId); @@ -264,11 +256,11 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { // Mise à jour if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.noName.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.noName.error", id)); } if (!species.getName().equals(name) && !requestResult.addExistingNaturalId(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); } requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index 63e0bf6..0aa386a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.service.referential; * #L% */ -import com.google.common.base.Charsets; import com.google.common.collect.Lists; -import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.Vessels; @@ -34,20 +32,20 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.referential.csv.VesselModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; import fr.ifremer.tutti.service.referential.csv.VesselRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.io.Reader; import java.util.Collection; import java.util.List; @@ -182,7 +180,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { public void exportTemporaryVessel(File file, List<Vessel> toExport) throws IOException { - try (CsvProducerForTemporaryVessel producerForTemporaryVessel = new CsvProducerForTemporaryVessel(file, getCsvSeparator())) { + try (CsvProducerForTemporaryVessel producerForTemporaryVessel = new CsvProducerForTemporaryVessel(file.toPath(), getCsvSeparator())) { List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(toExport); producerForTemporaryVessel.write(dataToExport); @@ -197,14 +195,18 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { ImportRequestResult<Vessel, String> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Vessel>newIdFunction(), Vessels.GET_INTERNAL_REGISTRATION_CODE); - try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + try (CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(file.toPath(), getCsvSeparator())) { - VesselModel csvModel = VesselModel.forImport(getCsvSeparator()); - try (Import<VesselRow> importer = Import.newImport(csvModel, reader)) { + for (ImportRow<VesselRow> bean : consumer) { - for (VesselRow bean : importer) { + if (bean.isValid()) { - importVessel(bean, requestResult); + importVessel(bean.getBean(), requestResult); + + } else { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); + throw new ApplicationBusinessException(message); } @@ -212,16 +214,6 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } catch (IOException e) { throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - } return requestResult; @@ -239,15 +231,15 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { // Ajout if (delete) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); } if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); } if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); } requestResult.addEntityToAdd(bean.toEntity()); @@ -260,7 +252,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { if (vessel == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); } if (delete) { @@ -270,7 +262,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { if (persistenceService.isTemporaryVesselUsed(id)) { String vesselRef = id + " :" + decoratorService.getDecoratorByType(Vessel.class).toString(vessel); - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); } requestResult.addIdToDelete(id); @@ -281,11 +273,11 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { // Mise à jour if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); } if (!internationalRegistrationCode.equals(vessel.getName()) && !requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); } requestResult.addEntityToUpdate(bean.toEntity()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java new file mode 100644 index 0000000..78b5786 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java @@ -0,0 +1,21 @@ +package fr.ifremer.tutti.service.referential.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.referential.csv.GearModel; +import fr.ifremer.tutti.service.referential.csv.GearRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> { + + public CsvConsumerForTemporaryGear(Path file, char separator) { + super(file, GearModel.forImport(separator)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java new file mode 100644 index 0000000..82b03e2 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java @@ -0,0 +1,21 @@ +package fr.ifremer.tutti.service.referential.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.referential.csv.PersonModel; +import fr.ifremer.tutti.service.referential.csv.PersonRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, PersonModel> { + + public CsvConsumerForTemporaryPerson(Path file, char separator) { + super(file, PersonModel.forImport(separator)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java new file mode 100644 index 0000000..b1302b9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -0,0 +1,21 @@ +package fr.ifremer.tutti.service.referential.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.referential.csv.SpeciesModel; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, SpeciesModel> { + + public CsvConsumerForTemporarySpecies(Path file, char separator) { + super(file, SpeciesModel.forImport(separator)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java new file mode 100644 index 0000000..7bb7c40 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java @@ -0,0 +1,21 @@ +package fr.ifremer.tutti.service.referential.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.referential.csv.VesselModel; +import fr.ifremer.tutti.service.referential.csv.VesselRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, VesselModel> { + + public CsvConsumerForTemporaryVessel(Path file, char separator) { + super(file, VesselModel.forImport(separator)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java index 9789834..bf02c27 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java @@ -7,7 +7,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; -import java.io.File; +import java.nio.file.Path; import java.util.List; /** @@ -18,7 +18,7 @@ import java.util.List; */ public class CsvProducerForTemporaryGear extends CsvProducer<GearRow, GearModel> { - public CsvProducerForTemporaryGear(File file, char separator) { + public CsvProducerForTemporaryGear(Path file, char separator) { super(file, GearModel.forImport(separator)); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java index 2e1d2fe..a7ef37e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java @@ -7,7 +7,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; -import java.io.File; +import java.nio.file.Path; import java.util.List; /** @@ -18,7 +18,7 @@ import java.util.List; */ public class CsvProducerForTemporaryPerson extends CsvProducer<PersonRow, PersonModel> { - public CsvProducerForTemporaryPerson(File file, char separator) { + public CsvProducerForTemporaryPerson(Path file, char separator) { super(file, PersonModel.forExport(separator)); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java index 1d82559..63417a1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java @@ -7,7 +7,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; -import java.io.File; +import java.nio.file.Path; import java.util.List; /** @@ -18,8 +18,8 @@ import java.util.List; */ public class CsvProducerForTemporarySpecies extends CsvProducer<SpeciesRow, SpeciesModel> { - public CsvProducerForTemporarySpecies(File file, char separator) { - super(file, SpeciesModel .forExport(separator)); + public CsvProducerForTemporarySpecies(Path file, char separator) { + super(file, SpeciesModel.forExport(separator)); } public List<SpeciesRow> getDataToExport(List<Species> toExport) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java index da9381b..dcca6b2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java @@ -7,7 +7,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; -import java.io.File; +import java.nio.file.Path; import java.util.List; /** @@ -18,7 +18,7 @@ import java.util.List; */ public class CsvProducerForTemporaryVessel extends CsvProducer<VesselRow, VesselModel> { - public CsvProducerForTemporaryVessel(File file, char separator) { + public CsvProducerForTemporaryVessel(Path file, char separator) { super(file, VesselModel.forExport(separator)); } diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index d21dacf..44bf30e 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -9,7 +9,11 @@ tutti.property.attachment=Pièce jointe tutti.property.caracteristic=Caractéristique tutti.property.country=Pays tutti.property.cruise=Campagne +tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive +tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique :\n%s tutti.property.date=Date +tutti.csv.import.error.on.field=Colonne %s : %s +tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s : \n%s tutti.property.department=Département tutti.property.firstName=Prénom tutti.property.fishingOperation=Trait diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java index 62b65ca..79f1810 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java @@ -29,6 +29,7 @@ import fr.ifremer.tutti.service.TuttiServiceContext; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; +import org.junit.Ignore; import org.junit.Test; import java.io.File; @@ -82,6 +83,8 @@ public class ReferentialTemporaryExportServiceTest { } + //FIXME tchemit-2015-02-11 there is no temporary gears in the db + @Ignore @Test public void exportTemporaryGearExample() throws Exception { diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java index c1fa557..a9df8e0 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java @@ -33,7 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; -import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.io.File; import java.util.List; @@ -131,7 +131,7 @@ public class ReferentialTemporaryGearServiceTest { try { service.importTemporaryGear(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } @@ -147,7 +147,7 @@ public class ReferentialTemporaryGearServiceTest { try { service.importTemporaryGear(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } @@ -164,7 +164,7 @@ public class ReferentialTemporaryGearServiceTest { try { service.importTemporaryGear(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java index 6ef62b3..75fc571 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java @@ -33,7 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; -import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.io.File; import java.util.List; @@ -113,7 +113,7 @@ public class ReferentialTemporaryPersonServiceTest { try { service.importTemporaryPerson(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java index 7ae100d..16b0c43 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java @@ -35,7 +35,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; -import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.io.File; import java.util.List; @@ -118,7 +118,7 @@ public class ReferentialTemporarySpeciesServiceTest { try { service.importTemporarySpecies(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } @@ -148,7 +148,7 @@ public class ReferentialTemporarySpeciesServiceTest { try { service.importTemporarySpecies(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } @@ -166,7 +166,7 @@ public class ReferentialTemporarySpeciesServiceTest { try { service.importTemporarySpecies(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } @@ -182,7 +182,7 @@ public class ReferentialTemporarySpeciesServiceTest { try { service.importTemporarySpecies(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } @@ -199,7 +199,7 @@ public class ReferentialTemporarySpeciesServiceTest { try { service.importTemporarySpecies(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java index e3770c3..0948a64 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java @@ -33,7 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; -import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.io.File; import java.util.List; @@ -110,7 +110,7 @@ public class ReferentialTemporaryVesselServiceTest { try { service.importTemporaryVessel(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { Assert.assertTrue(true); } @@ -128,7 +128,7 @@ public class ReferentialTemporaryVesselServiceTest { try { service.importTemporaryVessel(file); Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { + } catch (ApplicationBusinessException e) { // good duplicate vessel } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 059f692fa244e324c482d0758daae8a14e8e90ec Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:24:40 2015 +0100 -madd import usefull method to get a rwo all errors --- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index de1565f..4af4691 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.csv; * #L% */ +import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -31,8 +32,10 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.util.Weights; +import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Common; import org.nuiton.csv.ExportModel; +import org.nuiton.csv.ImportRow; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParserFormatter; import org.nuiton.decorator.Decorator; @@ -40,7 +43,9 @@ import org.nuiton.decorator.Decorator; import java.io.Serializable; import java.text.ParseException; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -255,6 +260,19 @@ public class TuttiCsvUtil extends Common { return new fr.ifremer.tutti.service.csv.EnumByNameParserFormatter<E>(enumType, mandatory); } + + public static <O> String rowErrorsToExceptionMessage(ImportRow<O> bean) { + + Set<String> errors = new HashSet<>(); + for (AbstractImportErrorInfo<O> errorInfo : bean.getErrors()) { + errors.add(t("tutti.csv.import.error.on.field", errorInfo.getField().getHeaderName(), errorInfo.getCause().getMessage())); + } + + String message = t("tutti.csv.import.error.on.row", bean.getLineNumber(), Joiner.on("\n").join(errors)); + return message; + + } + protected TuttiCsvUtil() { // no instance } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c05dbc0ac563438dd5cd11d3eae1a6224f09a8cc Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:25:10 2015 +0100 rename generic format actions --- ...ruiseAction.java => ExportGenericFormatCruiseAction.java} | 8 ++++---- ...ion.java => ExportGenericFormatProgramCruisesAction.java} | 8 ++++---- .../ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css | 12 ++++++++++-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportGenericFormatCruiseAction.java similarity index 89% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportGenericFormatCruiseAction.java index 6d2535e..ad7b3f7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportGenericFormatCruiseAction.java @@ -42,14 +42,14 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 2.0 */ -public class ExportCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { +public class ExportGenericFormatCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { /** Logger. */ - private static final Log log = LogFactory.getLog(ExportCruiseAction.class); + private static final Log log = LogFactory.getLog(ExportGenericFormatCruiseAction.class); protected File file; - public ExportCruiseAction(SelectCruiseUIHandler handler) { + public ExportGenericFormatCruiseAction(SelectCruiseUIHandler handler) { super(handler, true); } @@ -93,7 +93,7 @@ public class ExportCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, log.info("Will save cruise " + cruise.getId() + " to file: " + file); } - GenericFormatExportService service = getContext().getTuttiExportService(); + GenericFormatExportService service = getContext().getGenericFormatExportService(); int nbSteps = service.getExportCruiseNbSteps(); createProgressionModelIfRequired(nbSteps); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportGenericFormatProgramCruisesAction.java similarity index 89% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportGenericFormatProgramCruisesAction.java index d0bda41..d2cf969 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportGenericFormatProgramCruisesAction.java @@ -42,14 +42,14 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 2.0 */ -public class ExportProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { +public class ExportGenericFormatProgramCruisesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { /** Logger. */ - private static final Log log = LogFactory.getLog(ExportProgramAction.class); + private static final Log log = LogFactory.getLog(ExportGenericFormatProgramCruisesAction.class); protected File file; - public ExportProgramAction(SelectCruiseUIHandler handler) { + public ExportGenericFormatProgramCruisesAction(SelectCruiseUIHandler handler) { super(handler, true); } @@ -91,7 +91,7 @@ public class ExportProgramAction extends AbstractTuttiAction<SelectCruiseUIModel log.info("Will save program " + program.getId() + " to file: " + file); } - GenericFormatExportService service = getContext().getTuttiExportService(); + GenericFormatExportService service = getContext().getGenericFormatExportService(); int nbSteps = service.getExportProgramNbSteps(program.getId()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css index d69cbf4..d3d1adf 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css @@ -72,11 +72,19 @@ BeanFilterableComboBox { #exportProgramButton { actionIcon: export; text: "tutti.selectCruise.action.exportProgram"; - _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportProgramAction.class}; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportGenericFormatProgramCruisesAction.class}; toolTipText: "tutti.selectCruise.action.exportProgram.tip"; _help: {"tutti.selectCruise.action.exportProgram.help"}; } +#importProgramButton { + actionIcon: import; + text: "tutti.selectCruise.action.importProgram"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ImportGenericFormatProgramCruisesAction.class}; + toolTipText: "tutti.selectCruise.action.importProgram.tip"; + _help: {"tutti.selectCruise.action.importProgram.help"}; +} + #newProgramButton { actionIcon: add; text: "tutti.selectCruise.action.newProgram"; @@ -118,7 +126,7 @@ BeanFilterableComboBox { #exportCruiseButton { actionIcon: export; text: "tutti.selectCruise.action.exportCruise"; - _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportCruiseAction.class}; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportGenericFormatCruiseAction.class}; toolTipText: "tutti.selectCruise.action.exportCruise.tip"; _help: {"tutti.selectCruise.action.exportCruise.help"}; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f08120feab492a69d25d0867ebdd2ede91976745 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:26:03 2015 +0100 improve CsvProducer API --- .../src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java | 6 +++--- .../genericformat/producer/CsvProducerForAccidentalCatch.java | 6 +++--- .../tutti/service/genericformat/producer/CsvProducerForCatch.java | 6 +++--- .../genericformat/producer/CsvProducerForGearCaracteristics.java | 6 +++--- .../producer/CsvProducerForIndividualObservation.java | 6 +++--- .../genericformat/producer/CsvProducerForMarineLitter.java | 6 +++--- .../service/genericformat/producer/CsvProducerForOperation.java | 6 +++--- .../service/genericformat/producer/CsvProducerForParameter.java | 6 +++--- .../genericformat/producer/CsvProducerForSampleCategory.java | 6 +++--- .../service/genericformat/producer/CsvProducerForSpecies.java | 8 ++++---- .../service/genericformat/producer/CsvProducerForSurvey.java | 6 +++--- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java index a1dbdc4..d7196c5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java @@ -7,9 +7,9 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.BufferedWriter; import java.io.Closeable; -import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -25,10 +25,10 @@ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O> private final TuttiRepeatableExport<O> export; - public CsvProducer(File file, M model) { + public CsvProducer(Path file, M model) { try { - this.writer = Files.newWriter(file, Charsets.UTF_8); + this.writer = Files.newWriter(file.toFile(), Charsets.UTF_8); } catch (FileNotFoundException e) { // should never happen throw new ApplicationTechnicalException("file not found " + file, e); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java index ae20d90..09fa013 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java @@ -10,8 +10,8 @@ import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; -import java.io.File; import java.io.Serializable; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -24,8 +24,8 @@ import java.util.Map; */ public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRow, AccidentalCatchModel> { - public CsvProducerForAccidentalCatch(File basedir, AccidentalCatchModel model) { - super(new File(basedir, "accidentalCatch.csv"), model); + public CsvProducerForAccidentalCatch(Path file, AccidentalCatchModel model) { + super(file, model); } public List<AccidentalCatchRow> getDataToExport(OperationExportContext operationExportContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index 749220a..3252374 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -18,8 +18,8 @@ import fr.ifremer.tutti.util.Weights; import org.apache.commons.collections4.CollectionUtils; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.File; import java.io.Serializable; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -31,8 +31,8 @@ import java.util.List; */ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { - public CsvProducerForCatch(File basedir, CatchModel model) { - super(new File(basedir, "catch.csv"), model); + public CsvProducerForCatch(Path file, CatchModel model) { + super(file, model); } public List<CatchRow> getDataToExport(OperationExportContext operationExportContext, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java index 6562d6f..3641ce9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java @@ -8,8 +8,8 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; -import java.io.File; import java.io.Serializable; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -22,8 +22,8 @@ import java.util.Map; */ public class CsvProducerForGearCaracteristics extends CsvProducer<GearCaracteristicRow, GearCaracteristicModel> { - public CsvProducerForGearCaracteristics(File basedir, GearCaracteristicModel model) { - super(new File(basedir, "gearCaracteristics.csv"), model); + public CsvProducerForGearCaracteristics(Path file, GearCaracteristicModel model) { + super(file, model); } public List<GearCaracteristicRow> getDataToExport(Cruise cruise, Gear gear) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java index c076f07..eb7faac 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -10,8 +10,8 @@ import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; -import java.io.File; import java.io.Serializable; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -24,8 +24,8 @@ import java.util.Map; */ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualObservationRow, IndividualObservationModel> { - public CsvProducerForIndividualObservation(File basedir, IndividualObservationModel model) { - super(new File(basedir, "individualObservation.csv"), model); + public CsvProducerForIndividualObservation(Path file, IndividualObservationModel model) { + super(file, model); } public List<IndividualObservationRow> getDataToExport(OperationExportContext operationExportContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java index 6e6b5f6..98f9936 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java @@ -8,7 +8,7 @@ import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import org.apache.commons.collections4.CollectionUtils; -import java.io.File; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -20,8 +20,8 @@ import java.util.List; */ public class CsvProducerForMarineLitter extends CsvProducer<MarineLitterRow, MarineLitterModel> { - public CsvProducerForMarineLitter(File basedir, MarineLitterModel model) { - super(new File(basedir, "marineLitter.csv"), model); + public CsvProducerForMarineLitter(Path file, MarineLitterModel model) { + super(file, model); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java index 50e0101..3dc0f63 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java @@ -7,7 +7,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.genericformat.csv.OperationModel; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; -import java.io.File; +import java.nio.file.Path; /** * Created on 2/6/15. @@ -17,8 +17,8 @@ import java.io.File; */ public class CsvProducerForOperation extends CsvProducer<OperationRow, OperationModel> { - public CsvProducerForOperation(File basedir, OperationModel model) { - super(new File(basedir, "operation.csv"), model); + public CsvProducerForOperation(Path file, OperationModel model) { + super(file, model); } public OperationRow getDataToExport(Cruise cruise, FishingOperation operation, CatchBatch catchBatch) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java index f113c6e..b3b1c49 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java @@ -8,8 +8,8 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; -import java.io.File; import java.io.Serializable; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -22,8 +22,8 @@ import java.util.Map; */ public class CsvProducerForParameter extends CsvProducer<ParameterRow, ParameterModel> { - public CsvProducerForParameter(File basedir, ParameterModel model) { - super(new File(basedir, "parameter.csv"), model); + public CsvProducerForParameter(Path file, ParameterModel model) { + super(file, model); } public List<ParameterRow> getDataToExport(Cruise cruise, FishingOperation operation) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java index d26f735..4595df3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java @@ -5,7 +5,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; -import java.io.File; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -17,8 +17,8 @@ import java.util.List; */ public class CsvProducerForSampleCategory extends CsvProducer<SampleCategoryRow, SampleCategoryModel> { - public CsvProducerForSampleCategory(File basedir, SampleCategoryModel model) { - super(new File(basedir, "sampleCategory.csv"), model); + public CsvProducerForSampleCategory(Path file, SampleCategoryModel model) { + super(file, model); } public List<SampleCategoryRow> getDataToExport(fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java index ec99aa0..0aec192 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java @@ -12,7 +12,7 @@ import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; -import java.io.File; +import java.nio.file.Path; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -30,8 +30,8 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesByReferenceTaxonId) { - super(new File(basedir, "species.csv"), model); + public CsvProducerForSpecies(Path file, SpeciesExportModel model, Map<String, Species> speciesByReferenceTaxonId) { + super(file, model); this.speciesByReferenceTaxonId = speciesByReferenceTaxonId; } @@ -81,7 +81,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - protected void addSpecies(Species species) { + public void addSpecies(Species species) { String speciesId = String.valueOf(species.getReferenceTaxonId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java index 0f3b314..bfd4775 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java @@ -6,7 +6,7 @@ import fr.ifremer.tutti.service.csv.CsvProducer; import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; -import java.io.File; +import java.nio.file.Path; /** * Created on 2/6/15. @@ -16,8 +16,8 @@ import java.io.File; */ public class CsvProducerForSurvey extends CsvProducer<SurveyRow, SurveyModel> { - public CsvProducerForSurvey(File basedir, SurveyModel model) { - super(new File(basedir, "survey.csv"), model); + public CsvProducerForSurvey(Path file, SurveyModel model) { + super(file, model); } public SurveyRow getDataToExport(Cruise cruise, TuttiLocation country) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit d2f57a7146e6024bb9a6c84d775af77115909ff6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:59:16 2015 +0100 fix tests --- .../ifremer/tutti/service/ServiceDbResource.java | 2 +- .../GenericFormatExportServiceTest.java | 415 +++++++++++---------- 2 files changed, 228 insertions(+), 189 deletions(-) diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java index 8f5f3ce..b594a3e 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java @@ -206,7 +206,7 @@ public class ServiceDbResource extends DatabaseResource { public void loadInternalProtocolFile() throws IOException { - loadInternalProtocolFile(null,"protocol"); + loadInternalProtocolFile(null,"tuttiProtocol"); // File protocolFile = FileUtil.getFileFromPaths(new File("src"), "test", "data", getDbName(), "protocol.tuttiProtocol"); // diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index 988ef78..fd5f719 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -63,115 +63,199 @@ public class GenericFormatExportServiceTest { public static final String OPERATION_2_ID = "100107"; public static final String SURVEY_CONTENT = - "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" + - "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;"; + "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire;Navire_Id;Port_Deb_Campagne_Id;Port_Fin_Campagne_Id;Chef_Mission_Id;Resp_Salle_Tri_Id\n" + + "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;;278970;1AC;1BI;1981;104"; +// "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" + +// "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;"; public static final String GEAR_CARACTERISTICS_CONTENT = - "Annee;Serie;Serie_Partielle;Engin;Code_PMFM;Libelle_PMFM;Valeur\n" + - "2013;Campagne CGFS;;ScientificGear;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Lame\n" + - "2013;Campagne CGFS;;ScientificGear;121;Diamètre du goulot (Casier) - engin - goulotte - Déclaration d'un professionnel;120.0\n" + - "2013;Campagne CGFS;;ScientificGear;927;Maillage étiré de l'engin - engin - Maille des ailes - Inconnue;15.0\n" + - "2013;Campagne CGFS;;ScientificGear;287;Volet dépresseur (drague) - engin - totale - Déclaration d'un professionnel;Oui"; + "Annee;Serie;Serie_Partielle;Engin;EnginRankOrder;Code_PMFM;Libelle_PMFM;Valeur;Engin_Id;Valeur_Id\n" + + "2013;Campagne CGFS;;ScientificGear;1;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Lame;-2;361\n" + + "2013;Campagne CGFS;;ScientificGear;1;121;Diamètre du goulot (Casier) - engin - goulotte - Déclaration d'un professionnel;120.0;-2;120.0\n" + + "2013;Campagne CGFS;;ScientificGear;1;927;Maillage étiré de l'engin - engin - Maille des ailes - Inconnue;15.0;-2;15.0\n" + + "2013;Campagne CGFS;;ScientificGear;1;287;Volet dépresseur (drague) - engin - totale - Déclaration d'un professionnel;Oui;-2;401"; +// "Annee;Serie;Serie_Partielle;Engin;Code_PMFM;Libelle_PMFM;Valeur\n" + +// "2013;Campagne CGFS;;ScientificGear;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Lame\n" + +// "2013;Campagne CGFS;;ScientificGear;121;Diamètre du goulot (Casier) - engin - goulotte - Déclaration d'un professionnel;120.0\n" + +// "2013;Campagne CGFS;;ScientificGear;927;Maillage étiré de l'engin - engin - Maille des ailes - Inconnue;15.0\n" + +// "2013;Campagne CGFS;;ScientificGear;287;Volet dépresseur (drague) - engin - totale - Déclaration d'un professionnel;Oui"; public static final String OPERATION_WITH_NO_CATCH_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_C [...] - "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carrousse [...] + "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;1;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;278970;4J;;4J2;;"; +// "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total [...] +// "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?"; public static final String OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_C [...] - "2010;Campagne CGFS;;65;65;1;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carrousse [...] + "2010;Campagne CGFS;;65;65;1;;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;278970;4J;;4J2;;"; +// "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total [...] +// "2010;Campagne CGFS;;65;65;1;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?"; public static final String OPERATION_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_C [...] - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;-9.0;?;-9.0;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y\n" + - "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;-9.0;?;-9.0;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carrousse [...] + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;-9.0;?;-9.0;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y;278970;1D;;1D2;1981;\n" + + "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;1;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;-9.0;?;-9.0;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;278970;1D;;1D2;30|62;"; +// "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total [...] +// "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;-9.0;?;-9.0;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y\n" + +// "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;-9.0;?;-9.0;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y"; public static final String PARAMETER_CONTENT = - "Annee;Serie;Serie_Partielle;Code_station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur\n" + - "2013;Campagne CGFS;;A;1;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10\n" + - "2013;Campagne CGFS;;A;1;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0\n" + - "2013;Campagne CGFS;;A;1;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\"\n" + - "2013;Campagne CGFS;;A;1;1;821;Direction vent - air - totale - Instrument de bord;0.1\n" + - "2013;Campagne CGFS;;A;1;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;10.0\n" + - "2013;Campagne CGFS;;A;2;1;1062;Catégorie de fraicheur - produit/lot - totale - Diffusion par une Halle à marée;A - Catégorie A\n" + - "2013;Campagne CGFS;;A;2;1;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0"; + "Annee;Serie;Serie_Partielle;Code_station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id\n" + + "2013;Campagne CGFS;;A;1;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10;1482\n" + + "2013;Campagne CGFS;;A;1;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\";281\n" + + "2013;Campagne CGFS;;A;1;1;821;Direction vent - air - totale - Instrument de bord;0.1;0.1\n" + + "2013;Campagne CGFS;;A;1;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;10.0;10.0\n" + + "2013;Campagne CGFS;;A;2;1;1062;Catégorie de fraicheur - produit/lot - totale - Diffusion par une Halle à marée;A - Catégorie A;1421\n" + + "2013;Campagne CGFS;;A;2;1;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0;2.0"; +// "Annee;Serie;Serie_Partielle;Code_station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur\n" + +// "2013;Campagne CGFS;;A;1;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10\n" + +// "2013;Campagne CGFS;;A;1;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0\n" + +// "2013;Campagne CGFS;;A;1;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\"\n" + +// "2013;Campagne CGFS;;A;1;1;821;Direction vent - air - totale - Instrument de bord;0.1\n" + +// "2013;Campagne CGFS;;A;1;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;10.0\n" + +// "2013;Campagne CGFS;;A;2;1;1062;Catégorie de fraicheur - produit/lot - totale - Diffusion par une Halle à marée;A - Catégorie A\n" + +// "2013;Campagne CGFS;;A;2;1;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0"; public static final String CATCH_CONTENT = - "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;Code_Taxon;Code_Espece_Campagne;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Maturite;Ech_Maturite;T [...] - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;1;;cm;0.5;5;5.0;20.0;3.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;2;;cm;0.5;2;5.0;20.0;3.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;3;;cm;0.5;1;5.0;20.0;3.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;1;;cm;0.5;5;10.0;10.0;1.5\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;10.0;1;;cm;;5;30.0;3.3333333;1.6666666\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;11.0;2;;cm;;6;30.0;3.3333333;1.6666666\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;12.0;3;;cm;;7;30.0;3.3333333;1.6666666\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|;Vrac;1;100.0;;Poids;kg;M - Moyen;2;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;5.0;1.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;2;20.0;1.0;1.0"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;ReferenceTaxonId;Code_Espece_Campagne;Nom_scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H [...] + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;1;;cm;0.5;5;5.0;20.0;3.0;311;305;300;272;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;2;;cm;0.5;2;5.0;20.0;3.0;311;305;300;272;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;3;;cm;0.5;1;5.0;20.0;3.0;311;305;300;272;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;1;;cm;0.5;5;10.0;10.0;1.5;311;305;300;274;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;10.0;1;;cm;;5;30.0;3.3333333;1.6666666;311;305;301;NA;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;11.0;2;;cm;;6;30.0;3.3333333;1.6666666;311;305;301;NA;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;12.0;3;;cm;;7;30.0;3.3333333;1.6666666;311;305;301;NA;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|;Vrac;1;100.0;;Poids;kg;M - Moyen;2;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;5.0;1.0;311;306;NA;NA;NA\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;2;20.0;1.0;1.0;310;NA;NA;NA;NA"; +// "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;Code_Taxon;Code_Espece_Campagne;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Maturite;Ech_Maturite [...] +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;1;;cm;0.5;5;5.0;20.0;3.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;2;;cm;0.5;2;5.0;20.0;3.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;3;;cm;0.5;1;5.0;20.0;3.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;1;;cm;0.5;5;10.0;10.0;1.5\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;10.0;1;;cm;;5;30.0;3.3333333;1.6666666\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;11.0;2;;cm;;6;30.0;3.3333333;1.6666666\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;12.0;3;;cm;;7;30.0;3.3333333;1.6666666\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;|;Vrac;1;100.0;;Poids;kg;M - Moyen;2;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;5.0;1.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;2;20.0;1.0;1.0"; public static final String CATCH_CONTENT_2 = - "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;Code_Taxon;Code_Espece_Campagne;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Maturite;Ech_Maturite;T [...] - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;365;;Aequipecten opercularis;taxon;Vrac;1;0.005;0.005;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.005;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;491;ALLOSPP;Alloteuthis;taxon;Vrac;2;0.004;0.004;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.004;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;300;;Buccinum undatum;taxon;Vrac;3;0.015;0.015;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.015;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1811;CALMLYR;Callionymus lyra;taxon;Vrac;4;0.07;0.07;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.07;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1644;DICELAB;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;36.0;1;;cm;1.0;1;1.06;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1644;DICELAB;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;38.0;2;;cm;1.0;1;1.06;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1362;ENGRENC;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;2;0.038;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1362;ENGRENC;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;12.5;2;;cm;0.5;1;0.038;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1362;ENGRENC;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;13.0;3;;cm;0.5;1;0.038;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1986;;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;25.0;1;;cm;1.0;1;0.66;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1986;;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;28.0;2;;cm;1.0;1;0.66;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1986;;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;3;;cm;1.0;1;0.66;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;489;LOLIVUL;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;9.0;1;;cm;1.0;1;0.28;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;489;LOLIVUL;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;10.0;2;;cm;1.0;3;0.28;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;489;LOLIVUL;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;11.0;3;;cm;1.0;2;0.28;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1988;;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;15.0;1;;cm;1.0;1;0.152;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1988;;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;18.0;2;;cm;1.0;1;0.152;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1690;MULLSUR;Mullus surmuletus;taxon;Vrac;10;0.036;0.036;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;1;;cm;1.0;1;0.036;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1978;;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;26.0;1;;cm;1.0;1;0.852;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1978;;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;2;;cm;1.0;1;0.852;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1351;SARDPIL;Sardina pilchardus;taxon;Vrac;12;0.022;0.022;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;1;0.022;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1772;SCOMSCO;Scomber scombrus;taxon;Vrac;13;0.18;0.18;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;27.0;1;;cm;1.0;1;0.18;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1242;SCYOCAN;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;51.0;1;;cm;1.0;1;1.0;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1242;SCYOCAN;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;55.0;2;;cm;1.0;1;1.0;1.0;1.0\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;8.0;1;;cm;1.0;1;131.12;136.58502;136.58403\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;9.0;2;;cm;1.0;20;131.12;136.58502;136.58403\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;10.0;3;;cm;1.0;89;131.12;136.58502;136.58403\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;4;;cm;1.0;5;131.12;136.58502;136.58403\n" + - "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;G - Gros;2;0.13;0.13;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;23.0;1;;cm;1.0;1;0.13;137761.75;1.0"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;ReferenceTaxonId;Code_Espece_Campagne;Nom_scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H [...] + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;365;;Aequipecten opercularis;N;taxon;Vrac;1;0.005;0.005;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.005;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;491;ALLOSPP;Alloteuthis;N;taxon;Vrac;2;0.004;0.004;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.004;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;300;;Buccinum undatum;N;taxon;Vrac;3;0.015;0.015;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.015;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1811;CALMLYR;Callionymus lyra;N;taxon;Vrac;4;0.07;0.07;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.07;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1644;DICELAB;Dicentrarchus labrax;N;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;36.0;1;;cm;1.0;1;1.06;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1644;DICELAB;Dicentrarchus labrax;N;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;38.0;2;;cm;1.0;1;1.06;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1362;ENGRENC;Engraulis encrasicolus;N;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;2;0.038;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1362;ENGRENC;Engraulis encrasicolus;N;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;12.5;2;;cm;0.5;1;0.038;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1362;ENGRENC;Engraulis encrasicolus;N;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;13.0;3;;cm;0.5;1;0.038;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1986;;Limanda limanda;N;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;25.0;1;;cm;1.0;1;0.66;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1986;;Limanda limanda;N;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;28.0;2;;cm;1.0;1;0.66;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1986;;Limanda limanda;N;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;3;;cm;1.0;1;0.66;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;489;LOLIVUL;Loligo vulgaris;N;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;9.0;1;;cm;1.0;1;0.28;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;489;LOLIVUL;Loligo vulgaris;N;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;10.0;2;;cm;1.0;3;0.28;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;489;LOLIVUL;Loligo vulgaris;N;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;11.0;3;;cm;1.0;2;0.28;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1988;;Microstomus kitt;N;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;15.0;1;;cm;1.0;1;0.152;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1988;;Microstomus kitt;N;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;18.0;2;;cm;1.0;1;0.152;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1690;MULLSUR;Mullus surmuletus;N;taxon;Vrac;10;0.036;0.036;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;1;;cm;1.0;1;0.036;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1978;;Pleuronectes platessa;N;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;26.0;1;;cm;1.0;1;0.852;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1978;;Pleuronectes platessa;N;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;2;;cm;1.0;1;0.852;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1351;SARDPIL;Sardina pilchardus;N;taxon;Vrac;12;0.022;0.022;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;1;0.022;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1772;SCOMSCO;Scomber scombrus;N;taxon;Vrac;13;0.18;0.18;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;27.0;1;;cm;1.0;1;0.18;1.0;1.0;311;NA;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1242;SCYOCAN;Scyliorhinus canicula;N;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;51.0;1;;cm;1.0;1;1.0;1.0;1.0;311;NA;301;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1242;SCYOCAN;Scyliorhinus canicula;N;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;55.0;2;;cm;1.0;1;1.0;1.0;1.0;311;NA;301;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1662;TRACTRA;Trachurus trachurus;N;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;8.0;1;;cm;1.0;1;131.12;136.58502;136.58403;311;307;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1662;TRACTRA;Trachurus trachurus;N;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;9.0;2;;cm;1.0;20;131.12;136.58502;136.58403;311;307;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1662;TRACTRA;Trachurus trachurus;N;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;10.0;3;;cm;1.0;89;131.12;136.58502;136.58403;311;307;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1662;TRACTRA;Trachurus trachurus;N;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;4;;cm;1.0;5;131.12;136.58502;136.58403;311;307;NA;NA;NA\n" + + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;1662;TRACTRA;Trachurus trachurus;N;taxon|categorie_individu;Vrac;15;;;Poids;kg;G - Gros;2;0.13;0.13;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;23.0;1;;cm;1.0;1;0.13;137761.75;1.0;311;305;NA;NA;NA"; +// "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;Code_Taxon;Code_Espece_Campagne;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Maturite;Ech_Maturite [...] +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;365;;Aequipecten opercularis;taxon;Vrac;1;0.005;0.005;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.005;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;491;ALLOSPP;Alloteuthis;taxon;Vrac;2;0.004;0.004;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.004;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;300;;Buccinum undatum;taxon;Vrac;3;0.015;0.015;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.015;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1811;CALMLYR;Callionymus lyra;taxon;Vrac;4;0.07;0.07;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.07;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1644;DICELAB;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;36.0;1;;cm;1.0;1;1.06;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1644;DICELAB;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;38.0;2;;cm;1.0;1;1.06;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1362;ENGRENC;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;2;0.038;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1362;ENGRENC;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;12.5;2;;cm;0.5;1;0.038;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1362;ENGRENC;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;13.0;3;;cm;0.5;1;0.038;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1986;;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;25.0;1;;cm;1.0;1;0.66;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1986;;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;28.0;2;;cm;1.0;1;0.66;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1986;;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;3;;cm;1.0;1;0.66;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;489;LOLIVUL;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;9.0;1;;cm;1.0;1;0.28;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;489;LOLIVUL;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;10.0;2;;cm;1.0;3;0.28;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;489;LOLIVUL;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;11.0;3;;cm;1.0;2;0.28;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1988;;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;15.0;1;;cm;1.0;1;0.152;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1988;;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;18.0;2;;cm;1.0;1;0.152;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1690;MULLSUR;Mullus surmuletus;taxon;Vrac;10;0.036;0.036;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;1;;cm;1.0;1;0.036;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1978;;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;26.0;1;;cm;1.0;1;0.852;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1978;;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;2;;cm;1.0;1;0.852;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1351;SARDPIL;Sardina pilchardus;taxon;Vrac;12;0.022;0.022;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;1;0.022;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1772;SCOMSCO;Scomber scombrus;taxon;Vrac;13;0.18;0.18;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;27.0;1;;cm;1.0;1;0.18;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1242;SCYOCAN;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;51.0;1;;cm;1.0;1;1.0;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1242;SCYOCAN;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;55.0;2;;cm;1.0;1;1.0;1.0;1.0\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;8.0;1;;cm;1.0;1;131.12;136.58502;136.58403\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;9.0;2;;cm;1.0;20;131.12;136.58502;136.58403\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;10.0;3;;cm;1.0;89;131.12;136.58502;136.58403\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;17908.896;131.12;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;4;;cm;1.0;5;131.12;136.58502;136.58403\n" + +// "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;G - Gros;2;0.13;0.13;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;23.0;1;;cm;1.0;1;0.13;137761.75;1.0"; public static final String MARINE_LITTER_CONTENT = - "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire;MarineLitterCategory_Id;MarineLitterSizeCategory_Id\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1;2119;2120\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2;2126;2121"; +// "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2"; public static final String INDIVIDUAL_OBSERVATION_CONTENT = - "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;220;0.1\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1433;307\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;307;10.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1436;10\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1435;A20\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;101;10.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1388;5.0"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue;CaracteristicValue_Id\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;220;0.1;0.1\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1433;307;307\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;307;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1436;10;10\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1435;A20;A20\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;101;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB;168\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1388;5.0;5.0"; +// "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;220;0.1\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1433;307\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;307;10.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1436;10\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1435;A20\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;101;10.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1388;5.0"; public static final String ACCIDENTAL_CATCH_CONTENT = - "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1393;Rejet mort\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;196;Femelle\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;220;10.0\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1433;1425\n" + - "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1425;4.0"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue;CaracteristicValue_Id\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1393;Rejet mort;1769\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;196;Femelle;301\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;220;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1433;1425;1425\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1425;4.0;4.0"; +// "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1393;Rejet mort\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;196;Femelle\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;220;10.0\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1433;1425\n" + +// "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1425;4.0"; public static final String SPECIES_CONTENT = - "Id;Code_Rubin;Nom_Scientifique;Code_campagne\n" + + "ReferenceTaxonId;Code_Rubin;Nom_Scientifique;Code_campagne\n" + "3835;ABAL;Abalistes;\n" + "11242;AAPT;Aaptos;\n" + "11243;AAPTAAP;Aaptos aaptos;"; +// "Id;Code_Rubin;Nom_Scientifique;Code_campagne\n" + +// "3835;ABAL;Abalistes;\n" + +// "11242;AAPT;Aaptos;\n" + +// "11243;AAPTAAP;Aaptos aaptos;"; public static final String SPECIES_CONTENT_2 = - "Id;Code_Rubin;Nom_Scientifique;Code_campagne\n" + + "ReferenceTaxonId;Code_Rubin;Nom_Scientifique;Code_campagne\n" + "300;BUCCUND;Buccinum undatum;\n" + "365;AEQUOPE;Aequipecten opercularis;\n" + "489;LOLIVUL;Loligo vulgaris;LOLIVUL\n" + @@ -187,6 +271,22 @@ public class GenericFormatExportServiceTest { "1978;PLEUPLA;Pleuronectes platessa;\n" + "1986;LIMDLIM;Limanda limanda;\n" + "1988;MICTKIT;Microstomus kitt;"; +// "Id;Code_Rubin;Nom_Scientifique;Code_campagne\n" + +// "300;BUCCUND;Buccinum undatum;\n" + +// "365;AEQUOPE;Aequipecten opercularis;\n" + +// "489;LOLIVUL;Loligo vulgaris;LOLIVUL\n" + +// "491;ALLO;Alloteuthis;ALLOSPP\n" + +// "1242;SCYOCAN;Scyliorhinus canicula;SCYOCAN\n" + +// "1351;SARDPIL;Sardina pilchardus;SARDPIL\n" + +// "1362;ENGRENC;Engraulis encrasicolus;ENGRENC\n" + +// "1644;DICELAB;Dicentrarchus labrax;DICELAB\n" + +// "1662;TRACTRA;Trachurus trachurus;TRACTRA\n" + +// "1690;MULLSUR;Mullus surmuletus;MULLSUR\n" + +// "1772;SCOMSCO;Scomber scombrus;SCOMSCO\n" + +// "1811;CALMLYR;Callionymus lyra;CALMLYR\n" + +// "1978;PLEUPLA;Pleuronectes platessa;\n" + +// "1986;LIMDLIM;Limanda limanda;\n" + +// "1988;MICTKIT;Microstomus kitt;"; public static final int NB_EXPECTED_CGFS_OPERATIONS = 106; @@ -200,10 +300,16 @@ public class GenericFormatExportServiceTest { protected File dataDirectory; + protected File exportFile; + + protected GenericFormatArchive archive; + @Before public void setUp() throws Exception { - dataDirectory = dbResource.getConfig().getDataDirectory(); + dataDirectory = new File(dbResource.getConfig().getDataDirectory(), "Export-" + System.nanoTime()); + + java.nio.file.Files.createDirectory(dataDirectory.toPath()); TuttiServiceContext serviceContext = dbResource.getServiceContext(); @@ -218,14 +324,18 @@ public class GenericFormatExportServiceTest { progressionModel = new ProgressionModel(); progressionModel.setTotal(9); + + exportFile = new File(dataDirectory, "export.zip"); + + archive = GenericFormatArchive.forExport(exportFile, dataDirectory); + } + @Ignore @Test public void exportProgram() throws Exception { - File exportFile = new File(dataDirectory, "exportProgram.zip"); - Files.createParentDirs(exportFile); Assert.assertFalse(exportFile.exists()); @@ -237,8 +347,6 @@ public class GenericFormatExportServiceTest { @Test public void exportCruise() throws Exception { - File exportFile = new File(dataDirectory, "exportCruise.zip"); - Files.createParentDirs(exportFile); Assert.assertFalse(exportFile.exists()); @@ -250,50 +358,33 @@ public class GenericFormatExportServiceTest { @Test public void exportSurvey() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportSurvey(exportContext, dataContext.cruise); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("Survey export:\n", - exportContext.surveyFile, + archive.getSurveyPath().toFile(), SURVEY_CONTENT); } @Test public void exportGearCaracteristics() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportGearCaracteristics(exportContext, dataContext.cruise); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("Gear caracteristics export:\n", - exportContext.gearCaracteristicsFile, + archive.getGearCaracteristicsPath().toFile(), GEAR_CARACTERISTICS_CONTENT); } @Test public void exportOperations() throws Exception { -// loadData(PROGRAM_ID, CRUISE_CGFS_ID); - - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportOperations(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("Operation export:\n", - exportContext.operationFile, + archive.getOperationPath().toFile(), OPERATION_CONTENT); } @@ -305,17 +396,12 @@ public class GenericFormatExportServiceTest { FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100105"); dataContext.operations = Lists.newArrayList(operation); - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportOperations(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("Operation export:\n", - exportContext.operationFile, + archive.getOperationPath().toFile(), OPERATION_WITH_NO_CATCH_CONTENT); } @@ -328,49 +414,35 @@ public class GenericFormatExportServiceTest { operation.setGear(null); dataContext.operations = Lists.newArrayList(operation); - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportOperations(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("Operation export:\n", - exportContext.operationFile, + archive.getOperationPath().toFile(), OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR); } @Test public void exportParameters() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportParameters(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } + ServiceDbResource.assertFileContent("Parameter export:\n", - exportContext.parameterFile, + archive.getParameterPath().toFile(), PARAMETER_CONTENT); } @Test public void exportCatches() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("Catch export:\n", - exportContext.catchFile, + archive.getCatchPath().toFile(), CATCH_CONTENT); } @@ -378,8 +450,6 @@ public class GenericFormatExportServiceTest { @Test public void exportCatchesAndSpecies() throws Exception { -// persistenceService.clearAllCaches(); - File protocolFile = new File("src/test/resources/tuttiProtocol.tuttiProtocol"); TuttiProtocol protocol = dbResource.loadProtocol(protocolFile); @@ -391,22 +461,17 @@ public class GenericFormatExportServiceTest { FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100000"); dataContext.operations = Lists.newArrayList(operation); - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); service.exportSpecies(exportContext); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("species export:\n", - exportContext.speciesFile, + archive.getSpeciesPath().toFile(), SPECIES_CONTENT_2); ServiceDbResource.assertFileContent("Catch export:\n", - exportContext.catchFile, + archive.getCatchPath().toFile(), CATCH_CONTENT_2); @@ -418,87 +483,61 @@ public class GenericFormatExportServiceTest { dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS); - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } } @Test public void exportMarineLitters() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportMarineLitters(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("MarineLitter export:\n", - exportContext.marineLitterFile, + archive.getMarineLitterPath().toFile(), MARINE_LITTER_CONTENT); } @Test public void exportIndividualObservations() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportIndividualObservations(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("individualObservation export:\n", - exportContext.individualObservationFile, + archive.getIndividualObservationPath().toFile(), INDIVIDUAL_OBSERVATION_CONTENT); } @Test public void exportAccidentalCatch() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { service.exportAccidentalCatch(exportContext, dataContext.cruise, dataContext.operations); - } finally { - exportContext.close(); } ServiceDbResource.assertFileContent("accidentalCatch export:\n", - exportContext.accidentalCatchFile, + archive.getAccidentalCatchPath().toFile(), ACCIDENTAL_CATCH_CONTENT); } @Test public void exportSpecies() throws Exception { - GlobalExportContext exportContext = - service.createExportContext(dataDirectory); - - try { + try (GlobalExportContext exportContext = service.createExportContext(archive)) { List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); Map<String, Species> allReferentSpeciesById = TuttiEntities.splitById(allReferentSpecies); - exportContext.addSpecies(allReferentSpeciesById.get("35883")); - exportContext.addSpecies(allReferentSpeciesById.get("35884")); - exportContext.addSpecies(allReferentSpeciesById.get("19279")); - - service.exportSpecies(exportContext - ); - } finally { - exportContext.close(); + exportContext.getProducerForSpecies().addSpecies(allReferentSpeciesById.get("35883")); + exportContext.getProducerForSpecies().addSpecies(allReferentSpeciesById.get("35884")); + exportContext.getProducerForSpecies().addSpecies(allReferentSpeciesById.get("19279")); + + service.exportSpecies(exportContext); } ServiceDbResource.assertFileContent("species export:\n", - exportContext.speciesFile, + archive.getSpeciesPath().toFile(), SPECIES_CONTENT); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 78a89c71bbec3d708938460948ae7cfdd6d4e68c Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 17:59:33 2015 +0100 introduce GenericFormatArchive object --- .../genericformat/GenericFormatArchive.java | 282 +++++++++++++++++++++ 1 file changed, 282 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java new file mode 100644 index 0000000..0382bcd --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java @@ -0,0 +1,282 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.base.Joiner; +import fr.ifremer.tutti.persistence.ProgressionModel; +import org.nuiton.jaxx.application.ApplicationBusinessException; +import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatArchive { + + private static enum ArchiveMode { + IMPORT, + EXPORT + } + + private static enum ArchiveFilePath { + + PROTOCOL(false, "protocol.tuttiProtocol"), + REFERENTIAL_GEAR(false, "temporaryGears.csv"), + REFERENTIAL_PERSON(false, "temporaryPersons.csv"), + REFERENTIAL_SPECIES(false, "temporarySpecies.csv"), + REFERENTIAL_VESSEL(false, "temporaryVessels.csv"), + SAMPLE_CATEGORY(true, "sampleCategory.csv"), + DATA_SURVEY(true, "survey.csv"), + DATA_GEAR_CARACTERISTIC(true, "gearCaracteristics.csv"), + DATA_OPERATION(true, "operation.csv"), + DATA_PARAMETER(true, "parameter.csv"), + DATA_CATCH(true, "catch.csv"), + DATA_SPECIES(true, "species.csv"), + DATA_MARINE_LITTER(true, "marineLitter.csv"), + DATA_ACCIDENTAL_CATCH(true, "accidentalCatch.csv"), + DATA_INDIVIDUAL_OBSERVATION(true, "individualObservation.csv"); + + private final boolean mandatory; + + private final String filename; + + ArchiveFilePath(boolean mandatory, String filename) { + this.mandatory = mandatory; + this.filename = filename; + } + + public boolean isMandatory() { + return mandatory; + } + + public String getFilename() { + return filename; + } + + public ZipEntry getzipentry(ZipFile zipFile) { + ZipEntry entry = zipFile.getEntry(getFilename()); + return entry; + } + + } + + private final File archiveFile; + + private final Path workingDirectory; + + private final ArchiveMode archiveMode; + + public static GenericFormatArchive forImport(File archiveFile, File tempDirectory) { + + try { + + Path workingDirectory = Files.createTempDirectory(tempDirectory.toPath(), "genericImport"); + Files.createDirectory(workingDirectory); + GenericFormatArchive archive = new GenericFormatArchive(ArchiveMode.IMPORT, archiveFile, workingDirectory); + return archive; + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create generic format import archive", e); + } + + } + + public static GenericFormatArchive forExport(File archiveFile, File tempDirectory) { + + try { + + Path workingDirectory = Files.createTempDirectory(tempDirectory.toPath(), "genericExport"); + GenericFormatArchive archive = new GenericFormatArchive(ArchiveMode.EXPORT, archiveFile, workingDirectory); + return archive; + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create generic format export archive", e); + } + + } + + public Path getWorkingDirectoryPath() { + return workingDirectory; + } + + public Path getSampleCategoryModelPath() { + return getPath(ArchiveFilePath.SAMPLE_CATEGORY); + } + + public boolean isProtocolExists() { + return Files.exists(getProtocolPath()); + } + + public boolean isTemporaryReferentialGearsPathExists() { + return Files.exists(getTemporaryReferentialGearsPath()); + } + + public boolean isTemporaryReferentialPersonsPathExists() { + return Files.exists(getTemporaryReferentialPersonsPath()); + } + + public boolean isTemporaryReferentialSpeciesPathExists() { + return Files.exists(getTemporaryReferentialSpeciesPath()); + } + + public boolean isTemporaryReferentialVesselsPathExists() { + return Files.exists(getTemporaryReferentialVesselsPath()); + } + + public Path getProtocolPath() { + return getPath(ArchiveFilePath.PROTOCOL); + } + + public Path getTemporaryReferentialGearsPath() { + return getPath(ArchiveFilePath.REFERENTIAL_GEAR); + } + + public Path getTemporaryReferentialPersonsPath() { + return getPath(ArchiveFilePath.REFERENTIAL_PERSON); + } + + public Path getTemporaryReferentialSpeciesPath() { + return getPath(ArchiveFilePath.REFERENTIAL_SPECIES); + } + + public Path getTemporaryReferentialVesselsPath() { + return getPath(ArchiveFilePath.REFERENTIAL_VESSEL); + } + + public Path getSurveyPath() { + return getPath(ArchiveFilePath.DATA_SURVEY); + } + + public Path getGearCaracteristicsPath() { + return getPath(ArchiveFilePath.DATA_ACCIDENTAL_CATCH); + } + + public Path getOperationPath() { + return getPath(ArchiveFilePath.DATA_OPERATION); + } + + public Path getIndividualObservationPath() { + return getPath(ArchiveFilePath.DATA_INDIVIDUAL_OBSERVATION); + } + + public Path getSpeciesPath() { + return getPath(ArchiveFilePath.DATA_SPECIES); + } + + public Path getCatchPath() { + return getPath(ArchiveFilePath.DATA_CATCH); + } + + public Path getAccidentalCatchPath() { + return getPath(ArchiveFilePath.DATA_ACCIDENTAL_CATCH); + } + + public Path getParameterPath() { + return getPath(ArchiveFilePath.DATA_PARAMETER); + } + + public Path getMarineLitterPath() { + return getPath(ArchiveFilePath.DATA_MARINE_LITTER); + } + + public void checkArchiveLayout() { + + List<String> errors = new ArrayList<>(); + + try (ZipFile zipFile = new ZipFile(archiveFile)) { + + for (ArchiveFilePath archiveFilePath : ArchiveFilePath.values()) { + + if (archiveFilePath.isMandatory()) { + + ZipEntry zipEntry = archiveFilePath.getzipentry(zipFile); + + if (zipEntry == null) { + errors.add(t("tutti.genericformat.importError.missArchiveFile", archiveFilePath.getFilename())); + } + + } + } + } catch (IOException e) { + + throw new ApplicationTechnicalException("Could not open zip file: " + archiveFile, e); + } + + if (errors.isEmpty()) { + + String message = t("tutti.genericFormat.importError.archiveNotSane", Joiner.on("\n").join(errors)); + + throw new ApplicationBusinessException(message); + + } + + } + + public void createZip(ProgressionModel progressionModel) { + + if (progressionModel != null) { + + progressionModel.increments(t("tutti.service.genericExport.buildZip", archiveFile)); + + } + + ApplicationIOUtil.zip(workingDirectory.toFile(), archiveFile, t("tutti.service.genericExport.zip.error", archiveFile)); + + } + + protected Path getPath(ArchiveFilePath archiveFilePath) { + + String filename = archiveFilePath.getFilename(); + + Path file = workingDirectory.resolve(filename); + + if (isImport() && Files.notExists(file)) { + + // Explode from archive + + try (ZipFile zipFile = new ZipFile(archiveFile)) { + + ZipEntry entry = archiveFilePath.getzipentry(zipFile); + if (entry != null) { + try (InputStream inputStream = zipFile.getInputStream(entry)) { + Files.copy(inputStream, file); + } + } + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not open zip file: " + archiveFile, e); + } + } + + return file; + + } + + protected boolean isImport() { + return ArchiveMode.IMPORT == archiveMode; + } + + protected boolean isExport() { + return ArchiveMode.EXPORT == archiveMode; + } + + + protected GenericFormatArchive(ArchiveMode archiveMode, File archiveFile, Path workingDirectory) { + this.archiveFile = archiveFile; + this.workingDirectory = workingDirectory; + this.archiveMode = archiveMode; + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f1864602216b86467b25091fa596f2bd2acd349a Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:07 2015 +0100 use GenericFormatArchive object --- .../genericformat/GenericFormatExportService.java | 39 +++++++------------- .../service/genericformat/GlobalExportContext.java | 41 +++++++++++----------- 2 files changed, 32 insertions(+), 48 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 59212d1..0dbdb3d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -87,7 +87,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.ApplicationBusinessException; -import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -178,10 +177,9 @@ public class GenericFormatExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); - ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); + GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(exportFile, context.getConfig().getTmpDirectory()); - try (GlobalExportContext exportContext = createExportContext(basedir)) { + try (GlobalExportContext exportContext = createExportContext(genericFormatArchive)) { for (Cruise cruise : allCruise) { @@ -197,7 +195,7 @@ public class GenericFormatExportService extends AbstractTuttiService { throw new ApplicationTechnicalException("Could not create program export", e); } - buildExportZip(basedir, exportFile, progressionModel); + genericFormatArchive.createZip(progressionModel); if (checkError != null) { throw checkError; @@ -238,11 +236,8 @@ public class GenericFormatExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile("exportCruise"), "exportCruise-" + cruiseId); - - ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - - try (GlobalExportContext exportContext = createExportContext(basedir)) { + GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(exportFile, context.getConfig().getTmpDirectory()); + try (GlobalExportContext exportContext = createExportContext(genericFormatArchive)) { exportCruise(cruise, exportContext, progressionModel); @@ -252,7 +247,7 @@ public class GenericFormatExportService extends AbstractTuttiService { throw new ApplicationTechnicalException("Could not create cruise export", e); } - buildExportZip(basedir, exportFile, progressionModel); + genericFormatArchive.createZip(progressionModel); if (checkError != null) { throw checkError; @@ -291,11 +286,9 @@ public class GenericFormatExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile("exportCruise"), "exportCruise-" + cruiseId); - - ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); + GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(null, context.getConfig().getTmpDirectory()); - try (GlobalExportContext exportContext = createExportContext(basedir)) { + try (GlobalExportContext exportContext = createExportContext(genericFormatArchive)) { FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); @@ -312,13 +305,13 @@ public class GenericFormatExportService extends AbstractTuttiService { throw checkError; } - return basedir; + return genericFormatArchive.getWorkingDirectoryPath().toFile(); } - protected GlobalExportContext createExportContext(File basedir) { + protected GlobalExportContext createExportContext(GenericFormatArchive genericFormatArchive) { - return new GlobalExportContext(basedir, + return new GlobalExportContext(genericFormatArchive, ';', persistenceService, weightComputingService, @@ -439,14 +432,6 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void buildExportZip(File basedir, File exportFile, ProgressionModel progressionModel) { - - increments(progressionModel, t("tutti.service.genericExport.buildZip", exportFile)); - - ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.genericExport.zip.error", exportFile)); - - } - protected void exportTemporaryGears(GlobalExportContext exportContext, List<Gear> temporaryGears) { try { @@ -540,8 +525,8 @@ public class GenericFormatExportService extends AbstractTuttiService { protected void exportCruise(Cruise cruise, GlobalExportContext exportContext, ProgressionModel progressionModel) { List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); - exportCruise(cruise, operations, exportContext, progressionModel); + } protected void exportCruise(Cruise cruise, List<FishingOperation> operations, GlobalExportContext exportContext, ProgressionModel progressionModel) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java index 68adad7..dc59950 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -49,12 +49,12 @@ import java.util.Map; */ public class GlobalExportContext implements Closeable { - private final File protocolFile; - private final SampleCategoryModel sampleCategoryModel; protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); + private final GenericFormatArchive archive; + protected final PersistenceService persistenceService; protected final WeightComputingService weightComputingService; @@ -97,13 +97,15 @@ public class GlobalExportContext implements Closeable { protected String checkError; - GlobalExportContext(File basedir, + GlobalExportContext(GenericFormatArchive archive, char csvSeparator, PersistenceService persistenceService, WeightComputingService weightComputingService, DecoratorService decoratorService, SampleCategoryModel sampleCategoryModel) { + this.archive = archive; + this.persistenceService = persistenceService; this.weightComputingService = weightComputingService; @@ -117,24 +119,21 @@ public class GlobalExportContext implements Closeable { List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); Map<String, Species> speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); - this.producerForSurvey = new CsvProducerForSurvey(basedir, SurveyModel.forExport(csvSeparator)); - this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(basedir, GearCaracteristicModel.forExport(csvSeparator, decoratorService)); - this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator)); - this.producerForIndividualObservation = new CsvProducerForIndividualObservation(basedir, IndividualObservationModel.forExport(csvSeparator)); - this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesByReferenceTaxonId); - this.producerForCatch = new CsvProducerForCatch(basedir, CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); - this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(basedir, AccidentalCatchModel.forExport(csvSeparator)); - this.producerForParameter = new CsvProducerForParameter(basedir, ParameterModel.forExport(csvSeparator, decoratorService)); - this.producerForMarineLitter = new CsvProducerForMarineLitter(basedir, MarineLitterModel.forExport(csvSeparator)); - this.producerForSampleCategory = new CsvProducerForSampleCategory(basedir, fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel.forExport(csvSeparator)); - - this.producerForTemporaryGear = new CsvProducerForTemporaryGear(new File(basedir, "temporaryGears.csv"), csvSeparator); - this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(new File(basedir, "temporaryPersons.csv"), csvSeparator); - this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(new File(basedir, "temporarySpecies.csv"), csvSeparator); - this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(new File(basedir, "temporaryVessels.csv"), csvSeparator); - + this.producerForSurvey = new CsvProducerForSurvey(archive.getSurveyPath(), SurveyModel.forExport(csvSeparator)); + this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(archive.getGearCaracteristicsPath(), GearCaracteristicModel.forExport(csvSeparator, decoratorService)); + this.producerForOperation = new CsvProducerForOperation(archive.getOperationPath(), OperationModel.forExport(csvSeparator)); + this.producerForIndividualObservation = new CsvProducerForIndividualObservation(archive.getIndividualObservationPath(), IndividualObservationModel.forExport(csvSeparator)); + this.producerForSpecies = new CsvProducerForSpecies(archive.getSpeciesPath(), SpeciesExportModel.forExport(csvSeparator), speciesByReferenceTaxonId); + this.producerForCatch = new CsvProducerForCatch(archive.getCatchPath(), CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); + this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(archive.getAccidentalCatchPath(), AccidentalCatchModel.forExport(csvSeparator)); + this.producerForParameter = new CsvProducerForParameter(archive.getParameterPath(), ParameterModel.forExport(csvSeparator, decoratorService)); + this.producerForMarineLitter = new CsvProducerForMarineLitter(archive.getMarineLitterPath(), MarineLitterModel.forExport(csvSeparator)); + this.producerForSampleCategory = new CsvProducerForSampleCategory(archive.getSampleCategoryModelPath(), fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel.forExport(csvSeparator)); - this.protocolFile = new File(basedir, "protocol.tuttiProtocol"); + this.producerForTemporaryGear = new CsvProducerForTemporaryGear(archive.getTemporaryReferentialGearsPath(), csvSeparator); + this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(archive.getTemporaryReferentialPersonsPath(), csvSeparator); + this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(archive.getTemporaryReferentialSpeciesPath(), csvSeparator); + this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(archive.getTemporaryReferentialVesselsPath(), csvSeparator); } @@ -246,7 +245,7 @@ public class GlobalExportContext implements Closeable { } public File getProtocolFile() { - return protocolFile; + return archive.getProtocolPath().toFile(); } public SampleCategoryModel getSampleCategoryModel() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit fb5d24027e7e697fcf7aadc43b24100d46e2ab92 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:27 2015 +0100 add Cruises.equals method --- .../fr/ifremer/tutti/persistence/entities/data/Cruises.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java index 8143d67..f4be34d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java @@ -23,6 +23,7 @@ package fr.ifremer.tutti.persistence.entities.data; */ import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus; +import org.apache.commons.lang3.builder.EqualsBuilder; public class Cruises extends AbstractCruises { @@ -40,4 +41,16 @@ public class Cruises extends AbstractCruises { String synchronizationStatus = cruise.getSynchronizationStatus(); return SynchronizationStatus.SYNCHRONIZED.getValue().equals(synchronizationStatus); } + + public static boolean equals(Cruise cruise1, Cruise cruise2) { + + EqualsBuilder equalsBuilder = new EqualsBuilder(); + equalsBuilder.append(cruise1.getBeginDate(), cruise2.getBeginDate()); + equalsBuilder.append(cruise1.getMultirigNumber(), cruise2.getMultirigNumber()); + equalsBuilder.append(cruise1.getProgram(), cruise2.getProgram()); + + boolean equals = equalsBuilder.isEquals(); + return equals; + + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit b1b5135b8c0eb018166eed43d985872e50884b68 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:57 2015 +0100 introduce generic format import service and some of his objects --- .../genericformat/GenericFormatImportResult.java | 49 +++++++++ .../genericformat/GenericFormatImportService.java | 120 +++++++++++++++++++++ .../service/genericformat/GlobalImportContext.java | 49 ++++++++- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 9 +- 4 files changed, 223 insertions(+), 4 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java new file mode 100644 index 0000000..4fe8680 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; + +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportResult { + + private final GenericFormatArchive archive; + + private final Set<Cruise> importedCruises; + + private final Set<String> errors; + + public GenericFormatImportResult(GenericFormatArchive archive) { + this.archive = archive; + this.importedCruises = new LinkedHashSet<>(); + this.errors = new LinkedHashSet<>(); + } + + public GenericFormatArchive getArchive() { + return archive; + } + + public Set<Cruise> getImportedCruises() { + return ImmutableSet.copyOf(importedCruises); + } + + public Set<String> getErrors() { + return ImmutableSet.copyOf(errors); + } + + public void addImportedCruise(Cruise cruise) { + importedCruises.add(cruise); + } + + public void addError(String error) { + errors.add(error); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java new file mode 100644 index 0000000..96eb56c --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -0,0 +1,120 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.AbstractTuttiService; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiServiceContext; +import fr.ifremer.tutti.service.catches.WeightComputingService; +import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportService extends AbstractTuttiService { + + private static final Log log = LogFactory.getLog(GenericFormatImportService.class); + + protected PersistenceService persistenceService; + + protected WeightComputingService weightComputingService; + + protected DecoratorService decoratorService; + + protected ReferentialTemporaryGearService referentialTemporaryGearService; + + protected ReferentialTemporaryPersonService referentialTemporaryPersonService; + + protected ReferentialTemporarySpeciesService referentialTemporarySpeciesService; + + protected ReferentialTemporaryVesselService referentialTemporaryVesselService; + + protected ProtocolImportExportService protocolImportExportService; + + @Override + public void setServiceContext(TuttiServiceContext context) { + + super.setServiceContext(context); + persistenceService = getService(PersistenceService.class); + decoratorService = getService(DecoratorService.class); + weightComputingService = getService(WeightComputingService.class); + referentialTemporaryGearService = getService(ReferentialTemporaryGearService.class); + referentialTemporaryPersonService = getService(ReferentialTemporaryPersonService.class); + referentialTemporarySpeciesService = getService(ReferentialTemporarySpeciesService.class); + referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); + protocolImportExportService = getService(ProtocolImportExportService.class); + + } + + public int getImportProgramNbSteps(File importFile) { + + // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litters) + + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + + Path surveyPath = archive.getSurveyPath(); + try { + + List<String> allCruise = Files.readAllLines(surveyPath, Charset.forName("UTF-8")); + int result = 9 * allCruise.size() - 1 + 8; + return result; + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not read survey.csv file from archive " + importFile, e); + } + } + + public void checkArchive(File importFile) { + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + archive.checkArchiveLayout(); + + } + + public GenericFormatImportResult importProgram(String programId, File importFile, ProgressionModel progressionModel) { + + Preconditions.checkNotNull(programId); + Preconditions.checkNotNull(importFile); + + Program program = persistenceService.getProgram(programId); + Preconditions.checkNotNull(program); + + if (log.isDebugEnabled()) { + log.debug("Will import into program: " + programId); + } + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + archive.checkArchiveLayout(); + + GlobalImportContext importContext = new GlobalImportContext(persistenceService, archive, program); + + // load sampleSampleCategory and check it + + GenericFormatImportResult result = new GenericFormatImportResult(archive); + + return result; + + } + + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index fbbca75..f996532 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -1,5 +1,8 @@ package fr.ifremer.tutti.service.genericformat; +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; @@ -14,13 +17,18 @@ import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser; import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser; import fr.ifremer.tutti.service.csv.VesselTechnicalParser; +import java.io.Closeable; +import java.io.IOException; +import java.util.List; +import java.util.Set; + /** * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class GlobalImportContext { +public class GlobalImportContext implements Closeable { private final VesselTechnicalParser vesselParser; @@ -48,7 +56,12 @@ public class GlobalImportContext { private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser; - public GlobalImportContext(PersistenceService persistenceService, Program program) { + private final GenericFormatArchive archive; + + private final Set<Cruise> existingCruises; + + public GlobalImportContext(PersistenceService persistenceService, GenericFormatArchive archive, Program program) { + this.archive = archive; this.vesselParser = new VesselTechnicalParser(persistenceService); this.harbourParser = new HarbourTechnicalParser(persistenceService); this.listPersonParser = new ListPersonTechnicalParser(persistenceService); @@ -62,6 +75,22 @@ public class GlobalImportContext { this.speciesParser = new SpeciesTechnicalParser(persistenceService); this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic()); this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); + + List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); + this.existingCruises = ImmutableSet.copyOf(allCruise); + + } + + @Override + public void close() throws IOException { + + //TODO Close + //archive.close(); + + } + + public GenericFormatArchive getArchive() { + return archive; } public VesselTechnicalParser getVesselParser() { @@ -115,4 +144,20 @@ public class GlobalImportContext { public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() { return marineLitterSizeCategoryValueParser; } + + public boolean isCruiseExists(Cruise cruise) { + + boolean equals = false; + for (Cruise existingCruise : existingCruises) { + + + equals = Cruises.equals(cruise, existingCruise); + if (equals) { + break; + } + + } + return equals; + + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index f1387ed..01cd2e9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -39,9 +39,10 @@ import fr.ifremer.tutti.service.catches.WeightCleaningService; import fr.ifremer.tutti.service.catches.WeightComputingService; import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService; import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportService; import fr.ifremer.tutti.service.operationimport.FishingOperationImportService; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.psionimport.PsionImportService; @@ -721,10 +722,14 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage return serviceContext.getService(CatchesPdfExportService.class); } - public GenericFormatExportService getTuttiExportService() { + public GenericFormatExportService getGenericFormatExportService() { return serviceContext.getService(GenericFormatExportService.class); } + public GenericFormatImportService getGenericFormatImportService() { + return serviceContext.getService(GenericFormatImportService.class); + } + public CatchesSumatraExportService getCatchesSumatraExportService() { return serviceContext.getService(CatchesSumatraExportService.class); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6447002c2cc1849bdc7b655be32af73e974c9db7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 19:26:33 2015 +0100 prove consumer api for referentiel import --- .../consumer/CsvConsumerForAccidentalCatch.java | 10 ++ .../consumer/CsvConsumerForCatch.java | 22 ++++ .../consumer/CsvConsumerForGearCaracteristic.java | 22 ++++ .../CsvConsumerForIndividualObservation.java | 22 ++++ .../consumer/CsvConsumerForMarineLitter.java | 22 ++++ .../consumer/CsvConsumerForOperation.java | 22 ++++ .../consumer/CsvConsumerForParameter.java | 22 ++++ .../consumer/CsvConsumerForSampleCategory.java | 22 ++++ .../consumer/CsvConsumerForSurvey.java | 22 ++++ .../ReferentialTemporaryGearService.java | 84 +-------------- .../ReferentialTemporaryPersonService.java | 83 +-------------- .../ReferentialTemporarySpeciesService.java | 83 +-------------- .../ReferentialTemporaryVesselService.java | 84 +-------------- .../consumer/CsvConsumerForTemporaryGear.java | 115 ++++++++++++++++++++ .../consumer/CsvConsumerForTemporaryPerson.java | 114 ++++++++++++++++++++ .../consumer/CsvConsumerForTemporarySpecies.java | 118 +++++++++++++++++++++ .../consumer/CsvConsumerForTemporaryVessel.java | 117 ++++++++++++++++++++ .../tutti/service/referential/csv/PersonRow.java | 8 ++ .../ImportGenericFormatProgramCruisesAction.java | 107 +++++++++++++++++++ 19 files changed, 772 insertions(+), 327 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java new file mode 100644 index 0000000..1f7750a --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -0,0 +1,10 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since XXX + */ +public class CsvConsumerForAccidentalCatch { +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java new file mode 100644 index 0000000..8555ddb --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { + + public CsvConsumerForCatch(Path file, char separator, GlobalImportContext importContext) { + super(file, AccidentalCatchModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java new file mode 100644 index 0000000..f304499 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { + + public CsvConsumerForGearCaracteristic(Path file, char separator, GlobalImportContext importContext) { + super(file, GearCaracteristicModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java new file mode 100644 index 0000000..de0f3cf --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForIndividualObservation extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { + + public CsvConsumerForIndividualObservation(Path file, char separator, GlobalImportContext importContext) { + super(file, GearCaracteristicModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java new file mode 100644 index 0000000..daf5118 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForMarineLitter extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { + + public CsvConsumerForMarineLitter(Path file, char separator, GlobalImportContext importContext) { + super(file, IndividualObservationModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java new file mode 100644 index 0000000..97c8aa1 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForOperation extends CsvComsumer<MarineLitterRow, MarineLitterModel> { + + public CsvConsumerForOperation(Path file, char separator, GlobalImportContext importContext) { + super(file, MarineLitterModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java new file mode 100644 index 0000000..4e41547 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForParameter extends CsvComsumer<OperationRow, OperationModel> { + + public CsvConsumerForParameter(Path file, char separator, GlobalImportContext importContext) { + super(file, OperationModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java new file mode 100644 index 0000000..cc09d88 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForSampleCategory extends CsvComsumer<ParameterRow, ParameterModel> { + + public CsvConsumerForSampleCategory(Path file, char separator, GlobalImportContext importContext) { + super(file, ParameterModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java new file mode 100644 index 0000000..cbfc4e3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForSurvey extends CsvComsumer<ParameterRow, ParameterModel> { + + public CsvConsumerForSurvey(Path file, char separator, GlobalImportContext importContext) { + super(file, ParameterModel.forImport(separator, importContext)); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index 27f0417..06865cf 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; import fr.ifremer.tutti.service.referential.csv.GearRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,13 +70,12 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } - public ReferentialImportResult<Gear> importTemporaryGear(File file) throws IOException { + public ReferentialImportResult<Gear> importTemporaryGear(File file) { if (log.isInfoEnabled()) { log.info("Will import gears from file: " + file); } - // get all vessel names List<Gear> allGears = Lists.newArrayList(persistenceService.getAllGear()); ImportRequestResult<Gear, Integer> requestResult = processImportFile(file, allGears); @@ -191,16 +186,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { for (ImportRow<GearRow> bean : consumer) { - if (bean.isValid()) { - - importGear(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -212,72 +198,6 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } - private void importGear(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { - - Integer id = bean.getIdAsInt(); - String name = bean.getName(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); - } - - if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); - } - - requestResult.addEntityToAdd(bean.toEntity()); - - } else { - - // Mise à jour ou Suppression - - Gear gear = requestResult.getExistingEntityById(id); - - if (gear == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.notExistingId.error", id)); - } - - if (delete) { - - // Suppression - - if (persistenceService.isTemporaryGearUsed(id)) { - - String gearRef = id + " : " + decoratorService.getDecoratorByType(Gear.class).toString(gear); - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.used.error", gearRef)); - } - - requestResult.addIdToDelete(id); - requestResult.removeExistingNaturalId(name); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.noName.error", id)); - } - - if (!name.equals(gear.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); - } - - requestResult.addEntityToUpdate(bean.toEntity()); - - } - } - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index fc55b45..653953c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; import fr.ifremer.tutti.service.referential.csv.PersonRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,7 +70,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } - public ReferentialImportResult<Person> importTemporaryPerson(File file) throws IOException { + public ReferentialImportResult<Person> importTemporaryPerson(File file) { if (log.isInfoEnabled()) { log.info("Will import persons from file: " + file); @@ -184,16 +180,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { for (ImportRow<PersonRow> bean : consumer) { - if (bean.isValid()) { - - importPerson(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -205,72 +192,6 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } - private void importPerson(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { - - Integer id = bean.getIdAsInt(); - String name = Persons.GET_FULL_NAME.apply(bean.toEntity()); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); - } - - if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); - } - - requestResult.addEntityToAdd(bean.toEntity()); - - } else { - - // Mise à jour ou Suppression - - Person person = requestResult.getExistingEntityById(id); - - if (person == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.notExistingId.error", id)); - } - - if (delete) { - - // Suppression - - if (persistenceService.isTemporaryPersonUsed(id)) { - - String personRef = id + " : " + decoratorService.getDecoratorByType(Person.class).toString(person); - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); - } - - requestResult.addIdToDelete(id); - requestResult.removeExistingNaturalId(name); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.noName.error", id)); - } - - if (!name.equals(person.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); - } - - requestResult.addEntityToUpdate(bean.toEntity()); - - } - } - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index 92bbd67..78db4dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -181,16 +177,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { for (ImportRow<SpeciesRow> bean : consumer) { - if (bean.isValid()) { - - importSpecies(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -202,74 +189,6 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { } - protected void importSpecies(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { - - Integer id = bean.getIdAsInt(); - String name = bean.getName(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); - } - - if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); - } - - requestResult.addEntityToAdd(bean.toEntity(null)); - - } else { - - // Mise à jour ou Suppression - - Species species = requestResult.getExistingEntityById(id); - - if (species == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.notExistingId.error", id)); - } - - Integer referenceTaxonId = species.getReferenceTaxonId(); - - if (delete) { - - // Suppression - - if (persistenceService.isTemporarySpeciesUsed(referenceTaxonId)) { - - String speciesRef = id + " : " + decoratorService.getDecoratorByType(Species.class, DecoratorService.WITH_SURVEY_CODE).toString(species); - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); - } - - requestResult.addIdToDelete(referenceTaxonId); - requestResult.removeExistingNaturalId(name); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.noName.error", id)); - } - - if (!species.getName().equals(name) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); - } - - requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); - - } - } - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index 0aa386a..26ace0a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; import fr.ifremer.tutti.service.referential.csv.VesselRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,7 +70,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } - public ReferentialImportResult<Vessel> importTemporaryVessel(File file) throws IOException { + public ReferentialImportResult<Vessel> importTemporaryVessel(File file) { if (log.isInfoEnabled()) { log.info("Will import vessels from file: " + file); @@ -199,16 +195,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { for (ImportRow<VesselRow> bean : consumer) { - if (bean.isValid()) { - - importVessel(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -220,73 +207,6 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } - private void importVessel(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { - - String id = StringUtils.trimToNull(bean.getId()); - String internationalRegistrationCode = bean.getInternationalRegistrationCode(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); - } - - if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); - } - - requestResult.addEntityToAdd(bean.toEntity()); - - } else { - - // Mise à jour ou Suppression - - Vessel vessel = requestResult.getExistingEntityById(id); - - if (vessel == null) { - - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); - } - - if (delete) { - - // Suppression - - if (persistenceService.isTemporaryVesselUsed(id)) { - - String vesselRef = id + " :" + decoratorService.getDecoratorByType(Vessel.class).toString(vessel); - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); - } - - requestResult.addIdToDelete(id); - requestResult.removeExistingNaturalId(internationalRegistrationCode); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); - } - - if (!internationalRegistrationCode.equals(vessel.getName()) && !requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); - } - - requestResult.addEntityToUpdate(bean.toEntity()); - - } - } - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java index 78b5786..94197b4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.ImportRequestResult; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,108 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> super(file, GearModel.forImport(separator)); } + public void checkRow(ImportRow<GearRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Gear, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + GearRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Gear gear = requestResult.getExistingEntityById(id); + + if (gear == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, gear, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, gear, requestResult); + + } + } + + } + + protected void checkAdd(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { + + String name = bean.getName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + protected void checkDelete(GearRow bean, Gear gear, PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Gear, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + + if (persistenceService.isTemporaryGearUsed(id)) { + + String gearRef = id + " : " + decoratorService.getDecoratorByType(Gear.class).toString(gear); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.used.error", gearRef)); + } + + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(name); + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + protected void checkUpdate(GearRow bean, Gear gear, ImportRequestResult<Gear, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.noName.error", id)); + } + + if (!name.equals(gear.getName()) && !requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); + } + + requestResult.addEntityToUpdate(bean.toEntity()); + + } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java index 82b03e2..23ca3fb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.ImportRequestResult; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,107 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person super(file, PersonModel.forImport(separator)); } + public void checkRow(ImportRow<PersonRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Person, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + PersonRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Person person = requestResult.getExistingEntityById(id); + + if (person == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, person, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, person, requestResult); + + } + } + + } + + protected void checkAdd(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { + + String name = bean.getFullName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + protected void checkDelete(PersonRow bean, Person person, PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Person, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getFullName(); + + if (persistenceService.isTemporaryPersonUsed(id)) { + + String personRef = id + " : " + decoratorService.getDecoratorByType(Person.class).toString(person); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); + } + + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(name); + + } + + protected void checkUpdate(PersonRow bean, Person person, ImportRequestResult<Person, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getFullName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.noName.error", id)); + } + + if (!name.equals(person.getName()) && !requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); + } + + requestResult.addEntityToUpdate(bean.toEntity()); + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index b1302b9..c283ec7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.ImportRequestResult; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,111 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec super(file, SpeciesModel.forImport(separator)); } + public void checkRow(ImportRow<SpeciesRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Species, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + SpeciesRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Species species = requestResult.getExistingEntityById(id); + + if (species == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, species, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, species, requestResult); + + } + } + + } + + protected void checkAdd(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { + + String name = bean.getName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); + } + + requestResult.addEntityToAdd(bean.toEntity(null)); + + + } + + protected void checkDelete(SpeciesRow bean, Species species, PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Species, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + Integer referenceTaxonId = species.getReferenceTaxonId(); + + if (persistenceService.isTemporarySpeciesUsed(referenceTaxonId)) { + + String speciesRef = id + " : " + decoratorService.getDecoratorByType(Species.class, DecoratorService.WITH_SURVEY_CODE).toString(species); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); + } + + requestResult.addIdToDelete(referenceTaxonId); + requestResult.removeExistingNaturalId(name); + + } + + protected void checkUpdate(SpeciesRow bean, Species species, ImportRequestResult<Species, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + Integer referenceTaxonId = species.getReferenceTaxonId(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.noName.error", id)); + } + + if (!species.getName().equals(name) && !requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); + } + + requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); + + } + + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java index 7bb7c40..c673a75 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.referential.ImportRequestResult; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,110 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel super(file, VesselModel.forImport(separator)); } + public void checkRow(ImportRow<VesselRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Vessel, String> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + VesselRow bean = row.getBean(); + + String id = bean.getId(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Vessel vessel = requestResult.getExistingEntityById(id); + + if (vessel == null) { + + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, vessel, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, vessel, requestResult); + + } + } + + } + + protected void checkAdd(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { + + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); + } + + if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + + } + + protected void checkDelete(VesselRow bean, Vessel vessel, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Vessel, String> requestResult) { + + String id = StringUtils.trimToNull(bean.getId()); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + + if (persistenceService.isTemporaryVesselUsed(id)) { + + String vesselRef = id + " :" + decoratorService.getDecoratorByType(Vessel.class).toString(vessel); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); + } + + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(internationalRegistrationCode); + + } + + protected void checkUpdate(VesselRow bean, Vessel vessel, ImportRequestResult<Vessel, String> requestResult) { + + String id = StringUtils.trimToNull(bean.getId()); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); + } + + if (!internationalRegistrationCode.equals(vessel.getName()) && !requestResult.addExistingNaturalId(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + } + + requestResult.addEntityToUpdate(bean.toEntity()); + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java index d6fcfcd..9734f47 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java @@ -86,6 +86,14 @@ public class PersonRow { this.lastName = lastName; } + public String getFullName() { + + Person person = this.toEntity(); + String fullName = Persons.GET_FULL_NAME.apply(person); + return fullName; + + } + public Boolean getToDelete() { return toDelete; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java new file mode 100644 index 0000000..ab1be99 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java @@ -0,0 +1,107 @@ +package fr.ifremer.tutti.ui.swing.action; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportService; +import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; +import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; +import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationBusinessException; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportGenericFormatProgramCruisesAction.class); + + protected File file; + + public ImportGenericFormatProgramCruisesAction(SelectCruiseUIHandler handler) { + super(handler, true); + } + + @Override + public boolean prepareAction() throws Exception { + + boolean doAction = super.prepareAction(); + + if (doAction) { + + // choose file to import + file = chooseFile( + t("tutti.selectCruise.title.choose.importFile"), + t("tutti.selectCruise.action.importGenericformat"), + "^.+\\.zip$", t("tutti.common.file.genericFormat") + ); + + doAction = file != null; + } + + if (doAction) { + + // check archive is sane + + GenericFormatImportService service = getContext().getGenericFormatImportService(); + service.checkArchive(file); + + } + + return doAction; + + } + + @Override + public void doAction() throws Exception { + + Program program = getModel().getProgram(); + Preconditions.checkNotNull(program); + Preconditions.checkNotNull(file); + + if (log.isInfoEnabled()) { + log.info("Will import cruise to program " + program.getId() + " from archive: " + file); + } + + GenericFormatImportService service = getContext().getGenericFormatImportService(); + + int nbSteps = service.getImportProgramNbSteps(file); + createProgressionModelIfRequired(nbSteps); + + ApplicationBusinessException exportError = null; + + try { + service.importProgram(program.getId(), file, getProgressionModel()); + } catch (ApplicationBusinessException e) { + + String errorMessage; + errorMessage = t("tutti.importProgram.action.exportErrors", program.getName(), e.getMessage()); + + exportError = new ApplicationBusinessException(errorMessage); + } + + handler.resetEditProgramAction(); + + sendMessage(t("tutti.importProgram.action.success", program.getName(), file.getName())); + + if (exportError != null) { + throw exportError; + } + } + + @Override + public void releaseAction() { + file = null; + super.releaseAction(); + } +} + -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 793f6f381b772a11c22a627b675ecbc4451850f0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:53:20 2015 +0100 CsvConsumer is abstract --- .../src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index d23d5e0..774335b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -20,7 +20,7 @@ import java.util.Iterator; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O>> implements Closeable, Iterable<ImportRow<O>> { +public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O>> implements Closeable, Iterable<ImportRow<O>> { private final BufferedReader reader; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 4186ce5788db96a386965a74a84d02534b235e4e Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:53:57 2015 +0100 can add check errors on ImportRow --- .../java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 4af4691..36ee9dc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -36,6 +36,7 @@ import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Common; import org.nuiton.csv.ExportModel; import org.nuiton.csv.ImportRow; +import org.nuiton.csv.ImportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParserFormatter; import org.nuiton.decorator.Decorator; @@ -108,6 +109,13 @@ public class TuttiCsvUtil extends Common { public static ValueParserFormatter<Short> SHORT = new ShortParserFormatter(null, true); + public static <E> void addCheckError(ImportRow<E> row, Throwable cause) { + + CheckImportErrorInfo<E> eCheckImportErrorInfo = new CheckImportErrorInfo<>(row, null, cause); + row.addError(eCheckImportErrorInfo); + + } + public static class ShortParserFormatter extends NullableParserFormatter<Short> { public ShortParserFormatter(Short defaultValue, boolean nullAllowed) { @@ -277,4 +285,11 @@ public class TuttiCsvUtil extends Common { // no instance } + public static class CheckImportErrorInfo<E> extends AbstractImportErrorInfo<E> { + + public CheckImportErrorInfo(ImportRow<E> row, ImportableColumn<E, Object> field, Throwable cause) { + super(row, field, cause); + } + + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 2847669cbcb2585f21370eba0009c4cb299c48b5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:54:53 2015 +0100 sampleCategoryModel is in input context --- .../service/genericformat/GlobalImportContext.java | 91 +++++++++++++++++++++- .../service/genericformat/csv/CatchModel.java | 8 +- 2 files changed, 95 insertions(+), 4 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index f996532..a480bfc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; @@ -16,9 +17,22 @@ import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser; import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser; import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser; import fr.ifremer.tutti.service.csv.VesselTechnicalParser; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; +import org.apache.commons.io.IOUtils; +import org.nuiton.csv.ImportRow; import java.io.Closeable; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -58,10 +72,22 @@ public class GlobalImportContext implements Closeable { private final GenericFormatArchive archive; + private final char csvSeparator; + + private final SampleCategoryModel sampleCategoryModel; + private final Set<Cruise> existingCruises; - public GlobalImportContext(PersistenceService persistenceService, GenericFormatArchive archive, Program program) { + private final List<Closeable> toClose; + + public GlobalImportContext(PersistenceService persistenceService, + GenericFormatArchive archive, + char csvSeparator, + Program program, + SampleCategoryModel sampleCategoryModel) { this.archive = archive; + this.csvSeparator = csvSeparator; + this.sampleCategoryModel = sampleCategoryModel; this.vesselParser = new VesselTechnicalParser(persistenceService); this.harbourParser = new HarbourTechnicalParser(persistenceService); this.listPersonParser = new ListPersonTechnicalParser(persistenceService); @@ -79,6 +105,7 @@ public class GlobalImportContext implements Closeable { List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); this.existingCruises = ImmutableSet.copyOf(allCruise); + this.toClose = new ArrayList<>(); } @Override @@ -86,6 +113,9 @@ public class GlobalImportContext implements Closeable { //TODO Close //archive.close(); + for (Closeable closeable : toClose) { + IOUtils.closeQuietly(closeable); + } } @@ -145,6 +175,10 @@ public class GlobalImportContext implements Closeable { return marineLitterSizeCategoryValueParser; } + public SampleCategoryModel getSampleCategoryModel() { + return sampleCategoryModel; + } + public boolean isCruiseExists(Cruise cruise) { boolean equals = false; @@ -160,4 +194,59 @@ public class GlobalImportContext implements Closeable { return equals; } + + public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { + CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(archive.getSampleCategoryModelPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForSurvey loadSurveys() { + CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(archive.getSurveyPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForGearCaracteristic loadGearCaracteristics() { + CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(archive.getGearCaracteristicsPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForOperation loadOperations() { + CsvConsumerForOperation consumer = new CsvConsumerForOperation(archive.getOperationPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForParameter loadParameters() { + CsvConsumerForParameter consumer = new CsvConsumerForParameter(archive.getParameterPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForCatch loadCatches() { + CsvConsumerForCatch consumer = new CsvConsumerForCatch(archive.getSampleCategoryModelPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForMarineLitter loadMarineLitters() { + CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(archive.getMarineLitterPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForIndividualObservation loadIndividualObservations() { + CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(archive.getIndividualObservationPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + + public CsvConsumerForAccidentalCatch loadAccidentalCatches() { + CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(archive.getAccidentalCatchPath(), csvSeparator, this); + toClose.add(consumer); + return consumer; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index d910b5e..1023940 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -58,10 +58,10 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { } - public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { + public static CatchModel forImport(char separator, GlobalImportContext globalImportContext) { CatchModel importModel = new CatchModel(separator); - importModel.forImport(sampleCategoryModel, globalImportContext); + importModel.forImport(globalImportContext); return importModel; } @@ -138,7 +138,9 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { } - protected void forImport(SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { + protected void forImport(GlobalImportContext globalImportContext) { + + SampleCategoryModel sampleCategoryModel = globalImportContext.getSampleCategoryModel(); newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c921cea30a11ca5f631300f6b8206b71036de921 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 09:55:06 2015 +0100 expose cruise --- .../java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java index f27a9b1..876d842 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java @@ -51,6 +51,10 @@ public class SurveyRow implements Serializable { protected TuttiLocation country; + public Cruise getCruise() { + return cruise; + } + public void setCruise(Cruise cruise) { this.cruise = cruise; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 56fdeb2198eeeda98d82c7766384ec3e19e6b631 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 15:13:05 2015 +0100 review referentiel import API --- ...stResult.java => ReferentialImportRequest.java} | 4 +- .../ReferentialTemporaryGearService.java | 51 ++++++++------- .../ReferentialTemporaryPersonService.java | 50 ++++++++------- .../ReferentialTemporarySpeciesService.java | 50 ++++++++------- .../ReferentialTemporaryVesselService.java | 51 +++++++-------- .../consumer/CsvConsumerForTemporaryGear.java | 72 ++++++++++++++++++++-- .../consumer/CsvConsumerForTemporaryPerson.java | 72 ++++++++++++++++++++-- .../consumer/CsvConsumerForTemporarySpecies.java | 70 +++++++++++++++++++-- .../consumer/CsvConsumerForTemporaryVessel.java | 72 ++++++++++++++++++++-- 9 files changed, 379 insertions(+), 113 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java similarity index 93% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java index 6fc0b11..e6443f4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java @@ -42,7 +42,7 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.10 */ -public class ImportRequestResult<E extends TuttiReferentialEntity, K> { +public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { private final List<E> toAdd = Lists.newArrayList(); @@ -54,7 +54,7 @@ public class ImportRequestResult<E extends TuttiReferentialEntity, K> { private final Set<String> existingNaturalIds; - public ImportRequestResult(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { + public ReferentialImportRequest(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { this.existingEntitiesById = Maps.uniqueIndex(existingEntities, entityToIdFunction); this.existingNaturalIds = Sets.newHashSet(Iterables.transform(existingEntities, naturalIdFunction)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index 06865cf..86f7537 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -70,15 +70,41 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Gear, Integer> createReferentialImportRequest() { + + List<Gear> allGears = Lists.newArrayList(persistenceService.getAllGear()); + ReferentialImportRequest<Gear, Integer> requestResult = new ReferentialImportRequest<>(allGears, TuttiEntities.<Gear>newIdAstIntFunction(), Gears.GET_NAME); + return requestResult; + + } + public ReferentialImportResult<Gear> importTemporaryGear(File file) { if (log.isInfoEnabled()) { log.info("Will import gears from file: " + file); } - List<Gear> allGears = Lists.newArrayList(persistenceService.getAllGear()); + ReferentialImportRequest<Gear, Integer> requestResult = createReferentialImportRequest(); + + try (CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(file.toPath(), getCsvSeparator())) { + + for (ImportRow<GearRow> bean : consumer) { - ImportRequestResult<Gear, Integer> requestResult = processImportFile(file, allGears); + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.gears.error", file), e); + } + + ReferentialImportResult<Gear> result = executeImportRequest(requestResult); + return result; + + } + + + public ReferentialImportResult<Gear> executeImportRequest(ReferentialImportRequest<Gear, Integer> requestResult) { ReferentialImportResult<Gear> result = new ReferentialImportResult<>(); @@ -107,6 +133,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } return result; + } public void exportExistingTemporaryGear(File file) throws IOException { @@ -178,26 +205,6 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } - protected ImportRequestResult<Gear, Integer> processImportFile(File file, List<Gear> existingEntities) { - - ImportRequestResult<Gear, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Gear>newIdAstIntFunction(), Gears.GET_NAME); - - try (CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(file.toPath(), getCsvSeparator())) { - - for (ImportRow<GearRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.gears.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index 653953c..6e4984b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -70,15 +70,40 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Person, Integer> createReferentialImportRequest() { + + List<Person> allPersons = persistenceService.getAllPerson(); + ReferentialImportRequest<Person, Integer> requestResult = new ReferentialImportRequest<>(allPersons, TuttiEntities.<Person>newIdAstIntFunction(), Persons.GET_FULL_NAME); + return requestResult; + + } + public ReferentialImportResult<Person> importTemporaryPerson(File file) { if (log.isInfoEnabled()) { log.info("Will import persons from file: " + file); } - List<Person> allPersons = persistenceService.getAllPerson(); + ReferentialImportRequest<Person, Integer> requestResult = createReferentialImportRequest(); + + try (CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(file.toPath(), getCsvSeparator())) { + + for (ImportRow<PersonRow> bean : consumer) { + + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.persons.error", file), e); + } + + ReferentialImportResult<Person> result = executeImportRequest(requestResult); + return result; - ImportRequestResult<Person, Integer> requestResult = processImportFile(file, allPersons); + } + + public ReferentialImportResult<Person> executeImportRequest(ReferentialImportRequest<Person, Integer> requestResult) { ReferentialImportResult<Person> result = new ReferentialImportResult<>(); @@ -108,6 +133,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } return result; + } public List<Person> getTemporaryPersons() { @@ -172,26 +198,6 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } - protected ImportRequestResult<Person, Integer> processImportFile(File file, List<Person> existingEntities) { - - ImportRequestResult<Person, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Person>newIdAstIntFunction(), Persons.GET_FULL_NAME); - - try (CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(file.toPath(), getCsvSeparator())) { - - for (ImportRow<PersonRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.persons.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index 78db4dd..f1e97fa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -70,15 +70,39 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Species, Integer> createReferentialImportRequest() { + + List<Species> allSpecies = persistenceService.getAllSpecies(); + return new ReferentialImportRequest<>(allSpecies, TuttiEntities.<Species>newIdAstIntFunction(), Speciess.GET_NAME); + + } + public ReferentialImportResult<Species> importTemporarySpecies(File file) { if (log.isInfoEnabled()) { log.info("Will import species from file: " + file); } - List<Species> allSpecies = persistenceService.getAllSpecies(); + ReferentialImportRequest<Species, Integer> requestResult = createReferentialImportRequest(); - ImportRequestResult<Species, Integer> requestResult = processImportFile(file, allSpecies); + try (CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(file.toPath(), getCsvSeparator())) { + + for (ImportRow<SpeciesRow> bean : consumer) { + + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.species.error", file), e); + } + + ReferentialImportResult<Species> result = executeImportRequest(requestResult); + return result; + + } + + public ReferentialImportResult<Species> executeImportRequest(ReferentialImportRequest<Species, Integer> requestResult) { ReferentialImportResult<Species> result = new ReferentialImportResult<>(); @@ -104,8 +128,8 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { result.addAllRefsUpdated(entitiesUpdated); } - return result; + } public List<Species> getTemporarySpeciess() { @@ -169,26 +193,6 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { } - protected ImportRequestResult<Species, Integer> processImportFile(File file, List<Species> existingEntities) { - - ImportRequestResult<Species, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Species>newIdAstIntFunction(), Speciess.GET_NAME); - - try (CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(file.toPath(), getCsvSeparator())) { - - for (ImportRow<SpeciesRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.species.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index 26ace0a..7da7324 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -70,16 +70,39 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Vessel, String> createReferentialImportRequest() { + + List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllVessel()); + return new ReferentialImportRequest<>(existingVessels, TuttiEntities.<Vessel>newIdFunction(), Vessels.GET_INTERNAL_REGISTRATION_CODE); + + } + public ReferentialImportResult<Vessel> importTemporaryVessel(File file) { if (log.isInfoEnabled()) { log.info("Will import vessels from file: " + file); } - // get all vessels - List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllVessel()); + ReferentialImportRequest<Vessel, String> requestResult = createReferentialImportRequest(); - ImportRequestResult<Vessel, String> requestResult = processImportFile(file, existingVessels); + try (CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(file.toPath(), getCsvSeparator())) { + + for (ImportRow<VesselRow> bean : consumer) { + + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); + } + + ReferentialImportResult<Vessel> result = executeImportRequest(requestResult); + return result; + + } + + public ReferentialImportResult<Vessel> executeImportRequest(ReferentialImportRequest<Vessel, String> requestResult) { ReferentialImportResult<Vessel> result = new ReferentialImportResult<>(); @@ -105,8 +128,8 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { result.addAllRefsUpdated(entitiesUpdated); } - return result; + } public List<Vessel> getTemporaryVessels() { @@ -187,26 +210,6 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } - protected ImportRequestResult<Vessel, String> processImportFile(File file, List<Vessel> existingEntities) { - - ImportRequestResult<Vessel, String> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Vessel>newIdFunction(), Vessels.GET_INTERNAL_REGISTRATION_CODE); - - try (CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(file.toPath(), getCsvSeparator())) { - - for (ImportRow<VesselRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java index 94197b4..c988277 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryGear.class); + public CsvConsumerForTemporaryGear(Path file, char separator) { super(file, GearModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> public void checkRow(ImportRow<GearRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Gear, Integer> requestResult) { + ReferentialImportRequest<Gear, Integer> requestResult) { if (!row.isValid()) { @@ -76,7 +81,52 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> } - protected void checkAdd(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<GearRow> row, ReferentialImportRequest<Gear, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + GearRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + + } + + String name = bean.getName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing gear with name: " + name); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import gear with name: " + name); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + } + + protected void checkAdd(GearRow bean, ReferentialImportRequest<Gear, Integer> requestResult) { String name = bean.getName(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -93,13 +143,17 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will import gear with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity()); } protected void checkDelete(GearRow bean, Gear gear, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Gear, Integer> requestResult) { + ReferentialImportRequest<Gear, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -113,11 +167,15 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> requestResult.addIdToDelete(id); requestResult.removeExistingNaturalId(name); + if (log.isInfoEnabled()) { + log.info("Will delete gear with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity()); } - protected void checkUpdate(GearRow bean, Gear gear, ImportRequestResult<Gear, Integer> requestResult) { + protected void checkUpdate(GearRow bean, Gear gear, ReferentialImportRequest<Gear, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -130,6 +188,10 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will update gear with name: " + name); + } + requestResult.addEntityToUpdate(bean.toEntity()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java index 23ca3fb..cf9130d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, PersonModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryPerson.class); + public CsvConsumerForTemporaryPerson(Path file, char separator) { super(file, PersonModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person public void checkRow(ImportRow<PersonRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Person, Integer> requestResult) { + ReferentialImportRequest<Person, Integer> requestResult) { if (!row.isValid()) { @@ -76,7 +81,52 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person } - protected void checkAdd(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<PersonRow> row, ReferentialImportRequest<Person, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + PersonRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + + } + + String name = bean.getFullName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing person with name: " + name); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import person with name: " + name); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + } + + protected void checkAdd(PersonRow bean, ReferentialImportRequest<Person, Integer> requestResult) { String name = bean.getFullName(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -93,13 +143,17 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will import person with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity()); } protected void checkDelete(PersonRow bean, Person person, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Person, Integer> requestResult) { + ReferentialImportRequest<Person, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getFullName(); @@ -110,12 +164,16 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); } + if (log.isInfoEnabled()) { + log.info("Will delete person with name: " + name); + } + requestResult.addIdToDelete(id); requestResult.removeExistingNaturalId(name); } - protected void checkUpdate(PersonRow bean, Person person, ImportRequestResult<Person, Integer> requestResult) { + protected void checkUpdate(PersonRow bean, Person person, ReferentialImportRequest<Person, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getFullName(); @@ -128,6 +186,10 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will update person with name: " + name); + } + requestResult.addEntityToUpdate(bean.toEntity()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index c283ec7..e6f1e49 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, SpeciesModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporarySpecies.class); + public CsvConsumerForTemporarySpecies(Path file, char separator) { super(file, SpeciesModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec public void checkRow(ImportRow<SpeciesRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Species, Integer> requestResult) { + ReferentialImportRequest<Species, Integer> requestResult) { if (!row.isValid()) { @@ -76,7 +81,50 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec } - protected void checkAdd(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<SpeciesRow> row, ReferentialImportRequest<Species, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + SpeciesRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + } + + String name = bean.getName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing species with name: " + name); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import species with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity(null)); + + } + + } + + protected void checkAdd(SpeciesRow bean, ReferentialImportRequest<Species, Integer> requestResult) { String name = bean.getName(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -93,6 +141,10 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will delete species with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity(null)); @@ -100,7 +152,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec protected void checkDelete(SpeciesRow bean, Species species, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Species, Integer> requestResult) { + ReferentialImportRequest<Species, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -112,12 +164,16 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); } + if (log.isInfoEnabled()) { + log.info("Will delete species with referenceTaxonId: " + referenceTaxonId); + } + requestResult.addIdToDelete(referenceTaxonId); requestResult.removeExistingNaturalId(name); } - protected void checkUpdate(SpeciesRow bean, Species species, ImportRequestResult<Species, Integer> requestResult) { + protected void checkUpdate(SpeciesRow bean, Species species, ReferentialImportRequest<Species, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -131,6 +187,10 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will update species with referenceTaxonId: " + referenceTaxonId); + } + requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java index c673a75..0efe633 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, VesselModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryVessel.class); + public CsvConsumerForTemporaryVessel(Path file, char separator) { super(file, VesselModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel public void checkRow(ImportRow<VesselRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Vessel, String> requestResult) { + ReferentialImportRequest<Vessel, String> requestResult) { if (!row.isValid()) { @@ -77,7 +82,52 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel } - protected void checkAdd(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<VesselRow> row, ReferentialImportRequest<Vessel, String> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + VesselRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + + } + + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); + } + + if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + } + + protected void checkAdd(VesselRow bean, ReferentialImportRequest<Vessel, String> requestResult) { String internationalRegistrationCode = bean.getInternationalRegistrationCode(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -94,6 +144,10 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); } + if (log.isInfoEnabled()) { + log.info("Will import vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addEntityToAdd(bean.toEntity()); @@ -102,7 +156,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel protected void checkDelete(VesselRow bean, Vessel vessel, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Vessel, String> requestResult) { + ReferentialImportRequest<Vessel, String> requestResult) { String id = StringUtils.trimToNull(bean.getId()); String internationalRegistrationCode = bean.getInternationalRegistrationCode(); @@ -113,12 +167,16 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); } + if (log.isInfoEnabled()) { + log.info("Will delete vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addIdToDelete(id); requestResult.removeExistingNaturalId(internationalRegistrationCode); } - protected void checkUpdate(VesselRow bean, Vessel vessel, ImportRequestResult<Vessel, String> requestResult) { + protected void checkUpdate(VesselRow bean, Vessel vessel, ReferentialImportRequest<Vessel, String> requestResult) { String id = StringUtils.trimToNull(bean.getId()); String internationalRegistrationCode = bean.getInternationalRegistrationCode(); @@ -131,6 +189,10 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); } + if (log.isInfoEnabled()) { + log.info("Will update vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addEntityToUpdate(bean.toEntity()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit d183c76b3145ee52b172f8ee2a9a6e6c895f1db8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 15:41:30 2015 +0100 add a method to get next available protocol names --- .../entities/protocol/TuttiProtocols.java | 15 +++++++++++++++ .../entities/protocol/TuttiProtocolsTest.java | 21 ++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 8d3baeb..8bace77 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -496,4 +496,19 @@ public class TuttiProtocols extends AbstractTuttiProtocols { }); return new ArrayList<>(pmfmIds); } + + public static String getFirstAvailableName(String name, List<String> allProtocolNames) { + + String baseName = name + "-"; + int index = 0; + do { + + name = baseName + (index++); + + } while (allProtocolNames.contains(name)); + + return name; + + } + } diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java index e101c29..18430e2 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java @@ -36,6 +36,7 @@ import org.nuiton.util.FileUtil; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; +import java.util.List; /** * @author tchemit <chemit@codelutin.com> @@ -190,11 +191,11 @@ public class TuttiProtocolsTest { Assert.assertEquals("Commentaire", protocol.getComment()); Assert.assertEquals(Lists.newArrayList("14", "18"), protocol.getLengthClassesPmfmId()); Assert.assertEquals(Lists.newArrayList( - TuttiProtocols.caracteristicMappingRow("114", CaracteristicType.VESSEL_USE_FEATURE), - TuttiProtocols.caracteristicMappingRow("228", CaracteristicType.VESSEL_USE_FEATURE), - TuttiProtocols.caracteristicMappingRow("821", CaracteristicType.VESSEL_USE_FEATURE), - TuttiProtocols.caracteristicMappingRow("21", CaracteristicType.GEAR_USE_FEATURE), - TuttiProtocols.caracteristicMappingRow("22", CaracteristicType.GEAR_USE_FEATURE)), + TuttiProtocols.caracteristicMappingRow("114", CaracteristicType.VESSEL_USE_FEATURE), + TuttiProtocols.caracteristicMappingRow("228", CaracteristicType.VESSEL_USE_FEATURE), + TuttiProtocols.caracteristicMappingRow("821", CaracteristicType.VESSEL_USE_FEATURE), + TuttiProtocols.caracteristicMappingRow("21", CaracteristicType.GEAR_USE_FEATURE), + TuttiProtocols.caracteristicMappingRow("22", CaracteristicType.GEAR_USE_FEATURE)), protocol.getCaracteristicMapping()); Assert.assertNotNull(protocol.getSpecies()); @@ -332,4 +333,14 @@ public class TuttiProtocolsTest { return protocol; } + @Test + public void testGetFirstAvailableName() { + + List<String> names = Lists.newArrayList("a", "b", "c", "a-0", "a-1", "b-1"); + + Assert.assertEquals("a-2", TuttiProtocols.getFirstAvailableName("a", names)); + Assert.assertEquals("b-0", TuttiProtocols.getFirstAvailableName("b", names)); + Assert.assertEquals("c-0", TuttiProtocols.getFirstAvailableName("c", names)); + + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit d7cb746d6ab0f7b9e5d7fa9138e9acb6ddd513f6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 13 17:29:20 2015 +0100 continue import --- .../genericformat/GenericFormatImportResult.java | 56 ++++ .../genericformat/GenericFormatImportService.java | 335 ++++++++++++++++++++- .../service/genericformat/GlobalImportContext.java | 47 +-- .../consumer/CruiseAlreadyExistException.java | 32 ++ .../consumer/CruiseNotValidException.java | 58 ++++ .../consumer/CsvConsumerForAccidentalCatch.java | 40 ++- .../consumer/CsvConsumerForCatch.java | 31 +- .../consumer/CsvConsumerForGearCaracteristic.java | 23 ++ .../CsvConsumerForIndividualObservation.java | 31 +- .../consumer/CsvConsumerForMarineLitter.java | 31 +- .../consumer/CsvConsumerForOperation.java | 31 +- .../consumer/CsvConsumerForParameter.java | 31 +- .../consumer/CsvConsumerForSampleCategory.java | 8 +- .../consumer/CsvConsumerForSurvey.java | 49 ++- .../resources/i18n/tutti-service_en_GB.properties | 19 ++ .../resources/i18n/tutti-service_fr_FR.properties | 23 +- .../resources/i18n/tutti-ui-swing_en_GB.properties | 4 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 + 18 files changed, 797 insertions(+), 56 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index 4fe8680..90c96a1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -2,6 +2,12 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.referential.ReferentialImportResult; import java.util.LinkedHashSet; import java.util.Set; @@ -20,6 +26,16 @@ public class GenericFormatImportResult { private final Set<String> errors; + private TuttiProtocol protocol; + + private ReferentialImportResult<Gear> importedGears; + + private ReferentialImportResult<Person> importedPersons; + + private ReferentialImportResult<Species> importedSpecies; + + private ReferentialImportResult<Vessel> importedVessels; + public GenericFormatImportResult(GenericFormatArchive archive) { this.archive = archive; this.importedCruises = new LinkedHashSet<>(); @@ -34,6 +50,10 @@ public class GenericFormatImportResult { return ImmutableSet.copyOf(importedCruises); } + public TuttiProtocol getProtocol() { + return protocol; + } + public Set<String> getErrors() { return ImmutableSet.copyOf(errors); } @@ -46,4 +66,40 @@ public class GenericFormatImportResult { errors.add(error); } + public void setProtocol(TuttiProtocol protocol) { + this.protocol = protocol; + } + + public ReferentialImportResult<Gear> getImportedGears() { + return importedGears; + } + + public void setImportedGears(ReferentialImportResult<Gear> importedGears) { + this.importedGears = importedGears; + } + + public ReferentialImportResult<Person> getImportedPersons() { + return importedPersons; + } + + public void setImportedPersons(ReferentialImportResult<Person> importedPersons) { + this.importedPersons = importedPersons; + } + + public ReferentialImportResult<Species> getImportedSpecies() { + return importedSpecies; + } + + public void setImportedSpecies(ReferentialImportResult<Species> importedSpecies) { + this.importedSpecies = importedSpecies; + } + + public ReferentialImportResult<Vessel> getImportedVessels() { + return importedVessels; + } + + public void setImportedVessels(ReferentialImportResult<Vessel> importedVessels) { + this.importedVessels = importedVessels; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index 96eb56c..e20e443 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -3,18 +3,53 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; +import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.catches.WeightComputingService; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; +import fr.ifremer.tutti.service.referential.ReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; +import fr.ifremer.tutti.service.referential.csv.GearRow; +import fr.ifremer.tutti.service.referential.csv.PersonRow; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import fr.ifremer.tutti.service.referential.csv.VesselRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -24,6 +59,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -36,6 +73,8 @@ public class GenericFormatImportService extends AbstractTuttiService { protected PersistenceService persistenceService; + protected ValidationService validationService; + protected WeightComputingService weightComputingService; protected DecoratorService decoratorService; @@ -106,13 +145,301 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); archive.checkArchiveLayout(); - GlobalImportContext importContext = new GlobalImportContext(persistenceService, archive, program); + try (GlobalImportContext importContext = new GlobalImportContext(persistenceService, + archive, + ';', + program, + context.getSampleCategoryModel())) { + + GenericFormatImportResult result = new GenericFormatImportResult(archive); + + checkSampleCategoryModel(importContext, result, progressionModel); + importTemporaryGears(importContext, result, progressionModel); + importTemporaryPersons(importContext, result, progressionModel); + importTemporarySpecies(importContext, result, progressionModel); + importTemporaryVessels(importContext, result, progressionModel); + importProtocol(importContext, result, progressionModel); + importCruises(importContext, result, progressionModel); + importGearCaracteristics(importContext, result, progressionModel); + importOperations(importContext, result, progressionModel); + importParameters(importContext, result, progressionModel); + importCatches(importContext, result, progressionModel); + importMarineLitters(importContext, result, progressionModel); + importIndividualObservations(importContext, result, progressionModel); + importAccidentalCatches(importContext, result, progressionModel); + + + return result; + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create close import context", e); + } + + } + + protected void checkSampleCategoryModel(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); + Iterable<ImportRow<SampleCategoryRow>> rows = importContext.loadSampleCategories(); + + for (ImportRow<SampleCategoryRow> row : rows) { + + } + + } + + protected void importTemporaryGears(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.temporaryGears")); + GenericFormatArchive archive = importContext.getArchive(); + if (archive.isTemporaryReferentialGearsPathExists()) { + + ReferentialImportRequest<Gear, Integer> requestResult = referentialTemporaryGearService.createReferentialImportRequest(); + + try (CsvConsumerForTemporaryGear consumer = importContext.loadTemporaryGears()) { + for (ImportRow<GearRow> row : consumer) { + consumer.checkRowForGenericFormatImport(row, requestResult); + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close gears.csv file", e); + } + + ReferentialImportResult<Gear> importResult = referentialTemporaryGearService.executeImportRequest(requestResult); + result.setImportedGears(importResult); + + } + + } + + protected void importTemporaryPersons(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.temporaryPersons")); + GenericFormatArchive archive = importContext.getArchive(); + if (archive.isTemporaryReferentialPersonsPathExists()) { + + ReferentialImportRequest<Person, Integer> requestResult = referentialTemporaryPersonService.createReferentialImportRequest(); + + try (CsvConsumerForTemporaryPerson consumer = importContext.loadTemporaryPersons()) { + for (ImportRow<PersonRow> row : consumer) { + consumer.checkRowForGenericFormatImport(row, requestResult); + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close person.csv file", e); + } + + ReferentialImportResult<Person> importResult = referentialTemporaryPersonService.executeImportRequest(requestResult); + result.setImportedPersons(importResult); + + } + + } + + protected void importTemporarySpecies(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.temporarySpecies")); + GenericFormatArchive archive = importContext.getArchive(); + if (archive.isTemporaryReferentialSpeciesPathExists()) { + + ReferentialImportRequest<Species, Integer> requestResult = referentialTemporarySpeciesService.createReferentialImportRequest(); + + try (CsvConsumerForTemporarySpecies consumer = importContext.loadTemporarySpecies()) { + for (ImportRow<SpeciesRow> row : consumer) { + consumer.checkRowForGenericFormatImport(row, requestResult); + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close species.csv file", e); + } + + ReferentialImportResult<Species> importResult = referentialTemporarySpeciesService.executeImportRequest(requestResult); + result.setImportedSpecies(importResult); + + } + + } + + protected void importTemporaryVessels(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.temporaryVessels")); + GenericFormatArchive archive = importContext.getArchive(); + if (archive.isTemporaryReferentialVesselsPathExists()) { + + ReferentialImportRequest<Vessel, String> requestResult = referentialTemporaryVesselService.createReferentialImportRequest(); + + try (CsvConsumerForTemporaryVessel consumer = importContext.loadTemporaryVessels()) { + for (ImportRow<VesselRow> row : consumer) { + consumer.checkRowForGenericFormatImport(row, requestResult); + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close vessel.csv file", e); + } + + ReferentialImportResult<Vessel> importResult = referentialTemporaryVesselService.executeImportRequest(requestResult); + result.setImportedVessels(importResult); + + } + + } + + protected void importProtocol(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.load.protocol")); + GenericFormatArchive archive = importContext.getArchive(); + if (archive.isProtocolExists()) { + + TuttiProtocol tuttiProtocol = protocolImportExportService.importProtocol(archive.getProtocolPath().toFile()); + + if (persistenceService.isProtocolExist(tuttiProtocol.getId())) { + + // already known, do not reimport + if (log.isWarnEnabled()) { + log.warn("Already known protocol with id" + tuttiProtocol.getId() + " do not reimport it"); + } + + progressionModel.increments(t("tutti.genericFormat.reuse.protocol", tuttiProtocol.getName())); + + tuttiProtocol = persistenceService.getProtocol(tuttiProtocol.getId()); + + } else { + + List<String> allProtocolNames = persistenceService.getAllProtocolNames(); + + if (allProtocolNames.contains(tuttiProtocol.getName())) { + + String newName = TuttiProtocols.getFirstAvailableName(tuttiProtocol.getName(), allProtocolNames); + tuttiProtocol.setName(newName); + + } + + progressionModel.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); - // load sampleSampleCategory and check it + tuttiProtocol = persistenceService.createProtocol(tuttiProtocol); + persistenceService.setProtocol(tuttiProtocol); - GenericFormatImportResult result = new GenericFormatImportResult(archive); + } - return result; + result.setProtocol(tuttiProtocol); + + } + } + + protected void importCruises(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.cruises")); + + try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { + for (ImportRow<SurveyRow> row : consumer) { + + consumer.checkRow(row, importContext, result, validationService); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close survey.csv file", e); + } + + } + + protected void importGearCaracteristics(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.gearCaracteristics")); + try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { + for (ImportRow<GearCaracteristicRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close gearCaracteristic.csv file", e); + } + + } + + protected void importOperations(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.operations")); + try (CsvConsumerForOperation consumer = importContext.loadOperations()) { + for (ImportRow<OperationRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close operation.csv file", e); + } + + } + + protected void importParameters(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.parameters")); + try (CsvConsumerForParameter consumer = importContext.loadParameters()) { + for (ImportRow<ParameterRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close parameter.csv file", e); + } + + } + + protected void importCatches(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.catches")); + try (CsvConsumerForCatch consumer = importContext.loadCatches()) { + for (ImportRow<CatchRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close catch.csv file", e); + } + + } + + protected void importAccidentalCatches(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.accidentalCatches")); + try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { + for (ImportRow<AccidentalCatchRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close accidentalCatch.csv file", e); + } + + } + + protected void importIndividualObservations(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.individualObservations")); + try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { + for (ImportRow<IndividualObservationRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close individualObservation.csv file", e); + } + + } + + protected void importMarineLitters(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + + progressionModel.increments(t("tutti.genericFormat.import.marineLitters")); + try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { + for (ImportRow<MarineLitterRow> row : consumer) { + + consumer.checkRow(row, importContext, result); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close marineLitter.csv file", e); + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index a480bfc..34e1c98 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; @@ -27,12 +28,14 @@ import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; -import org.apache.commons.io.IOUtils; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; import org.nuiton.csv.ImportRow; import java.io.Closeable; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -78,7 +81,7 @@ public class GlobalImportContext implements Closeable { private final Set<Cruise> existingCruises; - private final List<Closeable> toClose; + private final TuttiProtocol oldProtocol; public GlobalImportContext(PersistenceService persistenceService, GenericFormatArchive archive, @@ -104,8 +107,8 @@ public class GlobalImportContext implements Closeable { List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); this.existingCruises = ImmutableSet.copyOf(allCruise); + this.oldProtocol = persistenceService.getProtocol(); - this.toClose = new ArrayList<>(); } @Override @@ -113,9 +116,6 @@ public class GlobalImportContext implements Closeable { //TODO Close //archive.close(); - for (Closeable closeable : toClose) { - IOUtils.closeQuietly(closeable); - } } @@ -184,7 +184,6 @@ public class GlobalImportContext implements Closeable { boolean equals = false; for (Cruise existingCruise : existingCruises) { - equals = Cruises.equals(cruise, existingCruise); if (equals) { break; @@ -197,56 +196,70 @@ public class GlobalImportContext implements Closeable { public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(archive.getSampleCategoryModelPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForSurvey loadSurveys() { CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(archive.getSurveyPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForGearCaracteristic loadGearCaracteristics() { CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(archive.getGearCaracteristicsPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForOperation loadOperations() { CsvConsumerForOperation consumer = new CsvConsumerForOperation(archive.getOperationPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForParameter loadParameters() { CsvConsumerForParameter consumer = new CsvConsumerForParameter(archive.getParameterPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForCatch loadCatches() { CsvConsumerForCatch consumer = new CsvConsumerForCatch(archive.getSampleCategoryModelPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForMarineLitter loadMarineLitters() { CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(archive.getMarineLitterPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForIndividualObservation loadIndividualObservations() { CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(archive.getIndividualObservationPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } public CsvConsumerForAccidentalCatch loadAccidentalCatches() { CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(archive.getAccidentalCatchPath(), csvSeparator, this); - toClose.add(consumer); return consumer; } + public CsvConsumerForTemporaryGear loadTemporaryGears() { + CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(archive.getTemporaryReferentialGearsPath(), csvSeparator); + return consumer; + } + + public CsvConsumerForTemporaryPerson loadTemporaryPersons() { + CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(archive.getTemporaryReferentialPersonsPath(), csvSeparator); + return consumer; + } + + public CsvConsumerForTemporarySpecies loadTemporarySpecies() { + CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(archive.getTemporaryReferentialSpeciesPath(), csvSeparator); + return consumer; + } + + public CsvConsumerForTemporaryVessel loadTemporaryVessels() { + CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(archive.getTemporaryReferentialVesselsPath(), csvSeparator); + return consumer; + } + + public TuttiProtocol getOldProtocol() { + return oldProtocol; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyExistException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyExistException.java new file mode 100644 index 0000000..a2b6096 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyExistException.java @@ -0,0 +1,32 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CruiseAlreadyExistException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Cruise cruise; + + public CruiseAlreadyExistException(Cruise cruise) { + this.cruise = cruise; + } + + public Cruise getCruise() { + return cruise; + } + + @Override + public String getMessage() { + return t("tutti.genericFormat.import.error.cruiseAlreadyExist", cruise.getName()); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotValidException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotValidException.java new file mode 100644 index 0000000..2dee85d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotValidException.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import com.google.common.base.Joiner; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import org.nuiton.validator.NuitonValidatorResult; +import org.nuiton.validator.NuitonValidatorScope; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CruiseNotValidException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Cruise cruise; + + private final NuitonValidatorResult validatorResult; + + public CruiseNotValidException(Cruise cruise, NuitonValidatorResult validatorResult) { + this.cruise = cruise; + this.validatorResult = validatorResult; + } + + public Cruise getCruise() { + return cruise; + } + + @Override + public String getMessage() { + + StringBuilder builder = new StringBuilder(); + + if (validatorResult.hasFatalMessages()) { + List<String> fatalMessage = validatorResult.getMessagesForScope(NuitonValidatorScope.FATAL); + builder.append(t("tutti.fatal.messages", Joiner.on("\n-").join(fatalMessage))); + } + if (validatorResult.hasErrorMessagess()) { + List<String> errorsMessage = validatorResult.getMessagesForScope(NuitonValidatorScope.ERROR); + builder.append(t("tutti.error.messages", Joiner.on("\n-").join(errorsMessage))); + } + if (validatorResult.hasWarningMessages()) { + List<String> warningMessage = validatorResult.getMessagesForScope(NuitonValidatorScope.WARNING); + builder.append(t("tutti.warning.messages", Joiner.on("\n-").join(warningMessage))); + } + + String message = t("tutti.genericFormat.import.error.cruiseNotValid", builder.toString()); + return message; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java index 1f7750a..8c6c6b0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -1,10 +1,44 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; + +import java.nio.file.Path; + /** * Created on 2/11/15. * * @author Tony Chemit - chemit@codelutin.com - * @since XXX + * @since 3.14 */ -public class CsvConsumerForAccidentalCatch { -} +public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { + + public CsvConsumerForAccidentalCatch(Path file, char separator, GlobalImportContext importContext) { + super(file, AccidentalCatchModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<AccidentalCatchRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + AccidentalCatchRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java index 8555ddb..e2229cd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; -import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.CatchModel; +import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -13,10 +17,29 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { +public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { public CsvConsumerForCatch(Path file, char separator, GlobalImportContext importContext) { - super(file, AccidentalCatchModel.forImport(separator, importContext)); + super(file, CatchModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<CatchRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + CatchRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java index f304499..d9f3f15 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -19,4 +23,23 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist super(file, GearCaracteristicModel.forImport(separator, importContext)); } + public void checkRow(ImportRow<GearCaracteristicRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + GearCaracteristicRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java index de0f3cf..b710cae 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; -import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -13,10 +17,29 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForIndividualObservation extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { +public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { public CsvConsumerForIndividualObservation(Path file, char separator, GlobalImportContext importContext) { - super(file, GearCaracteristicModel.forImport(separator, importContext)); + super(file, IndividualObservationModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<IndividualObservationRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + IndividualObservationRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java index daf5118..009057f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; -import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -13,10 +17,29 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForMarineLitter extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { +public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, MarineLitterModel> { public CsvConsumerForMarineLitter(Path file, char separator, GlobalImportContext importContext) { - super(file, IndividualObservationModel.forImport(separator, importContext)); + super(file, MarineLitterModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<MarineLitterRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + MarineLitterRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java index 97c8aa1..6ed4e90 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; -import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -13,10 +17,29 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForOperation extends CsvComsumer<MarineLitterRow, MarineLitterModel> { +public class CsvConsumerForOperation extends CsvComsumer<OperationRow, OperationModel> { public CsvConsumerForOperation(Path file, char separator, GlobalImportContext importContext) { - super(file, MarineLitterModel.forImport(separator, importContext)); + super(file, OperationModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<OperationRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + OperationRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java index 4e41547..76dca39 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.OperationModel; -import fr.ifremer.tutti.service.genericformat.csv.OperationRow; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -13,10 +17,29 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForParameter extends CsvComsumer<OperationRow, OperationModel> { +public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, ParameterModel> { public CsvConsumerForParameter(Path file, char separator, GlobalImportContext importContext) { - super(file, OperationModel.forImport(separator, importContext)); + super(file, ParameterModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<ParameterRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + + if (row.isValid()) { + + ParameterRow bean = row.getBean(); + + //TODO checks! + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index cc09d88..ebe7072 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -2,8 +2,8 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; -import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; import java.nio.file.Path; @@ -13,10 +13,10 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForSampleCategory extends CsvComsumer<ParameterRow, ParameterModel> { +public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, SampleCategoryModel> { public CsvConsumerForSampleCategory(Path file, char separator, GlobalImportContext importContext) { - super(file, ParameterModel.forImport(separator, importContext)); + super(file, SampleCategoryModel.forImport(separator, importContext)); } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index cbfc4e3..ee68a7e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -1,9 +1,16 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; -import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; -import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; +import org.nuiton.validator.NuitonValidatorResult; import java.nio.file.Path; @@ -13,10 +20,44 @@ import java.nio.file.Path; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class CsvConsumerForSurvey extends CsvComsumer<ParameterRow, ParameterModel> { +public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { public CsvConsumerForSurvey(Path file, char separator, GlobalImportContext importContext) { - super(file, ParameterModel.forImport(separator, importContext)); + super(file, SurveyModel.forImport(separator, importContext)); + } + + public void checkRow(ImportRow<SurveyRow> row, GlobalImportContext importContext, GenericFormatImportResult result, ValidationService validationService) { + + if (row.isValid()) { + + SurveyRow bean = row.getBean(); + + Cruise cruise = bean.getCruise(); + + if (importContext.isCruiseExists(cruise)) { + + // Can't readd an existing cruise + TuttiCsvUtil.addCheckError(row, new CruiseAlreadyExistException(cruise)); + + } + + NuitonValidatorResult nuitonValidatorResult = validationService.validateEditCruise(cruise); + if (nuitonValidatorResult.hasFatalMessages() || nuitonValidatorResult.hasErrorMessagess()) { + + // There is some validation errors + TuttiCsvUtil.addCheckError(row, new CruiseNotValidException(cruise, nuitonValidatorResult)); + + } + + } + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } } \ No newline at end of file diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 111508a..9ca57f4 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -6,8 +6,27 @@ tutti.caracteristicType.gearUseFeature= tutti.caracteristicType.individualObservation= tutti.caracteristicType.lengthStep= tutti.caracteristicType.vesselUseFeature= +tutti.csv.import.error.on.field= +tutti.csv.import.error.on.row= tutti.error.benthos.not.in.protocol= tutti.error.species.not.in.protocol= +tutti.genericFormat.import.accidentalCatches= +tutti.genericFormat.import.catches= +tutti.genericFormat.import.cruises= +tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.gearCaracteristics= +tutti.genericFormat.import.individualObservations= +tutti.genericFormat.import.marineLitters= +tutti.genericFormat.import.operations= +tutti.genericFormat.import.parameters= +tutti.genericFormat.import.protocol= +tutti.genericFormat.import.sampleCategoryModel= +tutti.genericFormat.import.temporaryGears= +tutti.genericFormat.import.temporaryPersons= +tutti.genericFormat.import.temporarySpecies= +tutti.genericFormat.import.temporaryVessels= +tutti.genericFormat.importError.archiveNotSane= +tutti.genericformat.importError.missArchiveFile= tutti.io.mkDir.error= tutti.pdf.export.missing.species.code= tutti.property.attachment= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 44bf30e..d1b846d 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -3,17 +3,32 @@ tutti.caracteristicType.INDIVIDUAL_OBSERVATION=Observations individuelles tutti.caracteristicType.LENGTH_STEP=Classes de tailles tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques tutti.caracteristicType.lengthStep= +tutti.csv.import.error.on.field=Colonne %s \: %s +tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s +tutti.genericFormat.import.accidentalCatches= +tutti.genericFormat.import.catches= +tutti.genericFormat.import.cruises= +tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.gearCaracteristics= +tutti.genericFormat.import.individualObservations= +tutti.genericFormat.import.marineLitters= +tutti.genericFormat.import.operations= +tutti.genericFormat.import.parameters= +tutti.genericFormat.import.protocol= +tutti.genericFormat.import.sampleCategoryModel= +tutti.genericFormat.import.temporaryGears= +tutti.genericFormat.import.temporaryPersons= +tutti.genericFormat.import.temporarySpecies= +tutti.genericFormat.import.temporaryVessels= +tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique \:\n%s +tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. tutti.property.attachment=Pièce jointe tutti.property.caracteristic=Caractéristique tutti.property.country=Pays tutti.property.cruise=Campagne -tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive -tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique :\n%s tutti.property.date=Date -tutti.csv.import.error.on.field=Colonne %s : %s -tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s : \n%s tutti.property.department=Département tutti.property.firstName=Prénom tutti.property.fishingOperation=Trait diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index d9182b5..e2fa25e 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -99,6 +99,7 @@ tutti.common.askBeforeUpdate.help= tutti.common.cancel= tutti.common.cancel.mnemonic= tutti.common.file.csv= +tutti.common.file.genericFormat= tutti.common.file.iwa= tutti.common.file.pdf= tutti.common.file.protocol= @@ -1420,6 +1421,8 @@ tutti.importDb.step.closeDb= tutti.importDb.step.openDb= tutti.importDb.step.unzipArchive= tutti.importDb.step.will.migrateSchema= +tutti.importProgram.action.exportErrors= +tutti.importProgram.action.success= tutti.importProtocol.action.success= tutti.importPupitri.carrouselFile.extension= tutti.importPupitri.carrouselFile.extension.description= @@ -1768,6 +1771,7 @@ tutti.selectCruise.action.exportProgram= tutti.selectCruise.action.exportProgram.tip= tutti.selectCruise.action.exportProtocol= tutti.selectCruise.action.exportProtocol.tip= +tutti.selectCruise.action.importGenericformat= tutti.selectCruise.action.importProtocol= tutti.selectCruise.action.importProtocol.tip= tutti.selectCruise.action.newCruise= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index c01ebb9..1b167d0 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -81,6 +81,7 @@ tutti.common.askBeforeUpdate.help=Que voulez-vous faire ?<ul><li><strong>Annuler tutti.common.cancel=Annuler tutti.common.cancel.mnemonic=A tutti.common.file.csv=Extension d'un fichier csv +tutti.common.file.genericFormat= tutti.common.file.iwa=Fichier d'import Psion tutti.common.file.pdf=Extension d'un fichier pdf tutti.common.file.protocol=Extension d'un fichier de protocole Allegro Campagne @@ -1361,6 +1362,8 @@ tutti.importDb.step.closeDb=Fermeture de la base tutti.importDb.step.openDb=Ouverture de la base de données <strong>%s</strong> tutti.importDb.step.unzipArchive=Décompression de l'archive tutti.importDb.step.will.migrateSchema=Démarrage de la mise à jour du schéma de la base depuis la version %s vers la version %s +tutti.importProgram.action.exportErrors= +tutti.importProgram.action.success= tutti.importProtocol.action.success=Protocole [%s] lu depuis le fichier. tutti.importPupitri.carrouselFile.extension=car tutti.importPupitri.carrouselFile.extension.description=Fichier du carrousel (.car) @@ -1668,6 +1671,7 @@ tutti.selectCruise.action.exportProgram=Exporter tutti.selectCruise.action.exportProgram.tip=Exporter la série sélectionnée tutti.selectCruise.action.exportProtocol=Exporter tutti.selectCruise.action.exportProtocol.tip=Exporter le protocole sélectionné +tutti.selectCruise.action.importGenericformat= tutti.selectCruise.action.importProtocol=Importer tutti.selectCruise.action.importProtocol.tip=Importer un protocole tutti.selectCruise.action.newCruise=Nouveau -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit fc0efdedcd87cef29cd293879e92383cee226dbf Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:53:53 2015 +0100 use nuiton-csv --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9f5e4af..2a373ec 100644 --- a/pom.xml +++ b/pom.xml @@ -250,7 +250,7 @@ <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-csv</artifactId> - <version>3.0-rc-4</version> + <version>3.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.nuiton</groupId> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 1f18450ac8909d765524118436f2d9e299d3a133 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:56:51 2015 +0100 move to CsvConsumer some API --- .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 26 ++++++++++++++++++++++ .../consumer/CsvConsumerForAccidentalCatch.java | 3 +-- .../consumer/CsvConsumerForCatch.java | 3 +-- .../consumer/CsvConsumerForGearCaracteristic.java | 3 +-- .../CsvConsumerForIndividualObservation.java | 3 +-- .../consumer/CsvConsumerForMarineLitter.java | 3 +-- .../consumer/CsvConsumerForOperation.java | 3 +-- .../consumer/CsvConsumerForParameter.java | 3 +-- .../consumer/CsvConsumerForSurvey.java | 2 +- .../consumer/CsvConsumerForTemporaryGear.java | 5 ++--- .../consumer/CsvConsumerForTemporaryPerson.java | 5 ++--- .../consumer/CsvConsumerForTemporarySpecies.java | 5 ++--- .../consumer/CsvConsumerForTemporaryVessel.java | 5 ++--- 13 files changed, 42 insertions(+), 27 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index 774335b..d60d8f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -1,10 +1,13 @@ package fr.ifremer.tutti.service.csv; import com.google.common.base.Charsets; +import com.google.common.base.Joiner; import com.google.common.io.Files; import org.apache.commons.io.IOUtils; +import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Import2; import org.nuiton.csv.ImportRow; +import org.nuiton.csv.ImportableColumn; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.BufferedReader; @@ -12,7 +15,11 @@ import java.io.Closeable; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Path; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; /** * Created on 2/11/15. @@ -51,4 +58,23 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> IOUtils.closeQuietly(importer); } + public String rowErrorsToExceptionMessage(ImportRow<O> bean) { + + Set<String> errors = new HashSet<>(); + for (AbstractImportErrorInfo<O> errorInfo : bean.getErrors()) { + errors.add(t("tutti.csv.import.error.on.field", errorInfo.getField().getHeaderName(), errorInfo.getCause().getMessage())); + } + + String message = t("tutti.csv.import.error.on.row", bean.getLineNumber(), Joiner.on("\n").join(errors)); + return message; + + } + + public static class CheckImportErrorInfo<E> extends AbstractImportErrorInfo<E> { + + public CheckImportErrorInfo(ImportRow<E> row, ImportableColumn<E, Object> field, Throwable cause) { + super(row, field, cause); + } + + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java index 8c6c6b0..ce2a6c4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; @@ -35,7 +34,7 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java index e2229cd..dd87e52 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.CatchModel; @@ -35,7 +34,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java index d9f3f15..1937f19 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; @@ -35,7 +34,7 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java index b710cae..d9af30a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; @@ -35,7 +34,7 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java index 009057f..c3f6ba4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; @@ -35,7 +34,7 @@ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, Mar if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java index 6ed4e90..a33f92d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.OperationModel; @@ -35,7 +34,7 @@ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, Operation if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java index 76dca39..0fbf829 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; @@ -35,7 +34,7 @@ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, Parameter if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index ee68a7e..1d85ba1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -53,7 +53,7 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java index c988277..b2cb522 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java @@ -4,7 +4,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; @@ -41,7 +40,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } @@ -85,7 +84,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java index cf9130d..cc51557 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java @@ -4,7 +4,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; @@ -41,7 +40,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } @@ -85,7 +84,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index e6f1e49..fc5cb07 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -4,7 +4,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; @@ -41,7 +40,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } @@ -85,7 +84,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java index 0efe633..aa0d7a7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java @@ -4,7 +4,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; @@ -41,7 +40,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } @@ -86,7 +85,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel if (!row.isValid()) { - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + String message = rowErrorsToExceptionMessage(row); throw new ApplicationBusinessException(message); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 4260acc555b312891f1eafcedc5a702eab064103 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:57:27 2015 +0100 unify parser formatter --- t | 75 ------------ .../catches/multipost/AccidentalCatchRowModel.java | 6 +- .../catches/multipost/MarineLitterRowModel.java | 6 +- .../catches/multipost/MultiPostImportService.java | 6 +- .../csv/AbstractTuttiImportExportModel.java | 24 ---- .../service/csv/CaracteristicParserFormatter.java | 47 +++++++ .../csv/CaracteristicTechnicalFormatter.java | 22 ---- .../service/csv/CaracteristicTechnicalParser.java | 43 ------- .../service/csv/CaracteristicValueFormatter.java | 43 ------- .../csv/CaracteristicValueParserFormatter.java | 114 +++++++++++++++++ .../csv/CaracteristicValueTechnicalFormatter.java | 43 ------- .../csv/CaracteristicValueTechnicalParser.java | 56 --------- .../fr/ifremer/tutti/service/csv/CsvProducer.java | 2 +- .../service/csv/DecoratorPropertyFormatter.java | 37 ------ .../csv/EntityListParserFormatterSupport.java | 52 ++++++++ .../tutti/service/csv/EntityNotFoundException.java | 39 ++++++ .../service/csv/EntityParserFormatterSupport.java | 86 +++++++++++++ .../csv/FishingOperationLocationFormatter.java | 19 --- .../FishingOperationLocationParserFormatter.java | 62 ++++++++++ ...FishingOperationLocationTechnicalFormatter.java | 19 --- .../FishingOperationLocationTechnicalParser.java | 56 --------- .../csv/FishingOperationStrataFormatter.java | 19 --- .../csv/FishingOperationStrataParserFormatter.java | 62 ++++++++++ .../FishingOperationStrataTechnicalFormatter.java | 19 --- .../csv/FishingOperationStrataTechnicalParser.java | 56 --------- .../csv/FishingOperationSubStrataFormatter.java | 19 --- .../FishingOperationSubStrataParserFormatter.java | 62 ++++++++++ ...ishingOperationSubStrataTechnicalFormatter.java | 19 --- .../FishingOperationSubStrataTechnicalParser.java | 56 --------- .../ifremer/tutti/service/csv/GearFormatter.java | 23 ---- .../tutti/service/csv/GearParserFormatter.java | 48 ++++++++ .../tutti/service/csv/GearTechnicalFormatter.java | 23 ---- .../tutti/service/csv/GearTechnicalParser.java | 46 ------- .../tutti/service/csv/HarbourFormatter.java | 23 ---- .../tutti/service/csv/HarbourParserFormatter.java | 48 ++++++++ .../service/csv/HarbourTechnicalFormatter.java | 23 ---- .../tutti/service/csv/HarbourTechnicalParser.java | 43 ------- .../tutti/service/csv/ListPersonFormatter.java | 24 ---- .../service/csv/ListPersonTechnicalFormatter.java | 25 ---- .../service/csv/ListPersonTechnicalParser.java | 52 -------- .../tutti/service/csv/ListVesselFormatter.java | 25 ---- .../service/csv/ListVesselTechnicalFormatter.java | 25 ---- .../service/csv/ListVesselTechnicalParser.java | 52 -------- .../service/csv/PersonListParserFormatter.java | 25 ++++ .../tutti/service/csv/PersonParserFormatter.java | 45 +++++++ .../tutti/service/csv/SpeciesParserFormatter.java | 65 ++++++++++ .../service/csv/SpeciesTechnicalFormatter.java | 23 ---- .../tutti/service/csv/SpeciesTechnicalParser.java | 43 ------- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 135 +++++---------------- .../ifremer/tutti/service/csv/VesselFormatter.java | 23 ---- .../service/csv/VesselListParserFormatter.java | 25 ++++ .../tutti/service/csv/VesselParserFormatter.java | 49 ++++++++ .../service/csv/VesselTechnicalFormatter.java | 23 ---- .../tutti/service/csv/VesselTechnicalParser.java | 43 ------- .../service/export/sumatra/CatchRowModel.java | 2 +- .../genericformat/GenericFormatExportService.java | 1 - .../service/genericformat/GlobalExportContext.java | 8 +- .../service/genericformat/GlobalImportContext.java | 102 ++++++++-------- .../genericformat/csv/AccidentalCatchModel.java | 3 +- .../service/genericformat/csv/CatchModel.java | 15 ++- .../genericformat/csv/GearCaracteristicModel.java | 12 +- .../csv/IndividualObservationModel.java | 2 +- .../service/genericformat/csv/ParameterModel.java | 10 +- .../genericformat/csv/SpeciesExportModel.java | 2 +- .../tutti/service/protocol/SpeciesRowModel.java | 4 +- .../resources/i18n/tutti-service_en_GB.properties | 10 ++ .../resources/i18n/tutti-service_fr_FR.properties | 11 ++ 67 files changed, 965 insertions(+), 1365 deletions(-) diff --git a/t b/t deleted file mode 100644 index f495ebc..0000000 --- a/t +++ /dev/null @@ -1,75 +0,0 @@ -[1mdiff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m -[1mindex 6d08564..fbbca75 100644[m -[1m--- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m -[1m+++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m -[36m@@ -3,6 +3,7 @@[m [mpackage fr.ifremer.tutti.service.genericformat;[m - import fr.ifremer.tutti.persistence.entities.data.Program;[m - import fr.ifremer.tutti.service.PersistenceService;[m - import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser;[m -[32m+[m[32mimport fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser;[m - import fr.ifremer.tutti.service.csv.FishingOperationLocationTechnicalParser;[m - import fr.ifremer.tutti.service.csv.FishingOperationStrataTechnicalParser;[m - import fr.ifremer.tutti.service.csv.FishingOperationSubStrataTechnicalParser;[m -[36m@@ -10,7 +11,6 @@[m [mimport fr.ifremer.tutti.service.csv.GearTechnicalParser;[m - import fr.ifremer.tutti.service.csv.HarbourTechnicalParser;[m - import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser;[m - import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser;[m -[31m-import fr.ifremer.tutti.service.csv.ProgramTechnicalParser;[m - import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser;[m - import fr.ifremer.tutti.service.csv.VesselTechnicalParser;[m - [m -[36m@@ -24,8 +24,6 @@[m [mpublic class GlobalImportContext {[m - [m - private final VesselTechnicalParser vesselParser;[m - [m -[31m- private final ProgramTechnicalParser programParser;[m -[31m-[m - private final HarbourTechnicalParser harbourParser;[m - [m - private final GearTechnicalParser mandatoryGearParser;[m -[36m@@ -46,9 +44,12 @@[m [mpublic class GlobalImportContext {[m - [m - private final SpeciesTechnicalParser speciesParser;[m - [m -[32m+[m[32m private final CaracteristicValueTechnicalParser marineLitterCategoryValueParser;[m -[32m+[m -[32m+[m[32m private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser;[m -[32m+[m - public GlobalImportContext(PersistenceService persistenceService, Program program) {[m - this.vesselParser = new VesselTechnicalParser(persistenceService);[m -[31m- this.programParser = new ProgramTechnicalParser(persistenceService);[m - this.harbourParser = new HarbourTechnicalParser(persistenceService);[m - this.listPersonParser = new ListPersonTechnicalParser(persistenceService);[m - this.mandatoryGearParser = new GearTechnicalParser(persistenceService, true);[m -[36m@@ -59,16 +60,14 @@[m [mpublic class GlobalImportContext {[m - this.fishingOperationLocationParser = new FishingOperationLocationTechnicalParser(persistenceService, program.getZone().getId());[m - this.listVesselParser = new ListVesselTechnicalParser(persistenceService);[m - this.speciesParser = new SpeciesTechnicalParser(persistenceService);[m -[32m+[m[32m this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic());[m -[32m+[m[32m this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic());[m - }[m - [m - public VesselTechnicalParser getVesselParser() {[m - return vesselParser;[m - }[m - [m -[31m- public ProgramTechnicalParser getProgramParser() {[m -[31m- return programParser;[m -[31m- }[m -[31m-[m - public HarbourTechnicalParser getHarbourParser() {[m - return harbourParser;[m - }[m -[36m@@ -108,4 +107,12 @@[m [mpublic class GlobalImportContext {[m - public SpeciesTechnicalParser getSpeciesParser() {[m - return speciesParser;[m - }[m -[32m+[m -[32m+[m[32m public CaracteristicValueTechnicalParser getMarineLitterCategoryValueParser() {[m -[32m+[m[32m return marineLitterCategoryValueParser;[m -[32m+[m[32m }[m -[32m+[m -[32m+[m[32m public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() {[m -[32m+[m[32m return marineLitterSizeCategoryValueParser;[m -[32m+[m[32m }[m - }[m diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java index d488299..fa4a44b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -55,7 +55,7 @@ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<Acci newSpeciesForeignKeyColumn(AccidentalCatchRow.SPECIES, species); newColumnForExport(AccidentalCatchRow.GENDER, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(AccidentalCatchRow.GENDER, new CaracteristicValueTechnicalParser(sexCaracteristic)); + newMandatoryColumn(AccidentalCatchRow.GENDER, CaracteristicValueParserFormatter.newParser(sexCaracteristic)); newColumnForImportExport(AccidentalCatchRow.WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); @@ -65,7 +65,7 @@ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<Acci newForeignKeyColumn(AccidentalCatchRow.LENGTH_STEP_CARACTERISTIC, Caracteristic.class, lengthStepCaracteristics); newColumnForExport(AccidentalCatchRow.DEAD_OR_ALIVE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(AccidentalCatchRow.DEAD_OR_ALIVE, new CaracteristicValueTechnicalParser(dedOrAliveCaracteristic)); + newMandatoryColumn(AccidentalCatchRow.DEAD_OR_ALIVE, CaracteristicValueParserFormatter.newParser(dedOrAliveCaracteristic)); newColumnForImportExport(AccidentalCatchRow.COMMENT); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java index 53ad530..d88360c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** @@ -43,10 +43,10 @@ public class MarineLitterRowModel extends AbstractTuttiImportExportModel<MarineL newColumnForImportExport(MarineLitterRow.BATCH_ID); newColumnForExport(MarineLitterRow.CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(MarineLitterRow.CATEGORY, new CaracteristicValueTechnicalParser(categoryCaracteristic)); + newMandatoryColumn(MarineLitterRow.CATEGORY, CaracteristicValueParserFormatter.newParser(categoryCaracteristic)); newColumnForExport(MarineLitterRow.SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(MarineLitterRow.SIZE_CATEGORY, new CaracteristicValueTechnicalParser(sizeCategoryCaracteristic)); + newMandatoryColumn(MarineLitterRow.SIZE_CATEGORY, CaracteristicValueParserFormatter.newParser(sizeCategoryCaracteristic)); newColumnForImportExport(MarineLitterRow.NUMBER, TuttiCsvUtil.INTEGER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index 61b3c11..efb9ef3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -60,7 +60,7 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -1109,7 +1109,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult IndividualObservationBatch batch = batches.get(caracteristicRow.getBatchId()); if (batch != null) { Caracteristic caracteristic = caracteristicRow.getCaracteristic(); - CaracteristicValueTechnicalParser parser = new CaracteristicValueTechnicalParser(caracteristic); + CaracteristicValueParserFormatter parser = CaracteristicValueParserFormatter.newParser(caracteristic); Serializable value = caracteristicRow.getValue(); try { parser.parse(String.valueOf(value)); @@ -1280,7 +1280,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult AccidentalBatch batch = batches.get(caracteristicRow.getBatchId()); if (batch != null) { Caracteristic caracteristic = caracteristicRow.getCaracteristic(); - CaracteristicValueTechnicalParser parser = new CaracteristicValueTechnicalParser(caracteristic); + CaracteristicValueParserFormatter parser = CaracteristicValueParserFormatter.newParser(caracteristic); Serializable value = caracteristicRow.getValue(); try { parser.parse(String.valueOf(value)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 97b22d8..9b05c7a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -8,7 +8,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Speciess; import org.nuiton.csv.ExportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ext.AbstractImportExportModel; -import org.nuiton.decorator.Decorator; import java.util.List; import java.util.Map; @@ -25,24 +24,6 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx super(separator); } - public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) { - return newColumnForExportByDecorator(headerName, propertyName, decorator, null); - } - - public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) { - DecoratorPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newDecoratorFormatter(decorator, defaultNullValue); - return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter); - } - - public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) { - return newColumnForExport(headerName, propertyName, formatterPropertyName, null); - } - - public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) { - BeanPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newBeanFormatter(formatterPropertyName, defaultNullValue); - return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter); - } - public <E extends TuttiEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { newMandatoryColumn(headerName, propertyName, new ForeignKeyParserFormatter<>(entityType, foreignKeyName, universe)); } @@ -71,11 +52,6 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx return newNullableColumnForExport(headerName, propertyName, TuttiCsvUtil.STRING); } - public <T> ExportableColumn<M, T> newNullableColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) { - DecoratorPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newDecoratorFormatter(decorator, ""); - return newNullableColumnForExport(headerName, propertyName, valueFormatter); - } - public <T> ExportableColumn<M, T> newIndexNullableColumnForExport(String headerName, String collectionName, int order, String propertyName, ValueFormatter<T> valueFormatter) { return modelBuilder.newColumnForExport(headerName, new BeanIndexNullableGetter<M, T>(collectionName, order, propertyName), valueFormatter); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java new file mode 100644 index 0000000..f8e1f9d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java @@ -0,0 +1,47 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CaracteristicParserFormatter extends EntityParserFormatterSupport<Caracteristic> { + + public static CaracteristicParserFormatter newFormatter() { + return new CaracteristicParserFormatter(false, null); + } + + public static CaracteristicParserFormatter newTechnicalFormatter() { + return new CaracteristicParserFormatter(true, null); + } + + public static CaracteristicParserFormatter newParser(PersistenceService persistenceService) { + return new CaracteristicParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected CaracteristicParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Caracteristic.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Caracteristic> getEntities() { + return persistenceService.getAllCaracteristic(); + } + + @Override + protected String formatBusiness(Caracteristic caracteristic) { + return caracteristic.getParameterName() + + " - " + caracteristic.getMatrixName() + + " - " + caracteristic.getFractionName() + + " - " + caracteristic.getMethodName(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java deleted file mode 100644 index cc478ca..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java +++ /dev/null @@ -1,22 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicTechnicalFormatter implements ValueFormatter<Caracteristic> { - - @Override - public String format(Caracteristic value) { - - String result = value == null ? "" : TuttiEntities.GET_ID.apply(value); - return result; - - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java deleted file mode 100644 index 3c93821..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicTechnicalParser implements ValueParser<Caracteristic> { - - private final PersistenceService persistenceService; - - private Map<String, Caracteristic> caracteristicsById; - - public CaracteristicTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Caracteristic parse(String value) throws ParseException { - - if (caracteristicsById == null) { - List<Caracteristic> caracteristics = persistenceService.getAllCaracteristic(); - caracteristicsById = TuttiEntities.splitById(caracteristics); - } - Caracteristic caracteristic = caracteristicsById.get(value); - - if (caracteristic == null) { - throw new ParseException("Could not found a caracteristic with id " + value, 0); - } - return caracteristic; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java deleted file mode 100644 index 5ff567a..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import org.nuiton.csv.Common; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.csv.ValueParserFormatter; - -import java.io.Serializable; - -/** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public class CaracteristicValueFormatter implements ValueFormatter<Serializable> { - - ValueParserFormatter<Integer> integerDelegate = Common.INTEGER; - - ValueParserFormatter<Float> floatDelegate = Common.FLOAT; - - ValueParserFormatter<String> textDelegate = Common.STRING; - - @Override - public String format(Serializable value) { - if (value == null) { - return "NA"; - } - if (value instanceof Float) { - return floatDelegate.format((Float) value); - } - if (value instanceof Integer) { - return integerDelegate.format((Integer) value); - } - if (value instanceof String) { - return textDelegate.format((String) value); - } - // qualitive value - CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value; - String result = qv.getDescription(); // description contaisn name - description from db - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java new file mode 100644 index 0000000..e3edc75 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java @@ -0,0 +1,114 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristics; +import org.nuiton.csv.Common; +import org.nuiton.csv.ValueParserFormatter; + +import java.io.Serializable; +import java.text.ParseException; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CaracteristicValueParserFormatter implements ValueParserFormatter<Serializable> { + + public static CaracteristicValueParserFormatter newFormatter() { + return new CaracteristicValueParserFormatter(false, null); + } + + public static CaracteristicValueParserFormatter newTechnicalFormatter() { + return new CaracteristicValueParserFormatter(true, null); + } + + public static CaracteristicValueParserFormatter newParser(Caracteristic caracteristic) { + return new CaracteristicValueParserFormatter(true, caracteristic); + } + + private final boolean technical; + + private final Caracteristic caracteristic; + + private final ValueParserFormatter<Integer> integerDelegate; + + private final ValueParserFormatter<Float> floatDelegate; + + private final ValueParserFormatter<String> textDelegate; + + protected CaracteristicValueParserFormatter(boolean technical, Caracteristic caracteristic) { + this.technical = technical; + this.caracteristic = caracteristic; + this.integerDelegate = Common.INTEGER; + this.floatDelegate = Common.FLOAT; + this.textDelegate = Common.STRING; + } + + @Override + public Serializable parse(String value) throws ParseException { + + Serializable result; + + if ("NA".equals(value)) { + + result = null; + + } else if (Caracteristics.isNumberCaracteristic(caracteristic)) { + + result = floatDelegate.parse(value); + + } else if (Caracteristics.isTextCaracteristic(caracteristic)) { + + result = value; + + } else { + + result = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value); + + } + + return result; + + } + + @Override + public String format(Serializable e) { + + String value; + + if (e == null) { + + value = "NA"; + + } else { + + if (e instanceof Float) { + + value = floatDelegate.format((Float) e); + + } else if (e instanceof Integer) { + + value = integerDelegate.format((Integer) e); + + } else if (e instanceof String) { + + value = textDelegate.format((String) e); + + } else { + + CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) e; + value = technical ? qv.getId() : qv.getDescription(); + + } + + } + + return value; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java deleted file mode 100644 index 69d71bf..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import org.nuiton.csv.Common; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.csv.ValueParserFormatter; - -import java.io.Serializable; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicValueTechnicalFormatter implements ValueFormatter<Serializable> { - - ValueParserFormatter<Integer> integerDelegate = Common.INTEGER; - - ValueParserFormatter<Float> floatDelegate = Common.FLOAT; - - ValueParserFormatter<String> textDelegate = Common.STRING; - - @Override - public String format(Serializable value) { - if (value == null) { - return "NA"; - } - if (value instanceof Float) { - return floatDelegate.format((Float) value); - } - if (value instanceof Integer) { - return integerDelegate.format((Integer) value); - } - if (value instanceof String) { - return textDelegate.format((String) value); - } - // qualitive value - CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value; - String result = qv.getId(); - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java deleted file mode 100644 index bfcdd3c..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristics; -import org.nuiton.csv.Common; -import org.nuiton.csv.ValueParser; -import org.nuiton.csv.ValueParserFormatter; - -import java.io.Serializable; -import java.text.ParseException; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicValueTechnicalParser implements ValueParser<Serializable> { - - private final Caracteristic caracteristic; - - ValueParserFormatter<Float> floatDelegate = Common.FLOAT; - - ValueParserFormatter<String> textDelegate = Common.STRING; - - public CaracteristicValueTechnicalParser(Caracteristic caracteristic) { - this.caracteristic = caracteristic; - } - - @Override - public Serializable parse(String value) throws ParseException { - - Serializable result; - - if ("NA".equals(value)) { - - result = null; - - } else if (Caracteristics.isNumberCaracteristic(caracteristic)) { - - result = floatDelegate.parse(value); - - } else if (Caracteristics.isTextCaracteristic(caracteristic)) { - - result = value; - - } else { - - // qualitative value - result = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value); - - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java index d7196c5..6b10808 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java @@ -34,7 +34,7 @@ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O> throw new ApplicationTechnicalException("file not found " + file, e); } - this.export = TuttiCsvUtil.newRepeatableExport(model); + this.export = new TuttiRepeatableExport<>(model); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java deleted file mode 100644 index 536cf39..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import org.nuiton.csv.ImportRuntimeException; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.decorator.Decorator; - -import static org.nuiton.i18n.I18n.t; - -/** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public class DecoratorPropertyFormatter<E> implements ValueFormatter<E> { - - protected final String defaultNullValue; - - protected Decorator<E> decorator; - - public DecoratorPropertyFormatter(Decorator<E> decorator, String defaultNullValue) { - this.decorator = decorator; - this.defaultNullValue = defaultNullValue; - } - - @Override - public String format(E value) { - if (value == null) { - return defaultNullValue; - } - try { - return decorator.toString(value); - } catch (Exception e) { - throw new ImportRuntimeException(t("tutti.service.cvs.format.error", value), e); - } - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java new file mode 100644 index 0000000..14b80d9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java @@ -0,0 +1,52 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Joiner; +import fr.ifremer.tutti.persistence.entities.TuttiEntity; +import org.nuiton.csv.ValueParserFormatter; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public abstract class EntityListParserFormatterSupport<E extends TuttiEntity> implements ValueParserFormatter<List<E>> { + + private final EntityParserFormatterSupport<E> delegateParserFormatter; + + protected EntityListParserFormatterSupport(EntityParserFormatterSupport<E> delegateParserFormatter) { + this.delegateParserFormatter = delegateParserFormatter; + } + + @Override + public List<E> parse(String value) throws ParseException { + + List<E> list = new ArrayList<>(); + String[] ids = value.split("|"); + for (String id : ids) { + + E entity = delegateParserFormatter.parse(id); + list.add(entity); + + } + + return list; + + } + + @Override + public String format(List<E> entities) { + + List<String> ids = new ArrayList<>(); + for (E entity : entities) { + String id = delegateParserFormatter.format(entity); + ids.add(id); + } + return Joiner.on('|').join(ids); + + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java new file mode 100644 index 0000000..7e7d294 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java @@ -0,0 +1,39 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntity; +import org.nuiton.csv.ImportRuntimeException; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class EntityNotFoundException extends ImportRuntimeException { + + private static final long serialVersionUID = -1039504487290085439L; + + private final Class<? extends TuttiEntity> entityType; + + private final String id; + + public EntityNotFoundException(Class<? extends TuttiEntity> entityType, String id) { + this.entityType = entityType; + this.id = id; + } + + public Class<? extends TuttiEntity> getEntityType() { + return entityType; + } + + public String getId() { + return id; + } + + @Override + public String getMessage() { + return t("tutti.service.csv.parse.foreignEntityNotFound", entityType, id); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java new file mode 100644 index 0000000..4a17fbe --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java @@ -0,0 +1,86 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.TuttiEntity; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ValueParserFormatter; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implements ValueParserFormatter<E> { + + protected final boolean technical; + + protected final Class<E> entityType; + + protected Map<String, E> entitiesById; + + protected EntityParserFormatterSupport(boolean technical, Class<E> entityType) { + this.technical = technical; + this.entityType = entityType; + } + + protected abstract List<E> getEntities(); + + protected abstract String formatBusiness(E e); + + protected Map<String, E> getEntitiesById() { + + if (entitiesById == null) { + + List<E> entities = getEntities(); + entitiesById = TuttiEntities.splitById(entities); + + } + return entitiesById; + + } + + @Override + public E parse(String value) throws ParseException { + + E result = null; + if (StringUtils.isNotBlank(value)) { + + // get entity from universe + result = getEntitiesById().get(value); + + if (result == null) { + + throw new EntityNotFoundException(entityType, value); + + } + } + return result; + + } + + @Override + public String format(E e) { + String value = ""; + if (e != null) { + + if (technical) { + value = formatTechnical(e); + } else { + value = formatBusiness(e); + } + + } + return value; + } + + protected String formatTechnical(E e) { + String value; + value = e.getId(); + return value; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java deleted file mode 100644 index f590a25..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationLocationFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java new file mode 100644 index 0000000..3a55bb9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationLocationParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + public static FishingOperationLocationParserFormatter newFormatter() { + return new FishingOperationLocationParserFormatter(false, null, null); + } + + public static FishingOperationLocationParserFormatter newTechnicalFormatter() { + return new FishingOperationLocationParserFormatter(true, null, null); + } + + public static FishingOperationLocationParserFormatter newParser(PersistenceService persistenceService, String zoneId) { + return new FishingOperationLocationParserFormatter(true, persistenceService, zoneId); + } + + private final String zoneId; + + private final PersistenceService persistenceService; + + protected FishingOperationLocationParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { + super(technical, TuttiLocation.class); + this.zoneId = zoneId; + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllFishingOperationLocation(zoneId, null, null); + } + + @Override + protected String formatBusiness(TuttiLocation value) { + return TuttiLocations.GET_NAME.apply(value); + } + + @Override + public String format(TuttiLocation value) { + + String format; + if (!technical && value == null) { + format = "NA"; + } else { + format = super.format(value); + } + return format; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java deleted file mode 100644 index fd2c9dd..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationLocationTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java deleted file mode 100644 index 2b65ad5..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationLocationTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private final String zoneId; - - private Map<String, TuttiLocation> locationsByLabel; - - public FishingOperationLocationTechnicalParser(PersistenceService persistenceService, String zoneId) { - this.persistenceService = persistenceService; - this.zoneId = zoneId; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByLabel == null) { - List<TuttiLocation> locations = persistenceService.getAllFishingOperationLocation(zoneId, null, null); - locationsByLabel = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location; - if ("".equals(value)) { - - location = null; - - } else { - - location = locationsByLabel.get(value); - - if (location == null) { - throw new ParseException("Could not found a fishing operation location with label " + value, 0); - } - - } - - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java deleted file mode 100644 index 50deedb..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationStrataFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java new file mode 100644 index 0000000..2b66085 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationStrataParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + public static FishingOperationStrataParserFormatter newFormatter() { + return new FishingOperationStrataParserFormatter(false,null, null); + } + + public static FishingOperationStrataParserFormatter newTechnicalFormatter() { + return new FishingOperationStrataParserFormatter(true,null, null); + } + + public static FishingOperationStrataParserFormatter newParser(PersistenceService persistenceService, String zoneId) { + return new FishingOperationStrataParserFormatter(true,persistenceService, zoneId); + } + + private final String zoneId; + + private final PersistenceService persistenceService; + + protected FishingOperationStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { + super(technical, TuttiLocation.class); + this.zoneId = zoneId; + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllFishingOperationStrata(zoneId); + } + + @Override + protected String formatBusiness(TuttiLocation value) { + return TuttiLocations.GET_NAME.apply(value); + } + + @Override + public String format(TuttiLocation value) { + + String format; + if (!technical && value == null) { + format = "NA"; + } else { + format = super.format(value); + } + return format; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java deleted file mode 100644 index 078ae70..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationStrataTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java deleted file mode 100644 index 0d3fcef..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationStrataTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private final String zoneId; - - private Map<String, TuttiLocation> locationsByLabel; - - public FishingOperationStrataTechnicalParser(PersistenceService persistenceService, String zoneId) { - this.persistenceService = persistenceService; - this.zoneId = zoneId; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByLabel == null) { - List<TuttiLocation> locations = persistenceService.getAllFishingOperationStrata(zoneId); - locationsByLabel = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location; - if ("".equals(value)) { - - location = null; - - } else { - - location = locationsByLabel.get(value); - - if (location == null) { - throw new ParseException("Could not found a fishing operation stata with label " + value, 0); - } - - } - - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java deleted file mode 100644 index 4eb6fb1..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationSubStrataFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java new file mode 100644 index 0000000..5135d94 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationSubStrataParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + public static FishingOperationSubStrataParserFormatter newFormatter() { + return new FishingOperationSubStrataParserFormatter(false, null, null); + } + + public static FishingOperationSubStrataParserFormatter newTechnicalFormatter() { + return new FishingOperationSubStrataParserFormatter(true, null, null); + } + + public static FishingOperationSubStrataParserFormatter newParser(PersistenceService persistenceService, String zoneId) { + return new FishingOperationSubStrataParserFormatter(true, persistenceService, zoneId); + } + + private final String zoneId; + + private final PersistenceService persistenceService; + + protected FishingOperationSubStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { + super(technical, TuttiLocation.class); + this.zoneId = zoneId; + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllFishingOperationSubStrata(zoneId, null); + } + + @Override + protected String formatBusiness(TuttiLocation value) { + return TuttiLocations.GET_NAME.apply(value); + } + + @Override + public String format(TuttiLocation value) { + + String format; + if (!technical && value == null) { + format = "NA"; + } else { + format = super.format(value); + } + return format; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java deleted file mode 100644 index 9e0b399..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationSubStrataTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java deleted file mode 100644 index 03d4f90..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationSubStrataTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private final String zoneId; - - private Map<String, TuttiLocation> locationsByLabel; - - public FishingOperationSubStrataTechnicalParser(PersistenceService persistenceService, String zoneId) { - this.persistenceService = persistenceService; - this.zoneId = zoneId; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByLabel == null) { - List<TuttiLocation> locations = persistenceService.getAllFishingOperationSubStrata(zoneId, null); - locationsByLabel = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location; - if ("".equals(value)) { - - location = null; - - } else { - - location = locationsByLabel.get(value); - - if (location == null) { - throw new ParseException("Could not found a fishing operation subStata with label " + value, 0); - } - - } - - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java deleted file mode 100644 index 7b8a06e..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GearFormatter implements ValueFormatter<Gear> { - - @Override - public String format(Gear value) { - String result = ""; - if (value != null) { - result = Gears.GET_NAME.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java new file mode 100644 index 0000000..4de0f60 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java @@ -0,0 +1,48 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GearParserFormatter extends EntityParserFormatterSupport<Gear> { + + public static GearParserFormatter newFormatter() { + return new GearParserFormatter(false, null); + } + + public static GearParserFormatter newTechnicalFormatter() { + return new GearParserFormatter(true, null); + } + + public static GearParserFormatter newParser(PersistenceService persistenceService) { + return new GearParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected GearParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Gear.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Gear> getEntities() { + return persistenceService.getAllGear(); + } + + @Override + protected String formatBusiness(Gear value) { + + String result = Gears.GET_NAME.apply(value); + return result; + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java deleted file mode 100644 index 5c152d2..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GearTechnicalFormatter implements ValueFormatter<Gear> { - - @Override - public String format(Gear value) { - String result = ""; - if (value != null) { - result = TuttiEntities.GET_ID.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java deleted file mode 100644 index 2b91dae..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java +++ /dev/null @@ -1,46 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GearTechnicalParser implements ValueParser<Gear> { - - private final PersistenceService persistenceService; - - private Map<String, Gear> gearsById; - - private boolean mandatory; - - public GearTechnicalParser(PersistenceService persistenceService, boolean mandatory) { - this.persistenceService = persistenceService; - this.mandatory = mandatory; - } - - @Override - public Gear parse(String value) throws ParseException { - - if (gearsById == null) { - List<Gear> gears = persistenceService.getAllGear(); - gearsById = TuttiEntities.splitById(gears); - } - Gear gear = gearsById.get(value); - - if (gear == null && mandatory) { - throw new ParseException("Could not found a gear with id " + value, 0); - } - return gear; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java deleted file mode 100644 index b2c2391..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since XXX - */ -public class HarbourFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - String result = ""; - if (value != null) { - result = TuttiLocations.GET_NAME.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java new file mode 100644 index 0000000..c3f124f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java @@ -0,0 +1,48 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class HarbourParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + + public static HarbourParserFormatter newFormatter() { + return new HarbourParserFormatter(false,null); + } + public static HarbourParserFormatter newTechnicalFormatter() { + return new HarbourParserFormatter(true,null); + } + + public static HarbourParserFormatter newParser(PersistenceService persistenceService) { + return new HarbourParserFormatter(true,persistenceService); + } + + private final PersistenceService persistenceService; + + protected HarbourParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, TuttiLocation.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllHarbour(); + } + + @Override + public String formatBusiness(TuttiLocation value) { + + String result = TuttiLocations.GET_NAME.apply(value); + return result; + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java deleted file mode 100644 index 413c83b..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since XXX - */ -public class HarbourTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - String result = ""; - if (value != null) { - result = TuttiLocations.GET_LABEL.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java deleted file mode 100644 index 77b1230..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class HarbourTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private Map<String, TuttiLocation> locationsByName; - - public HarbourTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByName == null) { - List<TuttiLocation> locations = persistenceService.getAllHarbour(); - locationsByName = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location = locationsByName.get(value); - - if (location == null) { - throw new ParseException("Could not found a harbour with label " + value, 0); - } - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java deleted file mode 100644 index 086a7f5..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListPersonFormatter implements ValueFormatter<List<Person>> { - - @Override - public String format(List<Person> value) { - List<String> fullNames = Lists.transform(value, Persons.GET_FULL_NAME); - return Joiner.on('|').join(fullNames); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java deleted file mode 100644 index 552ff69..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListPersonTechnicalFormatter implements ValueFormatter<List<Person>> { - - @Override - public String format(List<Person> value) { - List<String> ids = Lists.transform(value, TuttiEntities.newIdFunction()); - return Joiner.on('|').join(ids); - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java deleted file mode 100644 index b097fc1..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListPersonTechnicalParser implements ValueParser<List<Person>> { - - private final PersistenceService persistenceService; - - private Map<String, Person> personsById; - - public ListPersonTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public List<Person> parse(String value) throws ParseException { - - if (personsById == null) { - List<Person> allPerson = persistenceService.getAllPerson(); - personsById = TuttiEntities.splitById(allPerson); - } - - List<Person> persons = new ArrayList<>(); - String[] ids = value.split("|"); - for (String id : ids) { - Person person = personsById.get(id); - - if (person == null) { - throw new ParseException("Could not found a person with id " + value, 0); - } - persons.add(person); - } - - return persons; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java deleted file mode 100644 index 2cd846b..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListVesselFormatter implements ValueFormatter<List<Vessel>> { - - @Override - public String format(List<Vessel> value) { - List<String> codes = Lists.transform(value, Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE); - return Joiner.on('|').join(codes); - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java deleted file mode 100644 index 55c5e3f..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListVesselTechnicalFormatter implements ValueFormatter<List<Vessel>> { - - @Override - public String format(List<Vessel> value) { - List<String> codes = Lists.transform(value, TuttiEntities.GET_ID); - return Joiner.on('|').join(codes); - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java deleted file mode 100644 index f2224cf..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListVesselTechnicalParser implements ValueParser<List<Vessel>> { - - private final PersistenceService persistenceService; - - private Map<String, Vessel> vesselsById; - - public ListVesselTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public List<Vessel> parse(String value) throws ParseException { - - if (vesselsById == null) { - List<Vessel> allVessels = persistenceService.getAllVessel(); - vesselsById = Vessels.splitByRegistrationCode(allVessels); - } - - List<Vessel> vessels = new ArrayList<>(); - String[] immatriculations = value.split("|"); - for (String immatriculation : immatriculations) { - - Vessel vessel = vesselsById.get(immatriculation); - - if (vessel == null) { - throw new ParseException("Could not found a vessel with code " + value, 0); - } - vessels.add(vessel); - } - - return vessels; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java new file mode 100644 index 0000000..eaa1470 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Person; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class PersonListParserFormatter extends EntityListParserFormatterSupport<Person> { + + public static PersonListParserFormatter newFormatter() { + return new PersonListParserFormatter(null); + } + + public static PersonListParserFormatter newParser(PersonParserFormatter delegateParserFormatter) { + return new PersonListParserFormatter(delegateParserFormatter); + } + + protected PersonListParserFormatter(PersonParserFormatter delegateParserFormatter) { + super(delegateParserFormatter); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java new file mode 100644 index 0000000..e634a36 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java @@ -0,0 +1,45 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Persons; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class PersonParserFormatter extends EntityParserFormatterSupport<Person> { + + public static PersonParserFormatter newFormatter() { + return new PersonParserFormatter(false,null); + } + + public static PersonParserFormatter newTechnicalFormatter() { + return new PersonParserFormatter(true,null); + } + + public static PersonParserFormatter newParser(PersistenceService persistenceService) { + return new PersonParserFormatter(true,persistenceService); + } + + private final PersistenceService persistenceService; + + protected PersonParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Person.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Person> getEntities() { + return persistenceService.getAllPerson(); + } + + @Override + protected String formatBusiness(Person person) { + return Persons.GET_FULL_NAME.apply(person); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java new file mode 100644 index 0000000..efcc029 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java @@ -0,0 +1,65 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; +import java.util.Map; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species> { + + public static SpeciesParserFormatter newFormatter() { + return new SpeciesParserFormatter(false, null); + } + + public static SpeciesParserFormatter newTechnicalFormatter() { + return new SpeciesParserFormatter(true, null); + } + + public static SpeciesParserFormatter newParser(PersistenceService persistenceService) { + return new SpeciesParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected SpeciesParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Species.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Species> getEntities() { + return persistenceService.getAllSpecies(); + } + + protected Map<String, Species> getEntitiesById() { + if (entitiesById == null) { + + List<Species> entities = getEntities(); + entitiesById = Speciess.splitReferenceSpeciesByReferenceTaxonId(entities); + + } + return entitiesById; + } + + @Override + public String format(Species value) { + String result = ""; + if (value != null) { + result = Speciess.GET_REFERECE_TAXON_ID.apply(value); + } + return result; + } + + @Override + protected String formatBusiness(Species species) { + return species.getName(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java deleted file mode 100644 index 75626ee..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class SpeciesTechnicalFormatter implements ValueFormatter<Species> { - - @Override - public String format(Species value) { - String result = ""; - if (value != null) { - result = Speciess.GET_REFERECE_TAXON_ID.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java deleted file mode 100644 index c54a9b0..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class SpeciesTechnicalParser implements ValueParser<Species> { - - private final PersistenceService persistenceService; - - private Map<String, Species> speciesByReferenceTaxonId; - - public SpeciesTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Species parse(String value) throws ParseException { - - if (speciesByReferenceTaxonId == null) { - List<Species> referentSpecies = persistenceService.getAllReferentSpecies(); - speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); - } - Species species = speciesByReferenceTaxonId.get(value); - - if (species == null) { - throw new ParseException("Could not found a referent species with referenceTaxonId " + value, 0); - } - return species; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 36ee9dc..06f1da8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.csv; * #L% */ -import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -32,21 +31,14 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.util.Weights; -import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Common; -import org.nuiton.csv.ExportModel; -import org.nuiton.csv.ImportRow; -import org.nuiton.csv.ImportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParserFormatter; -import org.nuiton.decorator.Decorator; import java.io.Serializable; import java.text.ParseException; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -107,42 +99,6 @@ public class TuttiCsvUtil extends Common { } }; - public static ValueParserFormatter<Short> SHORT = new ShortParserFormatter(null, true); - - public static <E> void addCheckError(ImportRow<E> row, Throwable cause) { - - CheckImportErrorInfo<E> eCheckImportErrorInfo = new CheckImportErrorInfo<>(row, null, cause); - row.addError(eCheckImportErrorInfo); - - } - - public static class ShortParserFormatter extends NullableParserFormatter<Short> { - - public ShortParserFormatter(Short defaultValue, boolean nullAllowed) { - super(defaultValue, nullAllowed); - } - - @Override - public String format(Short value) { - String str = ""; - if (value != null) { - str = String.valueOf(value); - } - return str; - } - - @Override - protected Short parseNoneEmptyValue(String value) { - Float aFloat = Float.valueOf(value); - if (aFloat > Short.MAX_VALUE) { - // too big - throw new IllegalArgumentException(value + " is too big to be an short, should be a integer."); - } - return aFloat.shortValue(); - } - } - - public static final ValueParserFormatter<String> COMMENT_PARSER_FORMATTER = new ValueParserFormatter<String>() { @Override @@ -156,13 +112,13 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueFormatter<Species> SPECIES_NAME_FORMATTER = new ValueFormatter<Species>() { - @Override - public String format(Species s) { - Preconditions.checkNotNull(s, t("tutti.service.error.species.null")); - return s.getName(); - } - }; +// public static final ValueFormatter<Species> SPECIES_NAME_FORMATTER = new ValueFormatter<Species>() { +// @Override +// public String format(Species s) { +// Preconditions.checkNotNull(s, t("tutti.service.error.species.null")); +// return s.getName(); +// } +// }; public static final ValueFormatter<Species> SPECIES_SURVEY_CODE_FORMATTER = new ValueFormatter<Species>() { @Override @@ -200,96 +156,67 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueParserFormatter<Date> YEAR = new DateValue("yyyy"); - public static final ValueParserFormatter<Date> TIME = new DateValue("HH:mm"); - public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = new CaracteristicTechnicalFormatter(); + public static final ValueFormatter<Caracteristic> CARACTERISTIC_FORMATTER = CaracteristicParserFormatter.newFormatter(); - public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = new CaracteristicValueFormatter(); + public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = CaracteristicParserFormatter.newTechnicalFormatter(); - public static ValueFormatter<Serializable> CARACTERISTIC_VALUE_TECHNICAL_FORMATTER = new CaracteristicValueTechnicalFormatter(); + public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = CaracteristicValueParserFormatter.newFormatter(); + + public static ValueFormatter<Serializable> CARACTERISTIC_VALUE_TECHNICAL_FORMATTER = CaracteristicValueParserFormatter.newTechnicalFormatter(); public static final ValueFormatter<Program> PROGRAM_FORMATTER = new ProgramFormatter(); - public static final ValueFormatter<Gear> GEAR_FORMATTER = new GearFormatter(); + public static final ValueFormatter<Gear> GEAR_FORMATTER = GearParserFormatter.newFormatter(); - public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = new GearTechnicalFormatter(); + public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = GearParserFormatter.newTechnicalFormatter(); public static final ValueFormatter<TuttiLocation> COUNTRY_FORMATTER = new CountryFormatter(); public static final ValueFormatter<TuttiLocation> PROGRAM_ZONE_FORMATTER = new ProgramZoneFormatter(); - public static final ValueFormatter<TuttiLocation> HARBOUR_FORMATTER = new HarbourFormatter(); + public static final ValueFormatter<TuttiLocation> HARBOUR_FORMATTER = HarbourParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> HARBOUR_TECHNICAL_FORMATTER = new HarbourTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> HARBOUR_TECHNICAL_FORMATTER = HarbourParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_FORMATTER = new FishingOperationStrataFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_FORMATTER = FishingOperationStrataParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER = new FishingOperationStrataTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER = FishingOperationStrataParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_FORMATTER = new FishingOperationSubStrataFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_FORMATTER = FishingOperationSubStrataParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER = new FishingOperationSubStrataTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER = FishingOperationSubStrataParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_FORMATTER = new FishingOperationLocationFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_FORMATTER = FishingOperationLocationParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER = new FishingOperationLocationTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER = FishingOperationLocationParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<Vessel> VESSEL_TECHNICAL_FORMATTER = new VesselTechnicalFormatter(); + public static final ValueFormatter<Vessel> VESSEL_FORMATTER = VesselParserFormatter.newFormatter(); - public static final ValueFormatter<Vessel> VESSEL_FORMATTER = new VesselFormatter(); + public static final ValueFormatter<Vessel> VESSEL_TECHNICAL_FORMATTER = VesselParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = new SpeciesTechnicalFormatter(); + public static final ValueFormatter<Species> SPECIES_FORMATTER = SpeciesParserFormatter.newFormatter(); - public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = new ListPersonFormatter(); + public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = SpeciesParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = new ListPersonTechnicalFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = PersonListParserFormatter.newFormatter(); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = new ListVesselFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = PersonListParserFormatter.newFormatter(); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = new ListVesselTechnicalFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = VesselListParserFormatter.newFormatter(); - public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = VesselListParserFormatter.newFormatter(); - public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName, String defaultNullValue) { - return new BeanPropertyFormatter<E>(propertyName, defaultNullValue); - } - - public static <E> DecoratorPropertyFormatter<E> newDecoratorFormatter(Decorator<E> decorator, String defaultNullValue) { - return new DecoratorPropertyFormatter<E>(decorator, defaultNullValue); - } - - public static <E> TuttiRepeatableExport<E> newRepeatableExport(ExportModel<E> model) { - return new TuttiRepeatableExport<E>(model); - } + public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); public static <E extends Enum<E>> ValueParserFormatter<E> newEnumByNameParserFormatter(Class<E> enumType, boolean mandatory) { return new fr.ifremer.tutti.service.csv.EnumByNameParserFormatter<E>(enumType, mandatory); } - public static <O> String rowErrorsToExceptionMessage(ImportRow<O> bean) { - - Set<String> errors = new HashSet<>(); - for (AbstractImportErrorInfo<O> errorInfo : bean.getErrors()) { - errors.add(t("tutti.csv.import.error.on.field", errorInfo.getField().getHeaderName(), errorInfo.getCause().getMessage())); - } - - String message = t("tutti.csv.import.error.on.row", bean.getLineNumber(), Joiner.on("\n").join(errors)); - return message; - - } - protected TuttiCsvUtil() { // no instance } - public static class CheckImportErrorInfo<E> extends AbstractImportErrorInfo<E> { - - public CheckImportErrorInfo(ImportRow<E> row, ImportableColumn<E, Object> field, Throwable cause) { - super(row, field, cause); - } - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java deleted file mode 100644 index 43cf7e2..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselFormatter implements ValueFormatter<Vessel> { - - @Override - public String format(Vessel value) { - String result = ""; - if (value != null) { - result = Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE.apply(value); - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java new file mode 100644 index 0000000..729dd22 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Vessel; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class VesselListParserFormatter extends EntityListParserFormatterSupport<Vessel> { + + public static VesselListParserFormatter newFormatter() { + return new VesselListParserFormatter(null); + } + + public static VesselListParserFormatter newParser(VesselParserFormatter delegateParserFormatter) { + return new VesselListParserFormatter(delegateParserFormatter); + } + + protected VesselListParserFormatter(VesselParserFormatter delegateParserFormatter) { + super(delegateParserFormatter); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java new file mode 100644 index 0000000..56de011 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class VesselParserFormatter extends EntityParserFormatterSupport<Vessel> { + + public static VesselParserFormatter newFormatter() { + return new VesselParserFormatter(false, null); + } + + public static VesselParserFormatter newTechnicalFormatter() { + return new VesselParserFormatter(true, null); + } + + public static VesselParserFormatter newParser(PersistenceService persistenceService) { + return new VesselParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected VesselParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Vessel.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Vessel> getEntities() { + return persistenceService.getAllVessel(); + } + + @Override + public String formatBusiness(Vessel value) { + + String result = Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE.apply(value); + return result; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java deleted file mode 100644 index 0748353..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselTechnicalFormatter implements ValueFormatter<Vessel> { - - @Override - public String format(Vessel value) { - String result = ""; - if (value != null) { - result = TuttiEntities.GET_ID.apply(value); - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java deleted file mode 100644 index 4a95d47..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselTechnicalParser implements ValueParser<Vessel> { - - private final PersistenceService persistenceService; - - private Map<String, Vessel> vesselsById; - - public VesselTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Vessel parse(String value) throws ParseException { - - if (vesselsById == null) { - List<Vessel> allVessels = persistenceService.getAllVessel(); - vesselsById = TuttiEntities.splitById(allVessels); - } - Vessel vessel = vesselsById.get(value); - - if (vessel == null) { - throw new ParseException("Could not found a vessel with code " + value, 0); - } - return vessel; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java index a2001f6..7d6c5db 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java @@ -41,7 +41,7 @@ public class CatchRowModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport(t("tutti.service.exportSumatra.header.year"), CatchRow.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.YEAR); newColumnForExport(t("tutti.service.exportSumatra.header.station"), CatchRow.PROPERTY_STATION_NUMBER); newColumnForExport(t("tutti.service.exportSumatra.header.multirigAggregation"), CatchRow.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport(t("tutti.service.exportSumatra.header.genuisSpecies"), CatchRow.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport(t("tutti.service.exportSumatra.header.genuisSpecies"), CatchRow.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport(t("tutti.service.exportSumatra.header.surveySpecies"), CatchRow.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); newColumnForExport(t("tutti.service.exportSumatra.header.sign"), CatchRow.PROPERTY_SIGN); newColumnForExport(t("tutti.service.exportSumatra.header.sortedWeight"), CatchRow.PROPERTY_SORTED_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 0dbdb3d..31c22b3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -315,7 +315,6 @@ public class GenericFormatExportService extends AbstractTuttiService { ';', persistenceService, weightComputingService, - decoratorService, context.getSampleCategoryModel()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java index dc59950..0d77a89 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -7,7 +7,6 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.catches.WeightComputingService; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; @@ -101,7 +100,6 @@ public class GlobalExportContext implements Closeable { char csvSeparator, PersistenceService persistenceService, WeightComputingService weightComputingService, - DecoratorService decoratorService, SampleCategoryModel sampleCategoryModel) { this.archive = archive; @@ -120,13 +118,13 @@ public class GlobalExportContext implements Closeable { Map<String, Species> speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); this.producerForSurvey = new CsvProducerForSurvey(archive.getSurveyPath(), SurveyModel.forExport(csvSeparator)); - this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(archive.getGearCaracteristicsPath(), GearCaracteristicModel.forExport(csvSeparator, decoratorService)); + this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(archive.getGearCaracteristicsPath(), GearCaracteristicModel.forExport(csvSeparator)); this.producerForOperation = new CsvProducerForOperation(archive.getOperationPath(), OperationModel.forExport(csvSeparator)); this.producerForIndividualObservation = new CsvProducerForIndividualObservation(archive.getIndividualObservationPath(), IndividualObservationModel.forExport(csvSeparator)); this.producerForSpecies = new CsvProducerForSpecies(archive.getSpeciesPath(), SpeciesExportModel.forExport(csvSeparator), speciesByReferenceTaxonId); - this.producerForCatch = new CsvProducerForCatch(archive.getCatchPath(), CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); + this.producerForCatch = new CsvProducerForCatch(archive.getCatchPath(), CatchModel.forExport(csvSeparator, sampleCategoryModel)); this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(archive.getAccidentalCatchPath(), AccidentalCatchModel.forExport(csvSeparator)); - this.producerForParameter = new CsvProducerForParameter(archive.getParameterPath(), ParameterModel.forExport(csvSeparator, decoratorService)); + this.producerForParameter = new CsvProducerForParameter(archive.getParameterPath(), ParameterModel.forExport(csvSeparator)); this.producerForMarineLitter = new CsvProducerForMarineLitter(archive.getMarineLitterPath(), MarineLitterModel.forExport(csvSeparator)); this.producerForSampleCategory = new CsvProducerForSampleCategory(archive.getSampleCategoryModelPath(), fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel.forExport(csvSeparator)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index 34e1c98..f39eef3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -7,17 +7,18 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; -import fr.ifremer.tutti.service.csv.FishingOperationLocationTechnicalParser; -import fr.ifremer.tutti.service.csv.FishingOperationStrataTechnicalParser; -import fr.ifremer.tutti.service.csv.FishingOperationSubStrataTechnicalParser; -import fr.ifremer.tutti.service.csv.GearTechnicalParser; -import fr.ifremer.tutti.service.csv.HarbourTechnicalParser; -import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser; -import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser; -import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser; -import fr.ifremer.tutti.service.csv.VesselTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; +import fr.ifremer.tutti.service.csv.GearParserFormatter; +import fr.ifremer.tutti.service.csv.HarbourParserFormatter; +import fr.ifremer.tutti.service.csv.PersonListParserFormatter; +import fr.ifremer.tutti.service.csv.PersonParserFormatter; +import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; +import fr.ifremer.tutti.service.csv.VesselListParserFormatter; +import fr.ifremer.tutti.service.csv.VesselParserFormatter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; @@ -47,31 +48,29 @@ import java.util.Set; */ public class GlobalImportContext implements Closeable { - private final VesselTechnicalParser vesselParser; + private final VesselParserFormatter vesselParser; - private final HarbourTechnicalParser harbourParser; + private final HarbourParserFormatter harbourParser; - private final GearTechnicalParser mandatoryGearParser; + private final GearParserFormatter mandatoryGearParser; - private final GearTechnicalParser optionalGearParser; + private final PersonListParserFormatter listPersonParser; - private final ListPersonTechnicalParser listPersonParser; + private final CaracteristicParserFormatter caracteristicParser; - private final CaracteristicTechnicalParser caracteristicParser; + private final FishingOperationStrataParserFormatter fishingOperationStrataParser; - private final FishingOperationStrataTechnicalParser fishingOperationStrataParser; + private final FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; - private final FishingOperationSubStrataTechnicalParser fishingOperationSubStrataParser; + private final FishingOperationLocationParserFormatter fishingOperationLocationParser; - private final FishingOperationLocationTechnicalParser fishingOperationLocationParser; + private final VesselListParserFormatter listVesselParser; - private final ListVesselTechnicalParser listVesselParser; + private final SpeciesParserFormatter speciesParser; - private final SpeciesTechnicalParser speciesParser; + private final CaracteristicValueParserFormatter marineLitterCategoryValueParser; - private final CaracteristicValueTechnicalParser marineLitterCategoryValueParser; - - private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser; + private final CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; private final GenericFormatArchive archive; @@ -91,19 +90,18 @@ public class GlobalImportContext implements Closeable { this.archive = archive; this.csvSeparator = csvSeparator; this.sampleCategoryModel = sampleCategoryModel; - this.vesselParser = new VesselTechnicalParser(persistenceService); - this.harbourParser = new HarbourTechnicalParser(persistenceService); - this.listPersonParser = new ListPersonTechnicalParser(persistenceService); - this.mandatoryGearParser = new GearTechnicalParser(persistenceService, true); - this.optionalGearParser = new GearTechnicalParser(persistenceService, false); - this.caracteristicParser = new CaracteristicTechnicalParser(persistenceService); - this.fishingOperationStrataParser = new FishingOperationStrataTechnicalParser(persistenceService, program.getZone().getId()); - this.fishingOperationSubStrataParser = new FishingOperationSubStrataTechnicalParser(persistenceService, program.getZone().getId()); - this.fishingOperationLocationParser = new FishingOperationLocationTechnicalParser(persistenceService, program.getZone().getId()); - this.listVesselParser = new ListVesselTechnicalParser(persistenceService); - this.speciesParser = new SpeciesTechnicalParser(persistenceService); - this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic()); - this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); + this.vesselParser = VesselParserFormatter.newParser(persistenceService); + this.harbourParser = HarbourParserFormatter.newParser(persistenceService); + this.listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); + this.mandatoryGearParser = GearParserFormatter.newParser(persistenceService); + this.caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); + this.fishingOperationStrataParser = FishingOperationStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + this.fishingOperationSubStrataParser = FishingOperationSubStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + this.fishingOperationLocationParser = FishingOperationLocationParserFormatter.newParser(persistenceService, program.getZone().getId()); + this.listVesselParser = VesselListParserFormatter.newParser(vesselParser); + this.speciesParser = SpeciesParserFormatter.newParser(persistenceService); + this.marineLitterCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterCategoryCaracteristic()); + this.marineLitterSizeCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); this.existingCruises = ImmutableSet.copyOf(allCruise); @@ -123,55 +121,51 @@ public class GlobalImportContext implements Closeable { return archive; } - public VesselTechnicalParser getVesselParser() { + public VesselParserFormatter getVesselParser() { return vesselParser; } - public HarbourTechnicalParser getHarbourParser() { + public HarbourParserFormatter getHarbourParser() { return harbourParser; } - public ListPersonTechnicalParser getListPersonParser() { + public PersonListParserFormatter getListPersonParser() { return listPersonParser; } - public GearTechnicalParser getMandatoryGearParser() { + public GearParserFormatter getGearParser() { return mandatoryGearParser; } - public GearTechnicalParser getOptionalGearParser() { - return optionalGearParser; - } - - public CaracteristicTechnicalParser getCaracteristicParser() { + public CaracteristicParserFormatter getCaracteristicParser() { return caracteristicParser; } - public FishingOperationStrataTechnicalParser getFishingOperationStrataParser() { + public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { return fishingOperationStrataParser; } - public FishingOperationSubStrataTechnicalParser getFishingOperationSubStrataParser() { + public FishingOperationSubStrataParserFormatter getFishingOperationSubStrataParser() { return fishingOperationSubStrataParser; } - public FishingOperationLocationTechnicalParser getFishingOperationLocationParser() { + public FishingOperationLocationParserFormatter getFishingOperationLocationParser() { return fishingOperationLocationParser; } - public ListVesselTechnicalParser getListVesselParser() { + public VesselListParserFormatter getListVesselParser() { return listVesselParser; } - public SpeciesTechnicalParser getSpeciesParser() { + public SpeciesParserFormatter getSpeciesParser() { return speciesParser; } - public CaracteristicValueTechnicalParser getMarineLitterCategoryValueParser() { + public CaracteristicValueParserFormatter getMarineLitterCategoryValueParser() { return marineLitterCategoryValueParser; } - public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() { + public CaracteristicValueParserFormatter getMarineLitterSizeCategoryValueParser() { return marineLitterSizeCategoryValueParser; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index a796968..21a54f9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -27,7 +27,6 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -83,7 +82,7 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newColumnForExport("BatchId", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); - newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newColumnForExport("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("CaracteristicValue", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 1023940..adf34d3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -30,9 +30,8 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import org.apache.commons.beanutils.PropertyUtils; @@ -50,10 +49,10 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { public static final String WEIGHT_OR_VOL_TYPE = "Poids"; - public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel) { CatchModel exportModel = new CatchModel(separator); - exportModel.forExport(sampleCategoryModel, decoratorService); + exportModel.forExport(sampleCategoryModel); return exportModel; } @@ -79,7 +78,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { super(separator); } - protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + protected void forExport(SampleCategoryModel sampleCategoryModel) { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); @@ -93,7 +92,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); - newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); @@ -114,7 +113,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { // mensuration newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newNullableColumnForExport("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); @@ -191,7 +190,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { String headerPrefix = entry.getCode(); - newMandatoryColumn(headerPrefix + "_Id", new CaracteristicValueTechnicalParser(entry.getCaracteristic()), new SampleCategoryValueSetter<Serializable>(entry, ExportSampleCategory.PROPERTY_CATEGORY_VALUE)); + newMandatoryColumn(headerPrefix + "_Id", CaracteristicValueParserFormatter.newParser(entry.getCaracteristic()), new SampleCategoryValueSetter<Serializable>(entry, ExportSampleCategory.PROPERTY_CATEGORY_VALUE)); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index 48019e8..eb2ad54 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -39,10 +37,10 @@ import fr.ifremer.tutti.service.genericformat.GlobalImportContext; */ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearCaracteristicRow> { - public static GearCaracteristicModel forExport(char separator, DecoratorService decoratorService) { + public static GearCaracteristicModel forExport(char separator) { GearCaracteristicModel exportModel = new GearCaracteristicModel(separator); - exportModel.forExport(decoratorService); + exportModel.forExport(); return exportModel; } @@ -69,7 +67,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC super(separator); } - protected void forExport(DecoratorService decoratorService) { + protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); @@ -79,7 +77,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newColumnForExport("EnginRankOrder", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newColumnForExportByDecorator("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newColumnForExport("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); newColumnForExport("Valeur", GearCaracteristicRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); newColumnForExport("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, TuttiCsvUtil.GEAR_TECHNICAL_FORMATTER); @@ -101,7 +99,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); - newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getMandatoryGearParser()); + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getGearParser()); newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index 2f4bc65..bfc9339 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -83,7 +83,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newColumnForExport("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); - newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Nom_Scientifique", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newColumnForExport("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("CaracteristicValue", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index 4743096..4bb2a74 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -25,8 +25,6 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -39,10 +37,10 @@ import fr.ifremer.tutti.service.genericformat.GlobalImportContext; */ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> { - public static ParameterModel forExport(char separator, DecoratorService decoratorService) { + public static ParameterModel forExport(char separator) { ParameterModel exportModel = new ParameterModel(separator); - exportModel.forExport(decoratorService); + exportModel.forExport(); return exportModel; } @@ -68,7 +66,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> super(separator); } - protected void forExport(DecoratorService decoratorService) { + protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); @@ -79,7 +77,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newColumnForExport("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newColumnForExportByDecorator("Libelle_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newColumnForExport("Libelle_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); newColumnForExport("Valeur", ParameterRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); newColumnForExport("Valeur_Id", ParameterRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index b7d0ae8..ba59089 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -57,7 +57,7 @@ public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesEx newColumnForExport("ReferenceTaxonId", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_REF_TAX_CODE_FORMATTER); - newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java index f520823..8fc5fdb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java @@ -25,10 +25,10 @@ package fr.ifremer.tutti.service.protocol; import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.ForeignKeyParserFormatter; import fr.ifremer.tutti.service.csv.StringParserFormatter; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import org.nuiton.csv.Common; import org.nuiton.csv.ImportRuntimeException; @@ -88,6 +88,8 @@ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_METHOD_NAME); + //FIXME See if really needed, otherwise just use the default String parser +// newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE); newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE, new StringParserFormatter(null, true)); newMandatoryColumn(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.LIST_INTEGER_PARSER_FORMATTER); newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 9ca57f4..b141fe5 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -9,11 +9,14 @@ tutti.caracteristicType.vesselUseFeature= tutti.csv.import.error.on.field= tutti.csv.import.error.on.row= tutti.error.benthos.not.in.protocol= +tutti.error.messages= tutti.error.species.not.in.protocol= +tutti.fatal.messages= tutti.genericFormat.import.accidentalCatches= tutti.genericFormat.import.catches= tutti.genericFormat.import.cruises= tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.error.cruiseNotValid= tutti.genericFormat.import.gearCaracteristics= tutti.genericFormat.import.individualObservations= tutti.genericFormat.import.marineLitters= @@ -26,6 +29,8 @@ tutti.genericFormat.import.temporaryPersons= tutti.genericFormat.import.temporarySpecies= tutti.genericFormat.import.temporaryVessels= tutti.genericFormat.importError.archiveNotSane= +tutti.genericFormat.load.protocol= +tutti.genericFormat.reuse.protocol= tutti.genericformat.importError.missArchiveFile= tutti.io.mkDir.error= tutti.pdf.export.missing.species.code= @@ -267,6 +272,7 @@ tutti.service.referential.export.vessel.error= tutti.service.referential.import.gear.add.noName.error= tutti.service.referential.import.gear.cannotDeleteNotExisting.error= tutti.service.referential.import.gear.cannotDeleteWithoutId.error= +tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.gear.existingName.error= tutti.service.referential.import.gear.idNotNegative.error= tutti.service.referential.import.gear.noName.error= @@ -276,6 +282,7 @@ tutti.service.referential.import.gears.error= tutti.service.referential.import.person.add.noName.error= tutti.service.referential.import.person.cannotDeleteNotExisting.error= tutti.service.referential.import.person.cannotDeleteWithoutId.error= +tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.person.existingName.error= tutti.service.referential.import.person.idNotNegative.error= tutti.service.referential.import.person.noName.error= @@ -286,6 +293,7 @@ tutti.service.referential.import.species.add.noName.error= tutti.service.referential.import.species.cannotDeleteNotExisting.error= tutti.service.referential.import.species.cannotDeleteWithoutId.error= tutti.service.referential.import.species.error= +tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.species.existingName.error= tutti.service.referential.import.species.idNotNegative.error= tutti.service.referential.import.species.noName.error= @@ -296,6 +304,7 @@ tutti.service.referential.import.vessel.add.noRegistrationCode.error= tutti.service.referential.import.vessel.cannotDeleteNotExisting.error= tutti.service.referential.import.vessel.cannotDeleteWithoutId.error= tutti.service.referential.import.vessel.codePrefixMissing.error= +tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error= tutti.service.referential.import.vessel.existingName.error= tutti.service.referential.import.vessel.existingRegistrationCode.error= @@ -406,3 +415,4 @@ tutti.validator.warning.latitude.outOfBounds= tutti.validator.warning.longitude.outOfBounds= tutti.validator.warning.marineLitter.weight.required= tutti.validator.warning.species.protocolNotRespected= +tutti.warning.messages= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index d1b846d..9b3b478 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -5,10 +5,13 @@ tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques tutti.caracteristicType.lengthStep= tutti.csv.import.error.on.field=Colonne %s \: %s tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s +tutti.error.messages= +tutti.fatal.messages= tutti.genericFormat.import.accidentalCatches= tutti.genericFormat.import.catches= tutti.genericFormat.import.cruises= tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.error.cruiseNotValid= tutti.genericFormat.import.gearCaracteristics= tutti.genericFormat.import.individualObservations= tutti.genericFormat.import.marineLitters= @@ -21,6 +24,8 @@ tutti.genericFormat.import.temporaryPersons= tutti.genericFormat.import.temporarySpecies= tutti.genericFormat.import.temporaryVessels= tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique \:\n%s +tutti.genericFormat.load.protocol= +tutti.genericFormat.reuse.protocol= tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. @@ -82,6 +87,7 @@ tutti.service.bigfinimport.error.no.protocol=Impossible de faire un import Bigfi tutti.service.compressZipFile.error=Erreur lors de la compression du dossier %1s dans le fichier %2s tutti.service.context.serviceInstanciation.error=Erreur lors de l'instanciation du service %s tutti.service.csv.parse.entityNotFound=L'entité de type %1s avec la propriété %2s de valeur %3s n'a pas été trouvée +tutti.service.csv.parse.foreignEntityNotFound=L'entité de type %1s avec l'identifiant %3s n'a pas été trouvée tutti.service.cvs.format.error=Erreur lors du formatage de la valeur %s tutti.service.cvs.mandatory.value=Valeur obligatoire tutti.service.error.species.null= @@ -241,6 +247,7 @@ tutti.service.referential.export.vessel.error=Erreur lors de l'export des navire tutti.service.referential.import.gear.add.noName.error=Le nom de l'engin est obligatoire tutti.service.referential.import.gear.cannotDeleteNotExisting.error=L'engin temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.gear.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.gear.existingName.error=L'engin '%s' n'a pas été ajouté au référentiel car il est déjà présent tutti.service.referential.import.gear.idNotNegative.error=L'identifiant d'un engin temporaire doit être négatif \: %s tutti.service.referential.import.gear.noName.error=Le nom de l'engin est obligatoire @@ -250,6 +257,7 @@ tutti.service.referential.import.gears.error=Erreur lors de l'import des engins tutti.service.referential.import.person.add.noName.error=Le nom de la personne (prénom ou nom) est obligatoire tutti.service.referential.import.person.cannotDeleteNotExisting.error=La personne temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.person.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.person.existingName.error=Une personne avec ce nom %s (nom + prénom) existe déjà tutti.service.referential.import.person.idNotNegative.error=L'identifiant d'une personne temporaire doit être négatif \: %s tutti.service.referential.import.person.noName.error=Le nom de la personne (prénom ou nom) est obligatoire @@ -260,6 +268,7 @@ tutti.service.referential.import.species.add.noName.error=Le nom pour l'espèce tutti.service.referential.import.species.cannotDeleteNotExisting.error=L'espèce temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.species.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.species.error=Erreur lors de l'import des espèces du fichier %s +tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.species.existingName.error=L'espèce '%s' n'a pas été ajoutée au référentiel car elle est déjà présente tutti.service.referential.import.species.idNotNegative.error=L'identifiant d'une espèce temporaire doit être négatif \: %s tutti.service.referential.import.species.noName.error=Le nom pour l'espèce %s est obligatoire. @@ -269,6 +278,7 @@ tutti.service.referential.import.vessel.add.noRegistrationCode.error=L'immatricu tutti.service.referential.import.vessel.cannotDeleteNotExisting.error=Le navire temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.vessel.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.vessel.codePrefixMissing.error=L'identifiant d'un navire temporaire doit commencer par %1$s \: %2$s +tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.vessel.existingRegistrationCode.error=Le navire '%s' n'a pas été ajouté au référentiel car il est déjà présent tutti.service.referential.import.vessel.noRegistrationCode.error=L'immatriculation est obligatoire tutti.service.referential.import.vessel.notExistingId.error=L'identifiant '%s' n'a pas été trouvé parmi les navires temporaires @@ -364,3 +374,4 @@ tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise ent tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0 tutti.validator.warning.marineLitter.weight.required=Vous devez saisir la valeur du poids total des déchets<br/>ou le poids de chacune des catégories observées. tutti.validator.warning.species.protocolNotRespected=Espèces - le lot de %s / %s ne suit pas les recommandations du protocole +tutti.warning.messages= -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 1b621953462ec9a63dee55ea85a136f5237b7260 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:03:34 2015 +0100 fix missing API --- .../src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java | 6 ++++++ .../tutti/service/genericformat/consumer/CsvConsumerForSurvey.java | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index d60d8f6..27916d2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -58,6 +58,12 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> IOUtils.closeQuietly(importer); } + protected void addCheckError(ImportRow<O> row, Exception e) { + + row.addError(new CheckImportErrorInfo<>(row, null, e)); + + } + public String rowErrorsToExceptionMessage(ImportRow<O> bean) { Set<String> errors = new HashSet<>(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index 1d85ba1..4ac3416 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -3,7 +3,6 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; @@ -37,7 +36,7 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { if (importContext.isCruiseExists(cruise)) { // Can't readd an existing cruise - TuttiCsvUtil.addCheckError(row, new CruiseAlreadyExistException(cruise)); + addCheckError(row, new CruiseAlreadyExistException(cruise)); } @@ -45,7 +44,7 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { if (nuitonValidatorResult.hasFatalMessages() || nuitonValidatorResult.hasErrorMessagess()) { // There is some validation errors - TuttiCsvUtil.addCheckError(row, new CruiseNotValidException(cruise, nuitonValidatorResult)); + addCheckError(row, new CruiseNotValidException(cruise, nuitonValidatorResult)); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit fbf064cb1e43ad9787ae1ec0a855e2e9bb73b5d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:03:53 2015 +0100 remove from TuttiCsvUtil (push to nuiton-csv --- .../main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 06f1da8..9956e30 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -37,7 +37,6 @@ import org.nuiton.csv.ValueParserFormatter; import java.io.Serializable; import java.text.ParseException; -import java.util.Date; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -156,8 +155,6 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueParserFormatter<Date> TIME = new DateValue("HH:mm"); - public static final ValueFormatter<Caracteristic> CARACTERISTIC_FORMATTER = CaracteristicParserFormatter.newFormatter(); public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = CaracteristicParserFormatter.newTechnicalFormatter(); @@ -200,13 +197,13 @@ public class TuttiCsvUtil extends Common { public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = SpeciesParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = PersonListParserFormatter.newFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = PersonListParserFormatter.newFormatter(PersonParserFormatter.newFormatter()); - public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = PersonListParserFormatter.newFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = PersonListParserFormatter.newFormatter(PersonParserFormatter.newTechnicalFormatter()); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = VesselListParserFormatter.newFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = VesselListParserFormatter.newFormatter(VesselParserFormatter.newFormatter()); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = VesselListParserFormatter.newFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = VesselListParserFormatter.newFormatter(VesselParserFormatter.newTechnicalFormatter()); public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 092414df66bd18b589d0efd7a4d8183e30fdfec5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:04:26 2015 +0100 fix new formatters --- .../ifremer/tutti/service/csv/PersonListParserFormatter.java | 4 ++-- .../fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java | 12 ++++-------- .../ifremer/tutti/service/csv/VesselListParserFormatter.java | 4 ++-- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java index eaa1470..937e01a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java @@ -10,8 +10,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; */ public class PersonListParserFormatter extends EntityListParserFormatterSupport<Person> { - public static PersonListParserFormatter newFormatter() { - return new PersonListParserFormatter(null); + public static PersonListParserFormatter newFormatter(PersonParserFormatter delegateParserFormatter) { + return new PersonListParserFormatter(delegateParserFormatter); } public static PersonListParserFormatter newParser(PersonParserFormatter delegateParserFormatter) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java index efcc029..f56e3e4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java @@ -50,16 +50,12 @@ public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species } @Override - public String format(Species value) { - String result = ""; - if (value != null) { - result = Speciess.GET_REFERECE_TAXON_ID.apply(value); - } - return result; + protected String formatBusiness(Species value) { + return value.getName(); } @Override - protected String formatBusiness(Species species) { - return species.getName(); + protected String formatTechnical(Species value) { + return Speciess.GET_REFERECE_TAXON_ID.apply(value); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java index 729dd22..618e770 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java @@ -10,8 +10,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; */ public class VesselListParserFormatter extends EntityListParserFormatterSupport<Vessel> { - public static VesselListParserFormatter newFormatter() { - return new VesselListParserFormatter(null); + public static VesselListParserFormatter newFormatter(VesselParserFormatter delegateParserFormatter) { + return new VesselListParserFormatter(delegateParserFormatter); } public static VesselListParserFormatter newParser(VesselParserFormatter delegateParserFormatter) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 500e4d33a9eee17c97481a5be9c027541fc45f23 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 15:04:49 2015 +0100 finalize import - export model --- .../genericformat/csv/AccidentalCatchModel.java | 30 ++++++----- .../service/genericformat/csv/CatchModel.java | 16 +++--- .../genericformat/csv/GearCaracteristicModel.java | 4 +- .../csv/IndividualObservationModel.java | 28 +++++----- .../genericformat/csv/MarineLitterModel.java | 28 +++++----- .../service/genericformat/csv/OperationModel.java | 4 +- .../service/genericformat/csv/ParameterModel.java | 2 +- .../genericformat/csv/SpeciesExportModel.java | 4 +- .../GenericFormatExportServiceTest.java | 62 +++++++++++----------- 9 files changed, 91 insertions(+), 87 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index 21a54f9..063cc58 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -78,16 +78,17 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newNullableColumnForExport("Rang_Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newColumnForExport("BatchId", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); - newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); - newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); + newColumnForExport("Id_Lot", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("Nom_Scientifique", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newColumnForExport("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newColumnForExport("CaracteristicValue", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + newColumnForExport("Libelle_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); + newColumnForExport("Valeur", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newColumnForExport("CaracteristicValue_Id", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newColumnForExport("Valeur_Id", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); } @@ -101,16 +102,17 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newIgnoredColumn("Engin"); - newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("Rang_Engin"); - newIgnoredColumn("BatchId"); - newMandatoryColumn("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); - newIgnoredColumn("ReferenceTaxonName"); + newIgnoredColumn("Id_Lot"); + newMandatoryColumn("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); - newIgnoredColumn("CaracteristicValue"); + newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newIgnoredColumn("Libelle_PMFM"); + newIgnoredColumn("Valeur"); - newMandatoryColumn("CaracteristicValue_Id", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE); + newMandatoryColumn("Valeur_Id", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index adf34d3..9f50a9f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -88,11 +88,11 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newNullableColumnForExport("Rang_Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); - newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); + newColumnForExport("Nom_Scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); @@ -149,12 +149,12 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newIgnoredColumn("Engin"); - newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("Rang_Engin"); - newMandatoryColumn("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); - newMandatoryColumn("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); + newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); newIgnoredColumn("Code_Espece_Campagne"); - newIgnoredColumn("Nom_scientifique"); + newIgnoredColumn("Nom_Scientifique"); + newMandatoryColumn("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { @@ -189,10 +189,10 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { String headerPrefix = entry.getCode(); - newMandatoryColumn(headerPrefix + "_Id", CaracteristicValueParserFormatter.newParser(entry.getCaracteristic()), new SampleCategoryValueSetter<Serializable>(entry, ExportSampleCategory.PROPERTY_CATEGORY_VALUE)); } + } private static class SampleCategoryValueSetter<O> implements ValueSetter<CatchRow, O> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index eb2ad54..e8216a3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -74,7 +74,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newColumnForExport("Engin", GearCaracteristicRow.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newColumnForExport("EnginRankOrder", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newColumnForExport("Rang_Engin", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); @@ -93,7 +93,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newIgnoredColumn("Engin"); //FIXME - newMandatoryColumn("EnginRankOrder", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newMandatoryColumn("Rang_Engin", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index bfc9339..5222f4b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -79,16 +79,17 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newNullableColumnForExport("Rang_Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newColumnForExport("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); - newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("Id_Lot", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Nom_Scientifique", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newColumnForExport("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newColumnForExport("CaracteristicValue", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + newColumnForExport("Libelle_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); + newColumnForExport("Valeur", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newColumnForExport("CaracteristicValue_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newColumnForExport("Valeur_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); } @@ -102,16 +103,17 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newIgnoredColumn("Engin"); - newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("Rang_Engin"); - newIgnoredColumn("BatchId"); - newMandatoryColumn("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); - newIgnoredColumn("ReferenceTaxonName"); + newIgnoredColumn("Id_Lot"); + newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); - newIgnoredColumn("CaracteristicValue"); + newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newIgnoredColumn("Libelle_PMFM"); + newIgnoredColumn("Valeur"); - newMandatoryColumn("CaracteristicValue_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE); + newMandatoryColumn("Valeur_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 9c2ccbe..1af9d26 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -78,16 +78,16 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newNullableColumnForExport("Rang_Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newColumnForExport("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newColumnForExport("MarineLitterSizeCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newColumnForExport("Number", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER); - newColumnForExport("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); + newColumnForExport("Categorie", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Categorie_Taille", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Nombre", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER); + newColumnForExport("Poids", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); newColumnForExport("Commentaire", MarineLitterBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newColumnForExport("MarineLitterCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newColumnForExport("MarineLitterSizeCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newColumnForExport("Categorie_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + newColumnForExport("Categorie_Taille_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); } @@ -101,16 +101,16 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newIgnoredColumn("Engin"); - newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("Rang_Engin"); - newIgnoredColumn("MarineLitterCategory"); - newIgnoredColumn("MarineLitterSizeCategory"); - newMandatoryColumn("Number", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER); - newMandatoryColumn("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); + newIgnoredColumn("Categorie"); + newIgnoredColumn("Categorie_Taille"); + newMandatoryColumn("Nombre", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER); + newMandatoryColumn("Poids", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); newMandatoryColumn("Commentaire", MarineLitterBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("MarineLitterCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, globalImportContext.getMarineLitterCategoryValueParser()); - newMandatoryColumn("MarineLitterSizeCategory_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, globalImportContext.getMarineLitterSizeCategoryValueParser()); + newMandatoryColumn("Categorie_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, globalImportContext.getMarineLitterCategoryValueParser()); + newMandatoryColumn("Categorie_Taille_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, globalImportContext.getMarineLitterSizeCategoryValueParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 733f4e1..98126c6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -82,7 +82,7 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newNullableColumnForExport("EnginRankOrder", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newNullableColumnForExport("Rang_Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER); newColumnForExport("DateDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND); @@ -179,7 +179,7 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newIgnoredColumn("Engin"); - newIgnoredColumn("EnginRankOrder"); + newIgnoredColumn("Rang_Engin"); newIgnoredColumn("Navire"); newMandatoryColumn("DateDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index 4bb2a74..f9db65d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -72,7 +72,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index ba59089..e7d52fb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -55,10 +55,10 @@ public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesEx protected void forExport() { - newColumnForExport("ReferenceTaxonId", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newColumnForExport("Code_Taxon", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_REF_TAX_CODE_FORMATTER); newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); - newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); + newColumnForExport("Code_Campagne", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index fd5f719..d2d6381 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -64,12 +64,12 @@ public class GenericFormatExportServiceTest { public static final String SURVEY_CONTENT = "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire;Navire_Id;Port_Deb_Campagne_Id;Port_Fin_Campagne_Id;Chef_Mission_Id;Resp_Salle_Tri_Id\n" + - "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;;278970;1AC;1BI;1981;104"; + "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;;278970;892;12407;1981;104"; // "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" + // "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;"; public static final String GEAR_CARACTERISTICS_CONTENT = - "Annee;Serie;Serie_Partielle;Engin;EnginRankOrder;Code_PMFM;Libelle_PMFM;Valeur;Engin_Id;Valeur_Id\n" + + "Annee;Serie;Serie_Partielle;Engin;Rang_Engin;Code_PMFM;Libelle_PMFM;Valeur;Engin_Id;Valeur_Id\n" + "2013;Campagne CGFS;;ScientificGear;1;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Lame;-2;361\n" + "2013;Campagne CGFS;;ScientificGear;1;121;Diamètre du goulot (Casier) - engin - goulotte - Déclaration d'un professionnel;120.0;-2;120.0\n" + "2013;Campagne CGFS;;ScientificGear;1;927;Maillage étiré de l'engin - engin - Maille des ailes - Inconnue;15.0;-2;15.0\n" + @@ -81,27 +81,27 @@ public class GenericFormatExportServiceTest { // "2013;Campagne CGFS;;ScientificGear;287;Volet dépresseur (drague) - engin - totale - Déclaration d'un professionnel;Oui"; public static final String OPERATION_WITH_NO_CATCH_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carrousse [...] - "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;1;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;278970;4J;;4J2;;"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Po [...] + "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;1;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;278970;57345;;57837;;"; // "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total [...] // "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?"; public static final String OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carrousse [...] - "2010;Campagne CGFS;;65;65;1;;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;278970;4J;;4J2;;"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Po [...] + "2010;Campagne CGFS;;65;65;1;;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;278970;57345;;57837;;"; // "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total [...] // "2010;Campagne CGFS;;65;65;1;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512;;;avarie - chalut annulé completement à poil;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?;-9.0;?"; public static final String OPERATION_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carrousse [...] - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;-9.0;?;-9.0;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y;278970;1D;;1D2;1981;\n" + - "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;1;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;-9.0;?;-9.0;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;278970;1D;;1D2;30|62;"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Po [...] + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;-9.0;?;-9.0;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y;278970;57308;;57776;1981;\n" + + "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;1;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;-9.0;?;-9.0;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;278970;57308;;57776;30|62;"; // "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total [...] // "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;-9.0;?;-9.0;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y\n" + // "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;-9;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;-9.0;?;-9.0;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y"; public static final String PARAMETER_CONTENT = - "Annee;Serie;Serie_Partielle;Code_station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id\n" + + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id\n" + "2013;Campagne CGFS;;A;1;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10;1482\n" + "2013;Campagne CGFS;;A;1;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0;10.0\n" + "2013;Campagne CGFS;;A;1;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\";281\n" + @@ -119,7 +119,7 @@ public class GenericFormatExportServiceTest { // "2013;Campagne CGFS;;A;2;1;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0"; public static final String CATCH_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;ReferenceTaxonId;Code_Espece_Campagne;Nom_scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H [...] + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Code_Taxon;Code_Espece_Campagne;Nom_Scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Matu [...] "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;1;;cm;0.5;5;5.0;20.0;3.0;311;305;300;272;NA\n" + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;2;;cm;0.5;2;5.0;20.0;3.0;311;305;300;272;NA\n" + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;11242;;Aaptos;N;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;3;;cm;0.5;1;5.0;20.0;3.0;311;305;300;272;NA\n" + @@ -141,7 +141,7 @@ public class GenericFormatExportServiceTest { // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;11242;;Aaptos;;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;2;20.0;1.0;1.0"; public static final String CATCH_CONTENT_2 = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;ReferenceTaxonId;Code_Espece_Campagne;Nom_scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H [...] + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Code_Taxon;Code_Espece_Campagne;Nom_Scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Matu [...] "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;365;;Aequipecten opercularis;N;taxon;Vrac;1;0.005;0.005;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.005;1.0;1.0;311;NA;NA;NA;NA\n" + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;491;ALLOSPP;Alloteuthis;N;taxon;Vrac;2;0.004;0.004;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.004;1.0;1.0;311;NA;NA;NA;NA\n" + "2010;Campagne CGFS;;20;20;1;GOV 19.7/25.9;1;300;;Buccinum undatum;N;taxon;Vrac;3;0.015;0.015;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.015;1.0;1.0;311;NA;NA;NA;NA\n" + @@ -203,7 +203,7 @@ public class GenericFormatExportServiceTest { // "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;1662;TRACTRA;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;G - Gros;2;0.13;0.13;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;23.0;1;;cm;1.0;1;0.13;137761.75;1.0"; public static final String MARINE_LITTER_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire;MarineLitterCategory_Id;MarineLitterSizeCategory_Id\n" + + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Categorie;Categorie_Taille;Nombre;Poids;Commentaire;Categorie_Id;Categorie_Taille_Id\n" + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1;2119;2120\n" + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2;2126;2121"; // "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" + @@ -211,16 +211,16 @@ public class GenericFormatExportServiceTest { // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2"; public static final String INDIVIDUAL_OBSERVATION_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue;CaracteristicValue_Id\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;220;0.1;0.1\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1433;307;307\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;307;10.0;10.0\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1436;10;10\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1435;A20;A20\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;101;10.0;10.0\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB;168\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1388;5.0;5.0"; -// "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" + + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;220;Poids - produit/lot - totale - Mesure par un observateur;0.1;0.1\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;307;307\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1436;N° pièce calcifiée - individu - totale - Inconnue;10;10\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1435;Code du prélèvement - individu - totale - Inconnue;A20;A20\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;101;Age - individu - otolithe - Lecture d'âge;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;46;Algorithme de déterminaison - marée - totale - Estimation algorithme SACROIS;0L - 0 VMS - 1 LB;168\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100000;11242;Aaptos;P1;1388;Caisse - produit/lot - totale - Observation par un observateur;5.0;5.0"; +// "Annee;Serie;Serie_Partielle;Engin;Code_Station;Id_Operation;Poche;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Valeur\n" + // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;220;0.1\n" + // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1433;307\n" + // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;307;10.0\n" + @@ -231,12 +231,12 @@ public class GenericFormatExportServiceTest { // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100000;11242;Aaptos;P1;1388;5.0"; public static final String ACCIDENTAL_CATCH_CONTENT = - "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;EnginRankOrder;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue;CaracteristicValue_Id\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1393;Rejet mort;1769\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;196;Femelle;301\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;220;10.0;10.0\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1433;1425;1425\n" + - "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1425;4.0;4.0"; + "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1393;Rejet vivant ou mort ? - produit/lot - totale - Observation par un observateur;Rejet mort;1769\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;196;Sexe - produit/lot - totale - Observation par un observateur;Femelle;301\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;220;Poids - produit/lot - totale - Mesure par un observateur;10.0;10.0\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;1425;1425\n" + + "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;1;100001;3835;Abalistes;;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;4.0;4.0"; // "Annee;Serie;Serie_Partielle;Engin;Code_station;Id_Operation;Poche;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" + // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1393;Rejet mort\n" + // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;196;Femelle\n" + @@ -245,7 +245,7 @@ public class GenericFormatExportServiceTest { // "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;100001;3835;Abalistes;;1425;4.0"; public static final String SPECIES_CONTENT = - "ReferenceTaxonId;Code_Rubin;Nom_Scientifique;Code_campagne\n" + + "Code_Taxon;Code_Rubin;Nom_Scientifique;Code_Campagne\n" + "3835;ABAL;Abalistes;\n" + "11242;AAPT;Aaptos;\n" + "11243;AAPTAAP;Aaptos aaptos;"; @@ -255,7 +255,7 @@ public class GenericFormatExportServiceTest { // "11243;AAPTAAP;Aaptos aaptos;"; public static final String SPECIES_CONTENT_2 = - "ReferenceTaxonId;Code_Rubin;Nom_Scientifique;Code_campagne\n" + + "Code_Taxon;Code_Rubin;Nom_Scientifique;Code_Campagne\n" + "300;BUCCUND;Buccinum undatum;\n" + "365;AEQUOPE;Aequipecten opercularis;\n" + "489;LOLIVUL;Loligo vulgaris;LOLIVUL\n" + -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 2f6db5584931f8335b4e655c4594d595aeba5d92 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 13:13:12 2015 +0100 add once for all a unique method to know if an id is temporary --- .../tutti/persistence/entities/referential/Gears.java | 19 +++++++++++++++++-- .../persistence/entities/referential/Persons.java | 16 +++++++++++++++- .../persistence/entities/referential/Speciess.java | 16 +++++++++++++++- .../persistence/entities/referential/Vessels.java | 16 +++++++++++++++- 4 files changed, 62 insertions(+), 5 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java index 3cc4a4a..e05cc33 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java @@ -80,7 +80,22 @@ public class Gears extends AbstractGears { Preconditions.checkNotNull(gear); Preconditions.checkNotNull(gear.getId()); - return TuttiReferentialEntities.isStatusTemporary(gear) && gear.getIdAsInt() < 0; + return TuttiReferentialEntities.isStatusTemporary(gear) && isTemporaryId(gear.getIdAsInt()); } -} //Gears + + /** + * Is the given {@code id} is a gear temporary id ? + * + * @param id id to test + * @return {@code true} if the id is a gear pecies temporary id + * @since 3.14 + */ + public static boolean isTemporaryId(Integer id) { + + Preconditions.checkNotNull(id); + return id < 0; + + } + +} diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java index 7761a6e..7846cd4 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java @@ -47,7 +47,21 @@ public class Persons extends AbstractPersons { Preconditions.checkNotNull(person); Preconditions.checkNotNull(person.getId()); - return TuttiReferentialEntities.isStatusTemporary(person) && person.getIdAsInt() < 0; + return TuttiReferentialEntities.isStatusTemporary(person) && isTemporaryId(person.getIdAsInt()); + + } + + /** + * Is the given {@code id} is a person temporary id ? + * + * @param id person to test + * @return {@code true} if the id is a person pecies temporary id + * @since 3.14 + */ + public static boolean isTemporaryId(Integer id) { + + Preconditions.checkNotNull(id); + return id < 0; } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index 1b52844..d689d30 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -60,7 +60,21 @@ public class Speciess extends AbstractSpeciess { Preconditions.checkNotNull(species); Preconditions.checkNotNull(species.getId()); - return TuttiReferentialEntities.isStatusTemporary(species) && species.getIdAsInt() < 0; + return TuttiReferentialEntities.isStatusTemporary(species) && isTemporaryId(species.getIdAsInt()); + + } + + /** + * Is the given {@code id} is a temporary species id ? + * + * @param id id to test + * @return {@code true} if the id is a species temporary id + * @since 3.14 + */ + public static boolean isTemporaryId(Integer id) { + + Preconditions.checkNotNull(id); + return id < 0; } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java index e4ba98f..8575d92 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java @@ -88,7 +88,21 @@ public class Vessels extends AbstractVessels { Preconditions.checkNotNull(vessel); Preconditions.checkNotNull(vessel.getId()); - return TuttiReferentialEntities.isStatusTemporary(vessel) && vessel.getId().startsWith(TemporaryDataHelper.TEMPORARY_NAME_PREFIX); + return TuttiReferentialEntities.isStatusTemporary(vessel) && isTemporaryId(vessel.getId()); + + } + + /** + * Is the given {@code id} is a vessel temporary id ? + * + * @param id id to test + * @return {@code true} if the id is a temporary vessel id + * @since 3.14 + */ + public static boolean isTemporaryId(String id) { + + Preconditions.checkNotNull(id); + return id.startsWith(TemporaryDataHelper.TEMPORARY_NAME_PREFIX); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 5170fca59d28077ef7475496af637ac790a78379 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 13:49:24 2015 +0100 split import referential method in add and update method introduce link referential concept (for generic import) --- .../tutti/persistence/TuttiPersistenceImpl.java | 56 +++++++++-- .../persistence/TuttiPersistenceNoDbImpl.java | 48 ++++++++- .../referential/GearPersistenceService.java | 29 +++++- .../referential/GearPersistenceServiceImpl.java | 99 ++++++++++++++++++- .../referential/PersonPersistenceService.java | 29 +++++- .../referential/PersonPersistenceServiceImpl.java | 108 ++++++++++++++++----- .../referential/SpeciesPersistenceService.java | 29 +++++- .../referential/SpeciesPersistenceServiceImpl.java | 86 +++++++++++++++- .../referential/VesselPersistenceService.java | 29 +++++- .../referential/VesselPersistenceServiceImpl.java | 99 ++++++++++++++++--- 10 files changed, 536 insertions(+), 76 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 1dda3e4..0fc00c0 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -465,8 +465,18 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { - return getGearService().importTemporaryGear(gears); + public List<Gear> addTemporaryGears(List<Gear> gears) { + return getGearService().addTemporaryGears(gears); + } + + @Override + public List<Gear> updateTemporaryGears(List<Gear> gears) { + return getGearService().updateTemporaryGears(gears); + } + + @Override + public List<Gear> linkTemporaryGears(List<Gear> gears) { + return getGearService().linkTemporaryGears(gears); } @Override @@ -533,8 +543,18 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public Collection<Species> importTemporarySpecies(Collection<Species> species) { - return getSpeciesService().importTemporarySpecies(species); + public List<Species> addTemporarySpecies(List<Species> species) { + return getSpeciesService().addTemporarySpecies(species); + } + + @Override + public List<Species> updateTemporarySpecies(List<Species> species) { + return getSpeciesService().updateTemporarySpecies(species); + } + + @Override + public List<Species> linkTemporarySpecies(List<Species> species) { + return getSpeciesService().linkTemporarySpecies(species); } @Override @@ -592,8 +612,18 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public Collection<Person> importTemporaryPerson(Collection<Person> persons) { - return getPersonService().importTemporaryPerson(persons); + public List<Person> addTemporaryPersons(List<Person> persons) { + return getPersonService().addTemporaryPersons(persons); + } + + @Override + public List<Person> updateTemporaryPersons(List<Person> persons) { + return getPersonService().updateTemporaryPersons(persons); + } + + @Override + public List<Person> linkTemporaryPersons(List<Person> persons) { + return getPersonService().linkTemporaryPersons(persons); } @Override @@ -636,8 +666,18 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { - return getVesselService().importTemporaryVessel(vessels); + public List<Vessel> addTemporaryVessels(List<Vessel> vessels) { + return getVesselService().addTemporaryVessels(vessels); + } + + @Override + public List<Vessel> updateTemporaryVessels(List<Vessel> vessels) { + return getVesselService().updateTemporaryVessels(vessels); + } + + @Override + public List<Vessel> linkTemporaryVessels(List<Vessel> vessels) { + return getVesselService().linkTemporaryVessels(vessels); } @Override diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index 0e21672..1aa18f6 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -317,22 +317,62 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public Collection<Species> importTemporarySpecies(Collection<Species> species) { + public List<Species> addTemporarySpecies(List<Species> species) { throw notImplemented(); } @Override - public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { + public List<Species> updateTemporarySpecies(List<Species> species) { throw notImplemented(); } @Override - public Collection<Person> importTemporaryPerson(Collection<Person> persons) { + public List<Species> linkTemporarySpecies(List<Species> specieses) { throw notImplemented(); } @Override - public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { + public List<Vessel> addTemporaryVessels(List<Vessel> vessels) { + throw notImplemented(); + } + + @Override + public List<Vessel> updateTemporaryVessels(List<Vessel> vessels) { + throw notImplemented(); + } + + @Override + public List<Vessel> linkTemporaryVessels(List<Vessel> vessels) { + throw notImplemented(); + } + + @Override + public List<Person> addTemporaryPersons(List<Person> persons) { + throw notImplemented(); + } + + @Override + public List<Person> updateTemporaryPersons(List<Person> persons) { + throw notImplemented(); + } + + @Override + public List<Person> linkTemporaryPersons(List<Person> persons) { + throw notImplemented(); + } + + @Override + public List<Gear> addTemporaryGears(List<Gear> gears) { + throw notImplemented(); + } + + @Override + public List<Gear> updateTemporaryGears(List<Gear> gears) { + throw notImplemented(); + } + + @Override + public List<Gear> linkTemporaryGears(List<Gear> gears) { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java index d0499fd..5fe9497 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java @@ -56,14 +56,35 @@ public interface GearPersistenceService extends TuttiPersistenceServiceImplement boolean isTemporaryGearUsed(Integer id); /** - * Import given temporary gears. + * Add given temporary gears. * - * @param gears gears to import - * @since 1.0 + * @param gears gears to add + * @return added gears + * @since 3.14 */ @Transactional(readOnly = false) @CacheEvict(value = "gears", allEntries = true) - Collection<Gear> importTemporaryGear(Collection<Gear> gears); + List<Gear> addTemporaryGears(List<Gear> gears); + + /** + * Update given temporary gears. + * + * @param gears gears to update + * @return updated gears + * @since 3.14 + */ + @Transactional(readOnly = false) + @CacheEvict(value = "gears", allEntries = true) + List<Gear> updateTemporaryGears(List<Gear> gears); + + /** + * Link temporary gears. (Means get existing references using gears natural ids). + * + * @param gears gears to link + * @return linked gears + * @since 3.14 + */ + List<Gear> linkTemporaryGears(List<Gear> gears); /** * Replace the {@code source} gear by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java index 04e6673..0c9d64b 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java @@ -90,7 +90,7 @@ public class GearPersistenceServiceImpl extends ReferentialPersistenceServiceSup public Gear getGear(Integer gearId) { Object[] source = queryUnique( - "gear", + "gearById", "gearId", IntegerType.INSTANCE, gearId); Gear result = source == null ? null : loadGear(source); @@ -111,15 +111,42 @@ public class GearPersistenceServiceImpl extends ReferentialPersistenceServiceSup } @Override - public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { + public List<Gear> addTemporaryGears(List<Gear> gears) { + + fr.ifremer.adagio.core.dao.referential.Status status = + statusDao.load(StatusCode.TEMPORARY.getValue()); List<Gear> result = Lists.newArrayList(); + for (Gear source : gears) { + Gear added = addTemporaryGear(source, status); + result.add(added); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Gear> updateTemporaryGears(List<Gear> gears) { fr.ifremer.adagio.core.dao.referential.Status status = statusDao.load(StatusCode.TEMPORARY.getValue()); + + List<Gear> result = Lists.newArrayList(); for (Gear source : gears) { - source = importTemporaryGear(source, status); - result.add(source); + Gear updated = updateTemporaryGear(source, status); + result.add(updated); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Gear> linkTemporaryGears(List<Gear> gears) { + + List<Gear> result = Lists.newArrayList(); + for (Gear source : gears) { + Gear linked = linkTemporaryGear(source); + result.add(linked); } return Collections.unmodifiableList(result); @@ -211,6 +238,70 @@ public class GearPersistenceServiceImpl extends ReferentialPersistenceServiceSup } + protected Gear addTemporaryGear(Gear source, fr.ifremer.adagio.core.dao.referential.Status status) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getLabel()); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkArgument(source.getId() == null || Gears.isTemporaryId(source.getIdAsInt())); + + Integer gearClassificationId; + if (source.isScientificGear()) { + gearClassificationId = GearClassificationId.SCIENTIFIC_CRUISE.getValue(); + } else { + gearClassificationId = GearClassificationId.FAO.getValue(); + } + + fr.ifremer.adagio.core.dao.referential.gear.Gear target = fishingGearDao.createAsTemporary(source.getLabel(), source.getName(), gearClassificationId); + Gear result = Gears.newGear(); + result.setId(target.getId()); + + // Fill the result bean + result.setLabel(source.getLabel()); + result.setName(source.getName()); + result.setScientificGear(source.isScientificGear()); + setStatus(status, result); + return result; + + } + + protected Gear updateTemporaryGear(Gear source, fr.ifremer.adagio.core.dao.referential.Status status) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkNotNull(source.getLabel()); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkArgument(Gears.isTemporaryId(source.getIdAsInt())); + + Gear result = getGear(source.getIdAsInt()); + + // Fill the result bean + result.setLabel(source.getLabel()); + result.setName(source.getName()); + result.setScientificGear(source.isScientificGear()); + setStatus(status, result); + return result; + + } + + protected Gear linkTemporaryGear(Gear source) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkNotNull(source.getLabel()); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkArgument(Gears.isTemporaryId(source.getIdAsInt())); + + + Object[] row = queryUnique( + "gearById", + "gearId", IntegerType.INSTANCE, source.getName()); + + Gear result = row == null ? null : loadGear(row); + return result; + + } + protected Gear loadGear(Object[] source) { Gear result = Gears.newGear(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java index 7d51ee8..03c0965 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java @@ -57,14 +57,35 @@ public interface PersonPersistenceService extends TuttiPersistenceServiceImpleme boolean isTemporaryPersonUsed(Integer id); /** - * Import given temporary persons. + * Add temporary persons. * - * @param persons persons to import - * @since 1.0 + * @param persons persons to add + * @return added persons + * @since 3.14 */ @Transactional(readOnly = false) @CacheEvict(value = {"persons", "personById"}, allEntries = true) - Collection<Person> importTemporaryPerson(Collection<Person> persons); + List<Person> addTemporaryPersons(List<Person> persons); + + /** + * Update temporary persons. + * + * @param persons persons to update + * @return updated persons + * @since 3.14 + */ + @Transactional(readOnly = false) + @CacheEvict(value = {"persons", "personById"}, allEntries = true) + List<Person> updateTemporaryPersons(List<Person> persons); + + /** + * Link temporary persons. (Means get existing references using persons natural ids). + * + * @param persons persons to link + * @return linked persons + * @since 3.14 + */ + List<Person> linkTemporaryPersons(List<Person> persons); /** * Replace the {@code source} person by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java index 44e6798..6e2081f 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java @@ -80,8 +80,8 @@ public class PersonPersistenceServiceImpl extends ReferentialPersistenceServiceS @Override public Person getPerson(Integer personId) { - Object[] source = queryUnique( - "person", + Object[] source = queryUniqueWithStatus( + "personById", "personId", IntegerType.INSTANCE, personId); Person result = source == null ? null : loadPerson(source); @@ -113,15 +113,42 @@ public class PersonPersistenceServiceImpl extends ReferentialPersistenceServiceS } @Override - public Collection<Person> importTemporaryPerson(Collection<Person> persons) { + public List<Person> addTemporaryPersons(List<Person> persons) { + + fr.ifremer.adagio.core.dao.referential.Status status = + statusDao.load(StatusCode.TEMPORARY.getValue()); List<Person> result = Lists.newArrayList(); + for (Person source : persons) { + Person added = addTemporaryPerson(source, status); + result.add(added); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Person> updateTemporaryPersons(List<Person> persons) { fr.ifremer.adagio.core.dao.referential.Status status = statusDao.load(StatusCode.TEMPORARY.getValue()); + + List<Person> result = Lists.newArrayList(); + for (Person source : persons) { + Person updated = updateTemporaryPerson(source, status); + result.add(updated); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Person> linkTemporaryPersons(List<Person> persons) { + + List<Person> result = Lists.newArrayList(); for (Person source : persons) { - source = importTemporaryPerson(source, status); - result.add(source); + Person linked = linkTemporaryPerson(source); + result.add(linked); } return Collections.unmodifiableList(result); @@ -190,35 +217,36 @@ public class PersonPersistenceServiceImpl extends ReferentialPersistenceServiceS } - protected Person loadPerson(Object[] source) { + protected Person addTemporaryPerson(Person source, fr.ifremer.adagio.core.dao.referential.Status status) { - Person target = Persons.newPerson(); - target.setId(String.valueOf(source[0])); - target.setLastName((String) source[1]); - target.setFirstName((String) source[2]); - target.setDepartment((String) source[3]); - setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[4], target); - return target; + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getFirstName()); + Preconditions.checkNotNull(source.getLastName()); + Preconditions.checkArgument(source.getIdAsInt() == null || Persons.isTemporaryId(source.getIdAsInt())); + + fr.ifremer.adagio.core.dao.administration.user.Person target = + personDao.createAsTemporary(source.getLastName(), source.getFirstName(), + DepartmentId.UNKNOWN_RECORDER_DEPARTMENT.getValue()); + Person result = Persons.newPerson(); + result.setId(target.getId()); + + // Fill the result bean + result.setLastName(source.getLastName()); + result.setFirstName(source.getFirstName()); + setStatus(status, result); + return result; } - protected Person importTemporaryPerson(Person source, fr.ifremer.adagio.core.dao.referential.Status status) { + protected Person updateTemporaryPerson(Person source, fr.ifremer.adagio.core.dao.referential.Status status) { Preconditions.checkNotNull(source); Preconditions.checkNotNull(source.getFirstName()); Preconditions.checkNotNull(source.getLastName()); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkArgument(Persons.isTemporaryId(source.getIdAsInt())); - Person result; - if (source.getId() != null) { - result = getPerson(source.getIdAsInt()); - - } else { - fr.ifremer.adagio.core.dao.administration.user.Person target = - personDao.createAsTemporary(source.getLastName(), source.getFirstName(), - DepartmentId.UNKNOWN_RECORDER_DEPARTMENT.getValue()); - result = Persons.newPerson(); - result.setId(target.getId()); - } + Person result = getPerson(source.getIdAsInt()); // Fill the result bean result.setLastName(source.getLastName()); @@ -228,4 +256,34 @@ public class PersonPersistenceServiceImpl extends ReferentialPersistenceServiceS } + protected Person linkTemporaryPerson(Person source) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getFirstName()); + Preconditions.checkNotNull(source.getLastName()); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkArgument(Persons.isTemporaryId(source.getIdAsInt())); + + Object[] row = queryUniqueWithStatus( + "personByFullName", + "personFirstName", StringType.INSTANCE, source.getFirstName(), + "personLastName", StringType.INSTANCE, source.getLastName()); + + Person result = row == null ? null : loadPerson(row); + return result; + + } + + protected Person loadPerson(Object[] source) { + + Person target = Persons.newPerson(); + target.setId(String.valueOf(source[0])); + target.setLastName((String) source[1]); + target.setFirstName((String) source[2]); + target.setDepartment((String) source[3]); + setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[4], target); + return target; + + } + } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java index 8b79ff0..3cd3750 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java @@ -92,14 +92,35 @@ public interface SpeciesPersistenceService extends TuttiPersistenceServiceImplem boolean isTemporarySpeciesUsed(Integer referenceTaxonId); /** - * Import given temporary species. + * Add temporary species. * - * @param species species to import - * @since 1.0 + * @param species species to add + * @return added species + * @since 3.14 */ @Transactional(readOnly = false) @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById", "referentSpeciesByIdVernacular"}, allEntries = true) - Collection<Species> importTemporarySpecies(Collection<Species> species); + List<Species> addTemporarySpecies(List<Species> species); + + /** + * Update temporary species. + * + * @param species species to update + * @return updated species + * @since 3.14 + */ + @Transactional(readOnly = false) + @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById", "referentSpeciesByIdVernacular"}, allEntries = true) + List<Species> updateTemporarySpecies(List<Species> species); + + /** + * Link temporary species. (Means get existing references using species natural ids). + * + * @param species species to link + * @return linked species + * @since 3.14 + */ + List<Species> linkTemporarySpecies(List<Species> species); /** * Replace the {@code source} species by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java index e2d5e80..482f950 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java @@ -26,15 +26,18 @@ package fr.ifremer.tutti.persistence.service.referential; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonDao; import fr.ifremer.adagio.core.dao.referential.taxon.TaxonName; import fr.ifremer.adagio.core.dao.referential.taxon.TaxonNameExtendDao; import fr.ifremer.adagio.core.dao.referential.taxon.TaxonNameImpl; import fr.ifremer.adagio.core.dao.referential.taxon.TaxonRefVO; import fr.ifremer.adagio.core.dao.referential.transcribing.TranscribingItemTypeId; +import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; import org.apache.commons.lang3.StringUtils; import org.hibernate.type.IntegerType; +import org.hibernate.type.StringType; import org.nuiton.jaxx.application.ApplicationBusinessException; import org.springframework.cache.Cache; import org.springframework.dao.DataRetrievalFailureException; @@ -57,6 +60,9 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService @Resource(name = "taxonNameDao") protected TaxonNameExtendDao taxonNameDao; + @Resource(name = "referenceTaxonDao") + protected ReferenceTaxonDao referenceTaxonDao; + @Override public List<Species> getAllSpecies() { @@ -168,12 +174,36 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService } @Override - public Collection<Species> importTemporarySpecies(Collection<Species> species) { + public List<Species> addTemporarySpecies(List<Species> species) { + + List<Species> result = Lists.newArrayList(); + for (Species source : species) { + Species added = addTemporarySpecies(source); + result.add(added); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Species> updateTemporarySpecies(List<Species> species) { List<Species> result = Lists.newArrayList(); for (Species source : species) { - source = importTemporarySpecies(source); - result.add(source); + Species updated = updateTemporarySpecies(source); + result.add(updated); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Species> linkTemporarySpecies(List<Species> species) { + + List<Species> result = Lists.newArrayList(); + for (Species source : species) { + Species linked = linkTemporarySpecies(source); + result.add(linked); } return Collections.unmodifiableList(result); @@ -233,11 +263,11 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService } - protected Species importTemporarySpecies(Species source) { + protected Species addTemporarySpecies(Species source) { Preconditions.checkNotNull(source); Preconditions.checkNotNull(source.getName()); - Preconditions.checkArgument(source.getIdAsInt() == null || source.getIdAsInt() < 0); + Preconditions.checkArgument(source.getId() == null || Speciess.isTemporaryId(source.getIdAsInt())); TaxonRefVO taxonRefVO = null; if (source.getReferenceTaxonId() != null) { @@ -268,6 +298,52 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService } + protected Species updateTemporarySpecies(Species source) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkNotNull(source.getReferenceTaxonId()); + Preconditions.checkArgument(Speciess.isTemporaryId(source.getIdAsInt())); + + TaxonRefVO taxonRefVO = taxonNameDao.getTaxonNameReferent(source.getReferenceTaxonId()); + + TaxonName taxonName = load(TaxonNameImpl.class, taxonRefVO.getTaxonNameId()); + taxonName.setName(source.getName()); + taxonRefVO.setName(source.getName()); + taxonNameDao.update(taxonName); + + // update the source + Species result = loadSpecies(taxonRefVO); + result.setRefTaxCode(result.getExternalCode()); + + // Add to cache + Cache cache = cacheService.getCache("referentSpeciesById"); + cache.put(result.getIdAsInt(), result); + + return result; + + } + + protected Species linkTemporarySpecies(Species source) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkNotNull(source.getReferenceTaxonId()); + Preconditions.checkArgument(Speciess.isTemporaryId(source.getIdAsInt())); + + String taxonName =TemporaryDataHelper.TEMPORARY_NAME_PREFIX + source.getName(); + Object[] row = queryUnique( + "taxonNameReferenceTaxonId", + "taxonName", StringType.INSTANCE, taxonName); + + Integer referenceTaxonId = (Integer) row[0]; + Species result = getSpeciesByReferenceTaxonId(referenceTaxonId); + return result; + + } + protected Species loadSpecies(TaxonRefVO source) { Species target = Speciess.newSpecies(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java index 370fa8f..5472d8e 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java @@ -77,14 +77,35 @@ public interface VesselPersistenceService extends TuttiPersistenceServiceImpleme boolean isTemporaryVesselUsed(String code); /** - * Import given temporary vessels. + * Add temporary vessels. * - * @param vessels vessels to import - * @since 1.0 + * @param vessels vessels to add + * @return added vessels + * @since 3.14 */ @Transactional(readOnly = false) @CacheEvict(value = {"fishingVessels", "vesselByCode"}, allEntries = true) - Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels); + List<Vessel> addTemporaryVessels(List<Vessel> vessels); + + /** + * Update temporary vessels. + * + * @param vessels vessels to update + * @return updated vessels + * @since 3.14 + */ + @Transactional(readOnly = false) + @CacheEvict(value = {"fishingVessels", "vesselByCode"}, allEntries = true) + List<Vessel> updateTemporaryVessels(List<Vessel> vessels); + + /** + * Link temporary vessels. (Means get existing references using vessels natural ids). + * + * @param vessels vessels to link + * @return linked vessels + * @since 3.14 + */ + List<Vessel> linkTemporaryVessels(List<Vessel> vessels); /** * Replace the {@code source} vessel by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java index 82673d7..e77f8d8 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java @@ -27,6 +27,7 @@ package fr.ifremer.tutti.persistence.service.referential; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.adagio.core.dao.data.vessel.VesselExtendDao; +import fr.ifremer.adagio.core.dao.referential.Status; import fr.ifremer.adagio.core.dao.referential.StatusCode; import fr.ifremer.adagio.core.dao.referential.VesselTypeId; import fr.ifremer.adagio.core.dao.referential.location.LocationExtendDao; @@ -35,6 +36,7 @@ import fr.ifremer.adagio.core.dao.referential.location.LocationLevelId; import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.Vessels; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.type.DateType; @@ -83,7 +85,7 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS while (list.hasNext()) { Object[] source = list.next(); - Vessel target = loadVessel(source, true); + Vessel target = loadVessel(source); result.add(target); // Add to cache vesselByCodeCache.put(target.getId(), target); @@ -106,7 +108,7 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS while (list.hasNext()) { Object[] source = list.next(); - Vessel target = loadVessel(source, true); + Vessel target = loadVessel(source); target.setScientificVessel(false); result.add(target); @@ -126,13 +128,13 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS // Warning : return a list because more than one line could be found, // but 'order by' assume that the first one in the good row Iterator<Object[]> source = queryListWithStatus( - "vessel", + "vesselByCode", "vesselCode", StringType.INSTANCE, vesselCode, "refDate", DateType.INSTANCE, new Date() ); Vessel result; if (source.hasNext()) - result = loadVessel(source.next(), false); + result = loadVessel(source.next()); else result = null; return result; @@ -190,12 +192,8 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS } @Override - public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { + public List<Vessel> addTemporaryVessels(List<Vessel> vessels) { - List<Vessel> result = Lists.newArrayList(); - - fr.ifremer.adagio.core.dao.referential.Status status = - statusDao.load(StatusCode.TEMPORARY.getValue()); Integer countryLocationId = locationDao.getLocationIdByLabelAndLocationLevel( LocationLabel.FRANCE.getValue(), @@ -204,9 +202,40 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS throw new DataIntegrityViolationException("Default country location not found, with label=" + LocationLabel.FRANCE.getValue()); } + fr.ifremer.adagio.core.dao.referential.Status status = + statusDao.load(StatusCode.TEMPORARY.getValue()); + + List<Vessel> result = Lists.newArrayList(); + for (Vessel source : vessels) { + Vessel added = addTemporaryVessel(source, countryLocationId, status); + result.add(added); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Vessel> updateTemporaryVessels(List<Vessel> vessels) { + + fr.ifremer.adagio.core.dao.referential.Status status = + statusDao.load(StatusCode.TEMPORARY.getValue()); + + List<Vessel> result = Lists.newArrayList(); + for (Vessel source : vessels) { + Vessel updated = updateTemporaryVessel(source, status); + result.add(updated); + } + return Collections.unmodifiableList(result); + + } + + @Override + public List<Vessel> linkTemporaryVessels(List<Vessel> vessels) { + + List<Vessel> result = Lists.newArrayList(); for (Vessel source : vessels) { - source = importTemporaryVessel(source, countryLocationId, status); - result.add(source); + Vessel linked = linkTemporaryVessel(source); + result.add(linked); } return Collections.unmodifiableList(result); @@ -294,11 +323,12 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS } - protected Vessel importTemporaryVessel(Vessel source, Integer registrationLocationId, fr.ifremer.adagio.core.dao.referential.Status status) { + protected Vessel addTemporaryVessel(Vessel source, Integer registrationLocationId, fr.ifremer.adagio.core.dao.referential.Status status) { Preconditions.checkNotNull(source); Preconditions.checkNotNull(source.getName()); Preconditions.checkNotNull(source.getInternationalRegistrationCode()); + Preconditions.checkArgument(StringUtils.isBlank(source.getId()) || Vessels.isTemporaryId(source.getId())); Integer vesselTypeId; if (source.isScientificVessel()) { @@ -327,15 +357,56 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS } - protected Vessel loadVessel(Object[] source, boolean scientificVessel) { + protected Vessel updateTemporaryVessel(Vessel source, Status status) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkNotNull(source.getInternationalRegistrationCode()); + Preconditions.checkArgument(Vessels.isTemporaryId(source.getId())); + + // Fill the result bean + Vessel result = getVessel(source.getId()); + result.setName(source.getName()); + result.setRegistrationCode(source.getRegistrationCode()); + result.setInternationalRegistrationCode(source.getInternationalRegistrationCode()); + result.setScientificVessel(source.isScientificVessel()); + setStatus(status, result); + return result; + + } + + protected Vessel linkTemporaryVessel(Vessel source) { + + Preconditions.checkNotNull(source); + Preconditions.checkNotNull(source.getId()); + Preconditions.checkNotNull(source.getName()); + Preconditions.checkNotNull(source.getInternationalRegistrationCode()); + Preconditions.checkArgument(Vessels.isTemporaryId(source.getId())); + + // Warning : return a list because more than one line could be found, + // but 'order by' assume that the first one in the good row + Iterator<Object[]> row = queryListWithStatus( + "vesselByInternationalRegistrationCode", + "vesselInternationalRegistrationCode", StringType.INSTANCE, source.getInternationalRegistrationCode(), + "refDate", DateType.INSTANCE, new Date() + ); + Vessel result = row.hasNext() ? loadVessel(row.next()) : null; + return result; + + } + + protected Vessel loadVessel(Object[] source) { Vessel target = Vessels.newVessel(); target.setId((String) source[0]); target.setRegistrationCode((String) source[1]); target.setInternationalRegistrationCode((String) source[2]); target.setName((String) source[3]); + Integer vesselTypeId = (Integer) source[4]; + boolean scientificVessel = VesselTypeId.SCIENTIFIC_RESEARCH_VESSEL.getValue().equals(vesselTypeId); target.setScientificVessel(scientificVessel); - setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[4], target); + setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[5], target); return target; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 90316a170b7b17a2f629603b972f456dc1f98f6d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 13:51:16 2015 +0100 fix some tests --- .../service/referential/GearPersistenceServiceWriteTest.java | 4 ++-- .../service/referential/PersonPersistenceServiceWriteTest.java | 4 ++-- .../service/referential/SpeciesPersistenceServiceWriteTest.java | 4 ++-- .../service/referential/VesselPersistenceServiceWriteTest.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java index 2de94cf..425ecad 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java @@ -52,7 +52,7 @@ public class GearPersistenceServiceWriteTest extends ReferentialPersistenceServi } @Test - public void importGear() { + public void testAddTemporaryGears() { List<Gear> gears = Lists.newArrayList(); // scientific gear @@ -76,7 +76,7 @@ public class GearPersistenceServiceWriteTest extends ReferentialPersistenceServi gears.add(g2); - Collection<Gear> gearList = service.importTemporaryGear(gears); + Collection<Gear> gearList = service.addTemporaryGears(gears); List<Gear> allScientificGear = service.getAllScientificGear(); List<Gear> allFishingGear = service.getAllFishingGear(); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java index 7f9f140..da3982d 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java @@ -52,7 +52,7 @@ public class PersonPersistenceServiceWriteTest extends ReferentialPersistenceSer } @Test - public void importPerson() { + public void testAddTemporaryPersons() { List<Person> persons = Lists.newArrayList(); long timestamp1 = System.nanoTime(); @@ -75,7 +75,7 @@ public class PersonPersistenceServiceWriteTest extends ReferentialPersistenceSer p2.setDepartment("Don't care" + timestamp2); persons.add(p2); - Collection<Person> personList = service.importTemporaryPerson(persons); + Collection<Person> personList = service.addTemporaryPersons(persons); Assert.assertNotNull(personList); Assert.assertEquals(2, personList.size()); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java index fb4846e..445e6cf 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java @@ -52,7 +52,7 @@ public class SpeciesPersistenceServiceWriteTest extends ReferentialPersistenceSe } @Test - public void importSpecies() { + public void testAddTemporarySpecies() { List<Species> species = Lists.newArrayList(); long timestamp1 = System.nanoTime(); @@ -76,7 +76,7 @@ public class SpeciesPersistenceServiceWriteTest extends ReferentialPersistenceSe Assert.assertNull(service.getSpeciesByReferenceTaxonId(sp1.getReferenceTaxonId())); //Assert.assertNull(service.getSpecies(sp2.getId())); - Collection<Species> speciesList = service.importTemporarySpecies(species); + Collection<Species> speciesList = service.addTemporarySpecies(species); Assert.assertNotNull(speciesList); Assert.assertEquals(2, speciesList.size()); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java index 5ba2705..f355a4c 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java @@ -52,7 +52,7 @@ public class VesselPersistenceServiceWriteTest extends ReferentialPersistenceSer } @Test - public void importVessel() { + public void testAddTemporaryVessels() { List<Vessel> vessels = Lists.newArrayList(); // scientificVessel @@ -76,7 +76,7 @@ public class VesselPersistenceServiceWriteTest extends ReferentialPersistenceSer Assert.assertNull(service.getVessel(v1.getId())); Assert.assertNull(service.getVessel(v2.getId())); - Collection<Vessel> vesselList = service.importTemporaryVessel(vessels); + Collection<Vessel> vesselList = service.addTemporaryVessels(vessels); Assert.assertNotNull(vesselList); Assert.assertEquals(2, vesselList.size()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit fb06996978cd37ecb364a1929335ece4ddbf1b3a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 14:12:41 2015 +0100 fix some lost code :( --- .../referential/GearPersistenceServiceImpl.java | 9 +- .../referential/SpeciesPersistenceServiceImpl.java | 2 +- .../src/main/resources/queries-failsafe.hbm.xml | 103 +++++++++++++++++++-- 3 files changed, 102 insertions(+), 12 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java index 0c9d64b..91191b4 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java @@ -33,6 +33,7 @@ import fr.ifremer.adagio.core.dao.referential.gear.GearClassificationId; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Gears; import org.hibernate.type.IntegerType; +import org.hibernate.type.StringType; import org.nuiton.jaxx.application.ApplicationBusinessException; import org.springframework.stereotype.Service; @@ -89,7 +90,7 @@ public class GearPersistenceServiceImpl extends ReferentialPersistenceServiceSup @Override public Gear getGear(Integer gearId) { - Object[] source = queryUnique( + Object[] source = queryUniqueWithStatus( "gearById", "gearId", IntegerType.INSTANCE, gearId); @@ -293,9 +294,9 @@ public class GearPersistenceServiceImpl extends ReferentialPersistenceServiceSup Preconditions.checkArgument(Gears.isTemporaryId(source.getIdAsInt())); - Object[] row = queryUnique( - "gearById", - "gearId", IntegerType.INSTANCE, source.getName()); + Object[] row = queryUniqueWithStatus( + "gearByName", + "gearName", StringType.INSTANCE, source.getName()); Gear result = row == null ? null : loadGear(row); return result; diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java index 482f950..f41db68 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java @@ -335,7 +335,7 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService String taxonName =TemporaryDataHelper.TEMPORARY_NAME_PREFIX + source.getName(); Object[] row = queryUnique( - "taxonNameReferenceTaxonId", + "taxonNameReferenceTaxonIdByName", "taxonName", StringType.INSTANCE, taxonName); Integer referenceTaxonId = (Integer) row[0]; diff --git a/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml b/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml index 80cb2b4..d4aefb1 100644 --- a/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml +++ b/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml @@ -1178,8 +1178,8 @@ <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> - <!-- [REF-02-1] Get a vessel --> - <query cacheable="true" name="vessel"> + <!-- [REF-02-1] Get a vessel by his code --> + <query cacheable="true" name="vesselByCode"> <![CDATA[ SELECT v.code AS vesselCode, @@ -1205,6 +1205,33 @@ <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> + <!-- [REF-02-2] Get a vessel by his internationalRegistrationCode --> + <query cacheable="true" name="vesselByInternationalRegistrationCode"> + <![CDATA[ + SELECT + v.code AS vesselCode, + vrp.registrationCode AS nationalRegistrationCode, + vrp.internationalRegistrationCode as internationalRegistrationCode, + vf.name AS vesselName, + v.status AS status + FROM + VesselImpl v + INNER JOIN v.vesselRegistrationPeriods AS vrp + LEFT OUTER JOIN v.vesselFeatures AS vf + WHERE + v.internationalRegistrationCode = :vesselInternationalRegistrationCode + AND v.status.code IN (:statusValidCode, :statusTemporaryCode) + AND NOT(coalesce(vrp.endDateTime, '2999-12-31 00:00:00') < coalesce(:refDate,sysdate) + OR vrp.vesselRegistrationPeriodPk.startDateTime > coalesce(:refDate,sysdate) + ) + ORDER BY vf.startDateTime DESC + ]]> + <query-param name="vesselInternationalRegistrationCode" type="java.lang.String"/> + <query-param name="refDate" type="java.util.Date"/> + <query-param name="statusValidCode" type="java.lang.String"/> + <query-param name="statusTemporaryCode" type="java.lang.String"/> + </query> + <!-- [REF-03] Get all gears for a given gearType --> <query cacheable="true" name="allGears"> <![CDATA[ @@ -1224,8 +1251,8 @@ <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> - <!-- [REF-03-1] Get a gear --> - <query cacheable="true" name="gear"> + <!-- [REF-03-1] Get a gear by his id --> + <query cacheable="true" name="gearById"> <![CDATA[ SELECT g.id, @@ -1236,8 +1263,30 @@ FROM GearImpl g WHERE g.id = :gearId + AND g.status.code IN (:statusValidCode, :statusTemporaryCode) ]]> <query-param name="gearId" type="java.lang.Integer"/> + <query-param name="statusValidCode" type="java.lang.String"/> + <query-param name="statusTemporaryCode" type="java.lang.String"/> + </query> + + <!-- [REF-03-1] Get a gear by his name --> + <query cacheable="true" name="gearByName"> + <![CDATA[ + SELECT + g.id, + g.label, + g.name, + g.gearClassification, + g.status AS status + FROM GearImpl g + WHERE + g.name = :gearName + AND g.status.code IN (:statusValidCode, :statusTemporaryCode) + ]]> + <query-param name="gearName" type="java.lang.String"/> + <query-param name="statusValidCode" type="java.lang.String"/> + <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> <!-- [REF-04] Get all persons --> @@ -1269,8 +1318,8 @@ <query-param name="departementPrefixCode" type="java.lang.String"/> </query> - <!-- [REF-04-1] Get one person --> - <query cacheable="true" name="person"> + <!-- [REF-04-1] Get one person by his id --> + <query cacheable="true" name="personById"> <![CDATA[ SELECT DISTINCT p.id, @@ -1279,9 +1328,49 @@ p.department.code, p.status FROM PersonImpl p - WHERE p.id = :personId + WHERE + p.id = :personId + AND p.status.code IN (:statusValidCode, :statusTemporaryCode) ]]> <query-param name="personId" type="java.lang.Integer"/> + <query-param name="statusValidCode" type="java.lang.String"/> + <query-param name="statusTemporaryCode" type="java.lang.String"/> + </query> + + <!-- [REF-04-2] Get one person by his full name --> + <query cacheable="true" name="personByFullName"> + <![CDATA[ + SELECT DISTINCT + p.id, + p.lastname, + p.firstname, + p.department.code, + p.status + FROM PersonImpl p + WHERE + p.firstname = :personFirstName + p.lastname = :personLastName + AND p.status.code IN (:statusValidCode, :statusTemporaryCode) + ]]> + <query-param name="personFirstName" type="java.lang.String"/> + <query-param name="personLastName" type="java.lang.String"/> + <query-param name="statusValidCode" type="java.lang.String"/> + <query-param name="statusTemporaryCode" type="java.lang.String"/> + </query> + + <!-- [REF-05-0] Get a taxon reference id by his name --> + <query cacheable="true" name="taxonNameReferenceTaxonIdByName"> + <![CDATA[ + SELECT + tn.referenceTaxon.id + FROM + TaxonNameImpl tn + WHERE + tn.name = :taxonName + AND tn.isReferent = true + AND tn.isObsolete = false + ]]> + <query-param name="taxonName" type="java.lang.String"/> </query> <!-- ===================================================================== --> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 5ff652aa3a3825cd53d77e7bb8294bc86dba46ca Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 14:29:32 2015 +0100 fix queries --- tutti-persistence/src/main/resources/queries-failsafe.hbm.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml b/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml index d4aefb1..0367f32 100644 --- a/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml +++ b/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml @@ -1158,6 +1158,7 @@ vrp.registrationCode AS nationalRegistrationCode, vrp.internationalRegistrationCode as internationalRegistrationCode, vf.name AS vesselName, + v.vesselType.id AS vesselTypeId, v.status AS status FROM VesselImpl v @@ -1186,6 +1187,7 @@ vrp.registrationCode AS nationalRegistrationCode, vrp.internationalRegistrationCode as internationalRegistrationCode, vf.name AS vesselName, + v.vesselType.id AS vesselTypeId, v.status AS status FROM VesselImpl v @@ -1213,13 +1215,14 @@ vrp.registrationCode AS nationalRegistrationCode, vrp.internationalRegistrationCode as internationalRegistrationCode, vf.name AS vesselName, + v.vesselType.id AS vesselTypeId, v.status AS status FROM VesselImpl v INNER JOIN v.vesselRegistrationPeriods AS vrp LEFT OUTER JOIN v.vesselFeatures AS vf WHERE - v.internationalRegistrationCode = :vesselInternationalRegistrationCode + vrp.internationalRegistrationCode = :vesselInternationalRegistrationCode AND v.status.code IN (:statusValidCode, :statusTemporaryCode) AND NOT(coalesce(vrp.endDateTime, '2999-12-31 00:00:00') < coalesce(:refDate,sysdate) OR vrp.vesselRegistrationPeriodPk.startDateTime > coalesce(:refDate,sysdate) @@ -1349,7 +1352,7 @@ FROM PersonImpl p WHERE p.firstname = :personFirstName - p.lastname = :personLastName + AND p.lastname = :personLastName AND p.status.code IN (:statusValidCode, :statusTemporaryCode) ]]> <query-param name="personFirstName" type="java.lang.String"/> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 0a96398164ff57d06f5ba95e132e119ea57ed266 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 14:44:28 2015 +0100 revue des imports de référentiels --- .../ifremer/tutti/service/PdfGeneratorService.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 56 ++++++++++++++--- .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 10 ++++ .../referential/ReferentialImportRequest.java | 21 +++++-- .../referential/ReferentialImportResult.java | 29 ++++----- .../ReferentialTemporaryGearService.java | 19 ++++-- .../ReferentialTemporaryPersonService.java | 22 ++++--- .../ReferentialTemporarySpeciesService.java | 20 +++++-- .../ReferentialTemporaryVesselService.java | 11 ++-- .../consumer/CsvConsumerForTemporaryGear.java | 69 ++++++++++----------- .../consumer/CsvConsumerForTemporaryPerson.java | 69 +++++++++++---------- .../consumer/CsvConsumerForTemporarySpecies.java | 68 +++++++++++---------- .../consumer/CsvConsumerForTemporaryVessel.java | 70 +++++++++++----------- .../tutti/service/referential/csv/GearModel.java | 15 ++++- .../tutti/service/referential/csv/PersonModel.java | 15 ++++- .../service/referential/csv/SpeciesModel.java | 15 ++++- .../csv/TemporaryReferentialEntityIdParser.java | 17 ++++-- .../tutti/service/referential/csv/VesselModel.java | 26 ++------ .../resources/i18n/tutti-service_en_GB.properties | 54 ++++++++++------- .../resources/i18n/tutti-service_fr_FR.properties | 67 +++++++++++---------- .../pupitri/PupitriImportServiceAno5079Test.java | 2 +- 21 files changed, 395 insertions(+), 282 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PdfGeneratorService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PdfGeneratorService.java index 9881944..fb4afb9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PdfGeneratorService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PdfGeneratorService.java @@ -100,7 +100,7 @@ public class PdfGeneratorService extends AbstractTuttiService { } } catch (Exception ex) { - throw new ApplicationTechnicalException(t("tutti.service.exportPdf.error"), ex); + throw new ApplicationTechnicalException(t("tutti.service.exportPdf.error", targetFile), ex); } } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 0b39493..e04a221 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1003,23 +1003,63 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public Collection<Species> importTemporarySpecies(Collection<Species> species) { - return driver.importTemporarySpecies(species); + public List<Gear> addTemporaryGears(List<Gear> gears) { + return driver.addTemporaryGears(gears); } @Override - public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { - return driver.importTemporaryVessel(vessels); + public List<Person> addTemporaryPersons(List<Person> persons) { + return driver.addTemporaryPersons(persons); } @Override - public Collection<Person> importTemporaryPerson(Collection<Person> persons) { - return driver.importTemporaryPerson(persons); + public List<Species> addTemporarySpecies(List<Species> species) { + return driver.addTemporarySpecies(species); } @Override - public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { - return driver.importTemporaryGear(gears); + public List<Vessel> addTemporaryVessels(List<Vessel> vessels) { + return driver.addTemporaryVessels(vessels); + } + + @Override + public List<Gear> updateTemporaryGears(List<Gear> gears) { + return driver.updateTemporaryGears(gears); + } + + @Override + public List<Person> updateTemporaryPersons(List<Person> persons) { + return driver.updateTemporaryPersons(persons); + } + + @Override + public List<Species> updateTemporarySpecies(List<Species> species) { + return driver.updateTemporarySpecies(species); + } + + @Override + public List<Vessel> updateTemporaryVessels(List<Vessel> vessels) { + return driver.updateTemporaryVessels(vessels); + } + + @Override + public List<Gear> linkTemporaryGears(List<Gear> gears) { + return driver.linkTemporaryGears(gears); + } + + @Override + public List<Person> linkTemporaryPersons(List<Person> persons) { + return driver.linkTemporaryPersons(persons); + } + + @Override + public List<Species> linkTemporarySpecies(List<Species> specieses) { + return driver.linkTemporarySpecies(specieses); + } + + @Override + public List<Vessel> linkTemporaryVessels(List<Vessel> vessels) { + return driver.linkTemporaryVessels(vessels); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index 27916d2..666e775 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -8,6 +8,7 @@ import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Import2; import org.nuiton.csv.ImportRow; import org.nuiton.csv.ImportableColumn; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.BufferedReader; @@ -76,6 +77,15 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> } + protected void reportError(ImportRow<O> row) { + if (!row.isValid()) { + + String message = rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + } + public static class CheckImportErrorInfo<E> extends AbstractImportErrorInfo<E> { public CheckImportErrorInfo(ImportRow<E> row, ImportableColumn<E, Object> field, Throwable cause) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java index e6443f4..83225f9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java @@ -31,7 +31,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @@ -48,6 +47,8 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { private final List<E> toUpdate = Lists.newArrayList(); + private final List<E> toLink = Lists.newArrayList(); + private final List<K> toDelete = Lists.newArrayList(); private final Map<K, E> existingEntitiesById; @@ -69,6 +70,10 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { toUpdate.add(entityToUpdate); } + public void addEntityToLink(E entityToLink) { + toLink.add(entityToLink); + } + public void addIdToDelete(K entityToDelete) { toDelete.add(entityToDelete); } @@ -81,22 +86,30 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { return !toUpdate.isEmpty(); } + public boolean withEntitiesToLink() { + return !toLink.isEmpty(); + } + public boolean withEntitiesToDelete() { return !toDelete.isEmpty(); } - public Collection<K> getIdsToDelete() { + public List<K> getIdsToDelete() { return Lists.newArrayList(toDelete); } - public Collection<E> getEntitiesToAdd() { + public List<E> getEntitiesToAdd() { return Lists.newArrayList(toAdd); } - public Collection<E> getEntitiesToUpdate() { + public List<E> getEntitiesToUpdate() { return Lists.newArrayList(toUpdate); } + public List<E> getEntitiesToLink() { + return Lists.newArrayList(toLink); + } + public E getExistingEntityById(K id) { return existingEntitiesById.get(id); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java index 81bb617..f81d7af 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java @@ -27,7 +27,6 @@ package fr.ifremer.tutti.service.referential; import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import java.util.ArrayList; -import java.util.Collection; import java.util.List; /** @@ -40,21 +39,15 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { protected List<E> refUpdated = new ArrayList<>(); + protected List<E> refLinked = new ArrayList<>(); + protected int nbRefDeleted = 0; public List<E> getRefAdded() { return refAdded; } - public void setRefAdded(List<E> refAdded) { - this.refAdded = refAdded; - } - - public void addRefAdded(E ref) { - refAdded.add(ref); - } - - public void addAllRefsAdded(Collection<E> refs) { + public void addAllRefsAdded(List<E> refs) { refAdded.addAll(refs); } @@ -66,20 +59,20 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { return refUpdated; } - public void setRefUpdated(List<E> refUpdated) { - this.refUpdated = refUpdated; + public void addAllRefsUpdated(List<E> refs) { + refUpdated.addAll(refs); } - public void addRefUpdated(E ref) { - refUpdated.add(ref); + public int getNbRefUpdated() { + return refUpdated.size(); } - public void addAllRefsUpdated(Collection<E> refs) { - refUpdated.addAll(refs); + public void addAllRefsLinked(List<E> refs) { + refLinked.addAll(refs); } - public int getNbRefUpdated() { - return refUpdated.size(); + public int getNbRefLinked() { + return refLinked.size(); } public int getNbRefDeleted() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index 86f7537..e5849ba 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -42,7 +42,6 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.util.Collection; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -110,7 +109,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { if (requestResult.withEntitiesToDelete()) { - Collection<Integer> idsToDelete = requestResult.getIdsToDelete(); + List<Integer> idsToDelete = requestResult.getIdsToDelete(); persistenceService.deleteTemporaryGears(idsToDelete); result.setNbRefDeleted(idsToDelete.size()); @@ -118,20 +117,28 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { if (requestResult.withEntitiesToAdd()) { - Collection<Gear> entitiesToAdd = requestResult.getEntitiesToAdd(); - Collection<Gear> entitiesAdded = persistenceService.importTemporaryGear(entitiesToAdd); + List<Gear> entitiesToAdd = requestResult.getEntitiesToAdd(); + List<Gear> entitiesAdded = persistenceService.addTemporaryGears(entitiesToAdd); result.addAllRefsAdded(entitiesAdded); } if (requestResult.withEntitiesToUpdate()) { - Collection<Gear> entitiesToUpdate = requestResult.getEntitiesToUpdate(); - Collection<Gear> entitiesUpdated = persistenceService.importTemporaryGear(entitiesToUpdate); + List<Gear> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + List<Gear> entitiesUpdated = persistenceService.updateTemporaryGears(entitiesToUpdate); result.addAllRefsUpdated(entitiesUpdated); } + if (requestResult.withEntitiesToLink()) { + + List<Gear> entitiesToLink = requestResult.getEntitiesToLink(); + List<Gear> entitiesLinked = persistenceService.linkTemporaryGears(entitiesToLink); + result.addAllRefsLinked(entitiesLinked); + + } + return result; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index 6e4984b..834d9c1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -42,7 +42,6 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.util.Collection; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -109,8 +108,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { if (requestResult.withEntitiesToDelete()) { - Collection<Integer> idsToDelete = requestResult.getIdsToDelete(); - + List<Integer> idsToDelete = requestResult.getIdsToDelete(); persistenceService.deleteTemporaryPersons(idsToDelete); result.setNbRefDeleted(idsToDelete.size()); @@ -118,20 +116,28 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { if (requestResult.withEntitiesToAdd()) { - Collection<Person> entitiesToAdd = requestResult.getEntitiesToAdd(); - - Collection<Person> entitiesAdded = persistenceService.importTemporaryPerson(entitiesToAdd); + List<Person> entitiesToAdd = requestResult.getEntitiesToAdd(); + List<Person> entitiesAdded = persistenceService.addTemporaryPersons(entitiesToAdd); result.addAllRefsAdded(entitiesAdded); + } if (requestResult.withEntitiesToUpdate()) { - Collection<Person> entitiesToUpdate = requestResult.getEntitiesToUpdate(); - Collection<Person> entitiesUpdated = persistenceService.importTemporaryPerson(entitiesToUpdate); + List<Person> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + List<Person> entitiesUpdated = persistenceService.updateTemporaryPersons(entitiesToUpdate); result.addAllRefsUpdated(entitiesUpdated); } + if (requestResult.withEntitiesToLink()) { + + List<Person> entitiesToLink = requestResult.getEntitiesToLink(); + List<Person> entitiesLinked = persistenceService.linkTemporaryPersons(entitiesToLink); + result.addAllRefsLinked(entitiesLinked); + + } + return result; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index f1e97fa..8e15e5b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -42,7 +42,6 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.util.Collection; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -108,7 +107,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { if (requestResult.withEntitiesToDelete()) { - Collection<Integer> idsToDelete = requestResult.getIdsToDelete(); + List<Integer> idsToDelete = requestResult.getIdsToDelete(); persistenceService.deleteTemporarySpecies(idsToDelete); result.setNbRefDeleted(idsToDelete.size()); @@ -116,18 +115,27 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { if (requestResult.withEntitiesToAdd()) { - Collection<Species> entitiesToAdd = requestResult.getEntitiesToAdd(); - Collection<Species> entitiesAdded = persistenceService.importTemporarySpecies(entitiesToAdd); + List<Species> entitiesToAdd = requestResult.getEntitiesToAdd(); + List<Species> entitiesAdded = persistenceService.addTemporarySpecies(entitiesToAdd); result.addAllRefsAdded(entitiesAdded); } if (requestResult.withEntitiesToUpdate()) { - Collection<Species> entitiesToUpdate = requestResult.getEntitiesToUpdate(); - Collection<Species> entitiesUpdated = persistenceService.importTemporarySpecies(entitiesToUpdate); + List<Species> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + List<Species> entitiesUpdated = persistenceService.updateTemporarySpecies(entitiesToUpdate); result.addAllRefsUpdated(entitiesUpdated); } + + if (requestResult.withEntitiesToLink()) { + + List<Species> entitiesToLink = requestResult.getEntitiesToLink(); + List<Species> entitiesLinked = persistenceService.linkTemporarySpecies(entitiesToLink); + result.addAllRefsLinked(entitiesLinked); + + } + return result; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index 7da7324..87694e4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -42,7 +42,6 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; -import java.util.Collection; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -108,7 +107,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { if (requestResult.withEntitiesToDelete()) { - Collection<String> idsToDelete = requestResult.getIdsToDelete(); + List<String> idsToDelete = requestResult.getIdsToDelete(); persistenceService.deleteTemporaryVessels(idsToDelete); result.setNbRefDeleted(idsToDelete.size()); @@ -116,15 +115,15 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { if (requestResult.withEntitiesToAdd()) { - Collection<Vessel> entitiesToAdd = requestResult.getEntitiesToAdd(); - Collection<Vessel> entitiesAdded = persistenceService.importTemporaryVessel(entitiesToAdd); + List<Vessel> entitiesToAdd = requestResult.getEntitiesToAdd(); + List<Vessel> entitiesAdded = persistenceService.addTemporaryVessels(entitiesToAdd); result.addAllRefsAdded(entitiesAdded); } if (requestResult.withEntitiesToUpdate()) { - Collection<Vessel> entitiesToUpdate = requestResult.getEntitiesToUpdate(); - Collection<Vessel> entitiesUpdated = persistenceService.importTemporaryVessel(entitiesToUpdate); + List<Vessel> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + List<Vessel> entitiesUpdated = persistenceService.updateTemporaryVessels(entitiesToUpdate); result.addAllRefsUpdated(entitiesUpdated); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java index b2cb522..a738cd6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java @@ -1,6 +1,7 @@ package fr.ifremer.tutti.service.referential.consumer; import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; @@ -38,12 +39,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> DecoratorService decoratorService, ReferentialImportRequest<Gear, Integer> requestResult) { - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); GearRow bean = row.getBean(); @@ -62,7 +58,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> Gear gear = requestResult.getExistingEntityById(id); if (gear == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.notExistingId", id)); } if (delete) { @@ -82,44 +78,49 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> public void checkRowForGenericFormatImport(ImportRow<GearRow> row, ReferentialImportRequest<Gear, Integer> requestResult) { - if (!row.isValid()) { + GearRow bean = row.getBean(); + String name = bean.getName(); - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); + if (row.isValid()) { - } + Integer id = bean.getIdAsInt(); - GearRow bean = row.getBean(); + if (id == null) { - Integer id = bean.getIdAsInt(); + // need an id. This id will be used in generic format import (but won't be necessary the one in db) + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.noId"))); - if (id != null) { + } else if (!Gears.isTemporaryId(id)) { - // can't do other thing than an add import - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.idNotTemporary", id))); - } + } - String name = bean.getName(); + if (StringUtils.isBlank(name)) { + + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.noName"))); + + } - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); } - if (!requestResult.addExistingNaturalId(name)) { + reportError(row); + + Gear entity = bean.toEntity(); + boolean toAdd = requestResult.addExistingNaturalId(name); + if (toAdd) { - // already exists do not reimport it - if (log.isWarnEnabled()) { - log.warn("Won't reimport existing gear with name: " + name); + if (log.isInfoEnabled()) { + log.info("Will add gear with name: " + name); } + requestResult.addEntityToAdd(entity); } else { if (log.isInfoEnabled()) { - log.info("Will import gear with name: " + name); + log.info("Will link gear with name: " + name); } - - requestResult.addEntityToAdd(bean.toEntity()); + requestResult.addEntityToLink(entity); } @@ -131,19 +132,19 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> boolean delete = BooleanUtils.isTrue(bean.getToDelete()); if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.cannotDeleteWithoutId")); } if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.noName")); } if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.existingName", name)); } if (log.isInfoEnabled()) { - log.info("Will import gear with name: " + name); + log.info("Will add gear with name: " + name); } requestResult.addEntityToAdd(bean.toEntity()); @@ -160,7 +161,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> if (persistenceService.isTemporaryGearUsed(id)) { String gearRef = id + " : " + decoratorService.getDecoratorByType(Gear.class).toString(gear); - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.used.error", gearRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.used", gearRef)); } requestResult.addIdToDelete(id); @@ -180,11 +181,11 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> String name = bean.getName(); if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.noName.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.noName", id)); } if (!name.equals(gear.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.existingName", name)); } if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java index cc51557..f0f9619 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java @@ -1,6 +1,7 @@ package fr.ifremer.tutti.service.referential.consumer; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Persons; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; @@ -38,12 +39,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person DecoratorService decoratorService, ReferentialImportRequest<Person, Integer> requestResult) { - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); PersonRow bean = row.getBean(); @@ -62,7 +58,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person Person person = requestResult.getExistingEntityById(id); if (person == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.notExistingId", id)); } if (delete) { @@ -82,45 +78,48 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person public void checkRowForGenericFormatImport(ImportRow<PersonRow> row, ReferentialImportRequest<Person, Integer> requestResult) { - if (!row.isValid()) { + PersonRow bean = row.getBean(); + String name = bean.getFullName(); - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); + if (row.isValid()) { - } + Integer id = bean.getIdAsInt(); - PersonRow bean = row.getBean(); + if (id == null) { - Integer id = bean.getIdAsInt(); + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.person.error.noId"))); - if (id != null) { + } else if (!Persons.isTemporaryId(id)) { - // can't do other thing than an add import - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.person.error.idNotTemporary", id))); - } + } - String name = bean.getFullName(); + if (StringUtils.isBlank(name)) { + + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.person.error.noName"))); + + } - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); } - if (!requestResult.addExistingNaturalId(name)) { + reportError(row); + + Person entity = bean.toEntity(); + boolean toAdd = requestResult.addExistingNaturalId(name); + if (toAdd) { - // already exists do not reimport it - if (log.isWarnEnabled()) { - log.warn("Won't reimport existing person with name: " + name); + if (log.isInfoEnabled()) { + log.info("Will add person with name: " + name); } + requestResult.addEntityToAdd(entity); } else { if (log.isInfoEnabled()) { - log.info("Will import person with name: " + name); + log.info("Will link person with name: " + name); } - - requestResult.addEntityToAdd(bean.toEntity()); - + requestResult.addEntityToLink(entity); } } @@ -131,19 +130,19 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person boolean delete = BooleanUtils.isTrue(bean.getToDelete()); if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.cannotDeleteWithoutId")); } if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.noName")); } if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.existingName", name)); } if (log.isInfoEnabled()) { - log.info("Will import person with name: " + name); + log.info("Will add person with name: " + name); } requestResult.addEntityToAdd(bean.toEntity()); @@ -160,7 +159,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person if (persistenceService.isTemporaryPersonUsed(id)) { String personRef = id + " : " + decoratorService.getDecoratorByType(Person.class).toString(person); - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.used", personRef)); } if (log.isInfoEnabled()) { @@ -178,11 +177,11 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person String name = bean.getFullName(); if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.noName.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.noName", id)); } if (!name.equals(person.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.existingName", name)); } if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index fc5cb07..60fa0b1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -1,6 +1,7 @@ package fr.ifremer.tutti.service.referential.consumer; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; @@ -38,12 +39,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec DecoratorService decoratorService, ReferentialImportRequest<Species, Integer> requestResult) { - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); SpeciesRow bean = row.getBean(); @@ -62,7 +58,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec Species species = requestResult.getExistingEntityById(id); if (species == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.notExistingId", id)); } if (delete) { @@ -82,42 +78,48 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec public void checkRowForGenericFormatImport(ImportRow<SpeciesRow> row, ReferentialImportRequest<Species, Integer> requestResult) { - if (!row.isValid()) { + SpeciesRow bean = row.getBean(); + String name = bean.getName(); - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); + if (row.isValid()) { - } + Integer id = bean.getIdAsInt(); - SpeciesRow bean = row.getBean(); + if (id == null) { - Integer id = bean.getIdAsInt(); + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.species.error.noId"))); - if (id != null) { + } else if (!Speciess.isTemporaryId(id)) { - // can't do other thing than an add import - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport", id)); - } + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.species.error.idNotTemporary", id))); - String name = bean.getName(); + } + + if (StringUtils.isBlank(name)) { + + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.species.error.noName"))); + + } - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); } - if (!requestResult.addExistingNaturalId(name)) { + reportError(row); - // already exists do not reimport it - if (log.isWarnEnabled()) { - log.warn("Won't reimport existing species with name: " + name); + Species entity = bean.toEntity(null); + boolean toAdd = requestResult.addExistingNaturalId(name); + if (toAdd) { + + if (log.isInfoEnabled()) { + log.info("Will add gear with name: " + name); } + requestResult.addEntityToAdd(entity); } else { if (log.isInfoEnabled()) { - log.info("Will import species with name: " + name); + log.info("Will link gear with name: " + name); } - requestResult.addEntityToAdd(bean.toEntity(null)); + requestResult.addEntityToLink(entity); } @@ -129,19 +131,19 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec boolean delete = BooleanUtils.isTrue(bean.getToDelete()); if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.cannotDeleteWithoutId")); } if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.noName")); } if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.existingName", name)); } if (log.isInfoEnabled()) { - log.info("Will delete species with name: " + name); + log.info("Will add species with name: " + name); } requestResult.addEntityToAdd(bean.toEntity(null)); @@ -160,7 +162,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec if (persistenceService.isTemporarySpeciesUsed(referenceTaxonId)) { String speciesRef = id + " : " + decoratorService.getDecoratorByType(Species.class, DecoratorService.WITH_SURVEY_CODE).toString(species); - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.used", speciesRef)); } if (log.isInfoEnabled()) { @@ -179,11 +181,11 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec Integer referenceTaxonId = species.getReferenceTaxonId(); if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.noName.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.noName", id)); } if (!species.getName().equals(name) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.existingName", name)); } if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java index aa0d7a7..1dfcd5b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java @@ -1,6 +1,7 @@ package fr.ifremer.tutti.service.referential.consumer; import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; @@ -38,19 +39,14 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel DecoratorService decoratorService, ReferentialImportRequest<Vessel, String> requestResult) { - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); VesselRow bean = row.getBean(); String id = bean.getId(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - if (id == null) { + if (StringUtils.isBlank(id)) { // Ajout checkAdd(bean, requestResult); @@ -63,7 +59,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel if (vessel == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.notExistingId", id)); } if (delete) { @@ -83,44 +79,48 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel public void checkRowForGenericFormatImport(ImportRow<VesselRow> row, ReferentialImportRequest<Vessel, String> requestResult) { - if (!row.isValid()) { + VesselRow bean = row.getBean(); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); + if (row.isValid()) { - } + String id = bean.getId(); - VesselRow bean = row.getBean(); + if (id == null) { - Integer id = bean.getIdAsInt(); + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.noId"))); - if (id != null) { + } else if (!Vessels.isTemporaryId(id)) { - // can't do other thing than an add import - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.idNotTemporary", id))); - } + } - String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + if (StringUtils.isBlank(internationalRegistrationCode)) { + + addCheckError(row, new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.noRegistrationCode"))); + + } - if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); } - if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { + reportError(row); + + Vessel entity = bean.toEntity(); + boolean toAdd = requestResult.addExistingNaturalId(internationalRegistrationCode); + if (toAdd) { - // already exists do not reimport it - if (log.isWarnEnabled()) { - log.warn("Won't reimport existing vessel with internationalRegistrationCode: " + internationalRegistrationCode); + if (log.isInfoEnabled()) { + log.info("Will add vessel with internationalRegistrationCode: " + internationalRegistrationCode); } + requestResult.addEntityToAdd(entity); } else { if (log.isInfoEnabled()) { - log.info("Will import vessel with internationalRegistrationCode: " + internationalRegistrationCode); + log.info("Will link vessel with internationalRegistrationCode: " + internationalRegistrationCode); } - - requestResult.addEntityToAdd(bean.toEntity()); + requestResult.addEntityToLink(entity); } @@ -132,19 +132,19 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel boolean delete = BooleanUtils.isTrue(bean.getToDelete()); if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.cannotDeleteWithoutId")); } if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.noRegistrationCode")); } if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.existingRegistrationCode", internationalRegistrationCode)); } if (log.isInfoEnabled()) { - log.info("Will import vessel with internationalRegistrationCode: " + internationalRegistrationCode); + log.info("Will add vessel with internationalRegistrationCode: " + internationalRegistrationCode); } requestResult.addEntityToAdd(bean.toEntity()); @@ -163,7 +163,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel if (persistenceService.isTemporaryVesselUsed(id)) { String vesselRef = id + " :" + decoratorService.getDecoratorByType(Vessel.class).toString(vessel); - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.error.vessel.used", vesselRef)); } if (log.isInfoEnabled()) { @@ -181,11 +181,11 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel String internationalRegistrationCode = bean.getInternationalRegistrationCode(); if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.noRegistrationCode", id)); } if (!internationalRegistrationCode.equals(vessel.getName()) && !requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.existingRegistrationCode", internationalRegistrationCode)); } if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java index 7687178..ef69cec 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java @@ -23,11 +23,12 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import org.nuiton.csv.Common; -import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Model to import / export {@link Gear} in csv format. @@ -64,7 +65,15 @@ public class GearModel extends AbstractTuttiImportExportModel<GearRow> { protected void forImport() { - newMandatoryColumn(GearRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.gear.idNotNegative.error"))); + newMandatoryColumn(GearRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser( + t("tutti.service.referential.import.gear.error.idNotNegative")){ + + @Override + protected boolean isTemporaryId(String parse) { + int id = Integer.parseInt(parse); + return Gears.isTemporaryId(id); + } + }); newMandatoryColumn(GearRow.PROPERTY_NAME); newMandatoryColumn(GearRow.PROPERTY_LABEL); newMandatoryColumn(GearRow.PROPERTY_SCIENTIFIC_GEAR, Common.PRIMITIVE_BOOLEAN); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java index 4acc2e4..c1fadeb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java @@ -23,10 +23,11 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.persistence.entities.referential.Persons; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Model to import / export {@link Person} in csv format. @@ -63,7 +64,15 @@ public class PersonModel extends AbstractTuttiImportExportModel<PersonRow> { protected void forImport() { - newMandatoryColumn(PersonRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.person.idNotNegative.error"))); + newMandatoryColumn(PersonRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser( + t("tutti.service.referential.import.person.error.idNotNegative")){ + + @Override + protected boolean isTemporaryId(String parse) { + int id = Integer.parseInt(parse); + return Persons.isTemporaryId(id); + } + }); newMandatoryColumn(PersonRow.PROPERTY_FIRST_NAME); newMandatoryColumn(PersonRow.PROPERTY_LAST_NAME); newMandatoryColumn(PersonRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java index a2be5d3..6114fc4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java @@ -23,10 +23,11 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Model to import / export {@link Species} in csv format. @@ -59,7 +60,15 @@ public class SpeciesModel extends AbstractTuttiImportExportModel<SpeciesRow> { protected void forImport() { - newMandatoryColumn(SpeciesRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.species.idNotNegative.error"))); + newMandatoryColumn(SpeciesRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser( + t("tutti.service.referential.import.species.error.idNotNegative")){ + + @Override + protected boolean isTemporaryId(String parse) { + int id = Integer.parseInt(parse); + return Speciess.isTemporaryId(id); + } + }); newMandatoryColumn(SpeciesRow.PROPERTY_NAME); newMandatoryColumn(SpeciesRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java index 2825792..f934769 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/TemporaryReferentialEntityIdParser.java @@ -35,12 +35,12 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin (Code Lutin) * @since 3.8 */ -public class TemporaryReferentialEntityIdParser implements ValueParser<String> { +public abstract class TemporaryReferentialEntityIdParser implements ValueParser<String> { - protected String idNotNegativeMessageKey; + protected String errorMessage; - public TemporaryReferentialEntityIdParser(String idNotNegativeMessageKey) { - this.idNotNegativeMessageKey = idNotNegativeMessageKey; + public TemporaryReferentialEntityIdParser(String errorMessage) { + this.errorMessage = errorMessage; } @Override @@ -49,12 +49,19 @@ public class TemporaryReferentialEntityIdParser implements ValueParser<String> { value = StringUtils.trimToNull(value); if (value != null) { + if (!isTemporaryId(value)) { + String message = String.format("%s : %s", errorMessage, value); + throw new IllegalArgumentException(message); + } int id = Integer.parseInt(value); if (id >= 0) { - throw new IllegalArgumentException(t(idNotNegativeMessageKey, id)); + throw new IllegalArgumentException(t(errorMessage, id)); } } return value; } + + protected abstract boolean isTemporaryId(String value); + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java index 9c02179..2fdb238 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java @@ -24,9 +24,9 @@ package fr.ifremer.tutti.service.referential.csv; import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import org.apache.commons.lang3.StringUtils; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import org.nuiton.csv.Common; import static org.nuiton.i18n.I18n.t; @@ -66,28 +66,14 @@ public class VesselModel extends AbstractTuttiImportExportModel<VesselRow> { protected void forImport() { - newMandatoryColumn(VesselRow.PROPERTY_ID, new Common.StringValueParser() { + newMandatoryColumn(GearRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser( + t("tutti.service.referential.import.vessel.codePrefixMissing.error", TemporaryDataHelper.TEMPORARY_NAME_PREFIX)){ @Override - public String parse(String value) { - - // must be an integer - String parse = super.parse(value); - - if (StringUtils.isNotBlank(parse)) { - - // must also start with the temporary prefix - if (!parse.startsWith(TemporaryDataHelper.TEMPORARY_NAME_PREFIX)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.codePrefixMissing.error", TemporaryDataHelper.TEMPORARY_NAME_PREFIX, parse));//"Code of a temporary vessel must starts with " + TemporaryDataHelper.TEMPORARY_NAME_PREFIX + ", but was: " + parse); - } - } - - return parse; - + protected boolean isTemporaryId(String parse) { + return Vessels.isTemporaryId(parse); } - }); - newMandatoryColumn(VesselRow.PROPERTY_NAME); newMandatoryColumn(VesselRow.PROPERTY_INTERNATIONAL_REGISTRATION_CODE); newMandatoryColumn(VesselRow.PROPERTY_SCIENTIFIC_VESSEL, Common.PRIMITIVE_BOOLEAN); diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index b141fe5..f2f5ef5 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -98,6 +98,7 @@ tutti.service.bigfinimport.error.no.protocol= tutti.service.compressZipFile.error= tutti.service.context.serviceInstanciation.error= tutti.service.csv.parse.entityNotFound= +tutti.service.csv.parse.foreignEntityNotFound= tutti.service.cvs.format.error= tutti.service.cvs.mandatory.value= tutti.service.error.species.null= @@ -269,50 +270,59 @@ tutti.service.referential.export.gear.error= tutti.service.referential.export.person.error= tutti.service.referential.export.species.error= tutti.service.referential.export.vessel.error= -tutti.service.referential.import.gear.add.noName.error= +tutti.service.referential.import.error.vessel.used= tutti.service.referential.import.gear.cannotDeleteNotExisting.error= -tutti.service.referential.import.gear.cannotDeleteWithoutId.error= +tutti.service.referential.import.gear.error.cannotDeleteWithoutId= tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.gear.existingName.error= +tutti.service.referential.import.gear.error.existingName= +tutti.service.referential.import.gear.error.idNotNegative= +tutti.service.referential.import.gear.error.idNotTemporary= +tutti.service.referential.import.gear.error.noId= +tutti.service.referential.import.gear.error.noName= +tutti.service.referential.import.gear.error.notExistingId= +tutti.service.referential.import.gear.error.used= tutti.service.referential.import.gear.idNotNegative.error= -tutti.service.referential.import.gear.noName.error= tutti.service.referential.import.gear.notExistingId.error= -tutti.service.referential.import.gear.used.error= tutti.service.referential.import.gears.error= -tutti.service.referential.import.person.add.noName.error= tutti.service.referential.import.person.cannotDeleteNotExisting.error= -tutti.service.referential.import.person.cannotDeleteWithoutId.error= +tutti.service.referential.import.person.error.cannotDeleteWithoutId= tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.person.existingName.error= +tutti.service.referential.import.person.error.existingName= +tutti.service.referential.import.person.error.idNotNegative= +tutti.service.referential.import.person.error.idNotTemporary= +tutti.service.referential.import.person.error.noId= +tutti.service.referential.import.person.error.noName= +tutti.service.referential.import.person.error.notExistingId= +tutti.service.referential.import.person.error.used= tutti.service.referential.import.person.idNotNegative.error= -tutti.service.referential.import.person.noName.error= tutti.service.referential.import.person.notExistingId.error= -tutti.service.referential.import.person.used.error= tutti.service.referential.import.persons.error= -tutti.service.referential.import.species.add.noName.error= tutti.service.referential.import.species.cannotDeleteNotExisting.error= -tutti.service.referential.import.species.cannotDeleteWithoutId.error= tutti.service.referential.import.species.error= +tutti.service.referential.import.species.error.cannotDeleteWithoutId= tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.species.existingName.error= +tutti.service.referential.import.species.error.existingName= +tutti.service.referential.import.species.error.idNotNegative= +tutti.service.referential.import.species.error.idNotTemporary= +tutti.service.referential.import.species.error.noId= +tutti.service.referential.import.species.error.noName= +tutti.service.referential.import.species.error.notExistingId= +tutti.service.referential.import.species.error.used= tutti.service.referential.import.species.idNotNegative.error= -tutti.service.referential.import.species.noName.error= -tutti.service.referential.import.species.notExistingId.error= -tutti.service.referential.import.species.used.error= tutti.service.referential.import.vessel.add.noName.error= -tutti.service.referential.import.vessel.add.noRegistrationCode.error= tutti.service.referential.import.vessel.cannotDeleteNotExisting.error= -tutti.service.referential.import.vessel.cannotDeleteWithoutId.error= tutti.service.referential.import.vessel.codePrefixMissing.error= +tutti.service.referential.import.vessel.error.cannotDeleteWithoutId= tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= +tutti.service.referential.import.vessel.error.existingRegistrationCode= +tutti.service.referential.import.vessel.error.idNotTemporary= +tutti.service.referential.import.vessel.error.noId= +tutti.service.referential.import.vessel.error.noRegistrationCode= +tutti.service.referential.import.vessel.error.notExistingId= tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error= tutti.service.referential.import.vessel.existingName.error= -tutti.service.referential.import.vessel.existingRegistrationCode.error= tutti.service.referential.import.vessel.noInternationalRegistrationCode.error= tutti.service.referential.import.vessel.noName.error= -tutti.service.referential.import.vessel.noRegistrationCode.error= -tutti.service.referential.import.vessel.notExistingId.error= -tutti.service.referential.import.vessel.used.error= tutti.service.referential.import.vessels.error= tutti.service.referential.import.vessels.existingValue.error= tutti.service.sumatra.export.error= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 9b3b478..4ad1f0e 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -5,8 +5,8 @@ tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques tutti.caracteristicType.lengthStep= tutti.csv.import.error.on.field=Colonne %s \: %s tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s -tutti.error.messages= -tutti.fatal.messages= +tutti.error.messages=Erreurs :\n %s +tutti.fatal.messages=Erreurs critiques :\n %s tutti.genericFormat.import.accidentalCatches= tutti.genericFormat.import.catches= tutti.genericFormat.import.cruises= @@ -90,7 +90,7 @@ tutti.service.csv.parse.entityNotFound=L'entité de type %1s avec la propriété tutti.service.csv.parse.foreignEntityNotFound=L'entité de type %1s avec l'identifiant %3s n'a pas été trouvée tutti.service.cvs.format.error=Erreur lors du formatage de la valeur %s tutti.service.cvs.mandatory.value=Valeur obligatoire -tutti.service.error.species.null= +tutti.service.error.species.null=Taxon non trouvé tutti.service.export.accidentalCatch.error=Erreur lors de l'export des captures accidentelles tutti.service.export.catches.error=Erreur lors de l'export des captures tutti.service.export.closeContext.error=Erreur lors de la fermeture du contexte d'export @@ -114,7 +114,7 @@ tutti.service.exportCruise.exportOperations=<html>Export du fichier <strong>oper tutti.service.exportCruise.exportParameters=<html>Export du fichier <strong>parameters.csv</strong> pour la campagne %s</html> tutti.service.exportCruise.exportSpecies=<html>Export du fichier <strong>species.csv</strong> pour la campagne %s</html> tutti.service.exportCruise.exportSurvey=<html>Export du fichier <strong>survey.csv</strong> pour la campagne %s</html> -tutti.service.exportPdf.error= +tutti.service.exportPdf.error=Erreur lors de la génération du pdf %s tutti.service.exportSumatra.error.species.null=L'espèce est nulle tutti.service.exportSumatra.error.station.null=Le trait est nul tutti.service.exportSumatra.header.averageSize=longueurmoy @@ -244,45 +244,50 @@ tutti.service.referential.export.gear.error=Erreur lors de l'export des engins d tutti.service.referential.export.person.error=Erreur lors de l'export des personnes dans le fichier %s tutti.service.referential.export.species.error=Erreur lors de l'export des espèces dans le fichier %s tutti.service.referential.export.vessel.error=Erreur lors de l'export des navires dans le fichier %s -tutti.service.referential.import.gear.add.noName.error=Le nom de l'engin est obligatoire +tutti.service.referential.import.error.vessel.used=Le navire temporaire '%s' est utilisé dans l'application. Vous devez le remplacer pour pouvoir le supprimer. tutti.service.referential.import.gear.cannotDeleteNotExisting.error=L'engin temporaire d'identifiant %s n'extsite pas, impossible de la supprimer -tutti.service.referential.import.gear.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression -tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.gear.existingName.error=L'engin '%s' n'a pas été ajouté au référentiel car il est déjà présent +tutti.service.referential.import.gear.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.gear.error.existingName=L'engin '%s' n'a pas été ajouté au référentiel car il est déjà présent +tutti.service.referential.import.gear.error.idNotNegative=L'identifiant d'un engin temporaire doit être négatif +tutti.service.referential.import.gear.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire d'engin +tutti.service.referential.import.gear.error.noId=Un identifiant temporaire d'engin est obligatoire +tutti.service.referential.import.gear.error.noName=Le nom de l'engin est obligatoire +tutti.service.referential.import.gear.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les engins temporaires +tutti.service.referential.import.gear.error.used=L'engin temporaire '%s' est utilisé dans l'application. Vous devez le remplacer pour pouvoir le supprimer. tutti.service.referential.import.gear.idNotNegative.error=L'identifiant d'un engin temporaire doit être négatif \: %s -tutti.service.referential.import.gear.noName.error=Le nom de l'engin est obligatoire tutti.service.referential.import.gear.notExistingId.error=L'identifiant '%s' n'a pas été trouvé parmi les engins temporaires -tutti.service.referential.import.gear.used.error=L'engin temporaire '%s' est utilisé dans l'application. Vous devez le remplacer pour pouvoir le supprimer. tutti.service.referential.import.gears.error=Erreur lors de l'import des engins du fichier %s -tutti.service.referential.import.person.add.noName.error=Le nom de la personne (prénom ou nom) est obligatoire tutti.service.referential.import.person.cannotDeleteNotExisting.error=La personne temporaire d'identifiant %s n'extsite pas, impossible de la supprimer -tutti.service.referential.import.person.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression -tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.person.existingName.error=Une personne avec ce nom %s (nom + prénom) existe déjà +tutti.service.referential.import.person.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.person.error.existingName=Une personne avec ce nom %s (nom + prénom) existe déjà +tutti.service.referential.import.person.error.idNotNegative=L'identifiant d'une personne temporaire doit être négatif +tutti.service.referential.import.person.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire de personne +tutti.service.referential.import.person.error.noId=Un identifiant temporaire de personne est obligatoire +tutti.service.referential.import.person.error.noName=Le nom de la personne (prénom ou nom) est obligatoire +tutti.service.referential.import.person.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les personnes temporaires +tutti.service.referential.import.person.error.used=La personne temporaire '%s' est utilisée dans l'application. Vous devez la remplacer pour pouvoir la supprimer. tutti.service.referential.import.person.idNotNegative.error=L'identifiant d'une personne temporaire doit être négatif \: %s -tutti.service.referential.import.person.noName.error=Le nom de la personne (prénom ou nom) est obligatoire tutti.service.referential.import.person.notExistingId.error=L'identifiant '%s' n'a pas été trouvé parmi les personnes temporaires -tutti.service.referential.import.person.used.error=La personne temporaire '%s' est utilisée dans l'application. Vous devez la remplacer pour pouvoir la supprimer. tutti.service.referential.import.persons.error=Erreur lors de l'import des personnes du fichier %s -tutti.service.referential.import.species.add.noName.error=Le nom pour l'espèce %s est obligatoire. tutti.service.referential.import.species.cannotDeleteNotExisting.error=L'espèce temporaire d'identifiant %s n'extsite pas, impossible de la supprimer -tutti.service.referential.import.species.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.species.error=Erreur lors de l'import des espèces du fichier %s -tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.species.existingName.error=L'espèce '%s' n'a pas été ajoutée au référentiel car elle est déjà présente +tutti.service.referential.import.species.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.species.error.existingName=L'espèce '%s' n'a pas été ajoutée au référentiel car elle est déjà présente +tutti.service.referential.import.species.error.idNotNegative=L'identifiant d'une espèce temporaire doit être négatif +tutti.service.referential.import.species.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire de taxon +tutti.service.referential.import.species.error.noId=Un identifiant temporaire de taxon est obligatoire +tutti.service.referential.import.species.error.noName=Le nom pour l'espèce %s est obligatoire. +tutti.service.referential.import.species.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les espèces temporaires +tutti.service.referential.import.species.error.used=L'espèce temporaire '%s' est utilisée dans l'application. Vous devez la remplacer pour pouvoir la supprimer. tutti.service.referential.import.species.idNotNegative.error=L'identifiant d'une espèce temporaire doit être négatif \: %s -tutti.service.referential.import.species.noName.error=Le nom pour l'espèce %s est obligatoire. -tutti.service.referential.import.species.notExistingId.error=L'identifiant '%s' n'a pas été trouvé parmi les espèces temporaires -tutti.service.referential.import.species.used.error=L'espèce temporaire '%s' est utilisée dans l'application. Vous devez la remplacer pour pouvoir la supprimer. -tutti.service.referential.import.vessel.add.noRegistrationCode.error=L'immatriculation est obligatoire tutti.service.referential.import.vessel.cannotDeleteNotExisting.error=Le navire temporaire d'identifiant %s n'extsite pas, impossible de la supprimer -tutti.service.referential.import.vessel.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.vessel.codePrefixMissing.error=L'identifiant d'un navire temporaire doit commencer par %1$s \: %2$s -tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= -tutti.service.referential.import.vessel.existingRegistrationCode.error=Le navire '%s' n'a pas été ajouté au référentiel car il est déjà présent -tutti.service.referential.import.vessel.noRegistrationCode.error=L'immatriculation est obligatoire -tutti.service.referential.import.vessel.notExistingId.error=L'identifiant '%s' n'a pas été trouvé parmi les navires temporaires -tutti.service.referential.import.vessel.used.error=Le navire temporaire '%s' est utilisé dans l'application. Vous devez le remplacer pour pouvoir le supprimer. +tutti.service.referential.import.vessel.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.vessel.error.existingRegistrationCode=Le navire '%s' n'a pas été ajouté au référentiel car il est déjà présent +tutti.service.referential.import.vessel.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire de navire +tutti.service.referential.import.vessel.error.noId=Un identifiant temporaire de navire est obligatoire +tutti.service.referential.import.vessel.error.noRegistrationCode=L'immatriculation est obligatoire +tutti.service.referential.import.vessel.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les navires temporaires tutti.service.referential.import.vessels.error=Erreur lors de l'import des navires du fichier %s tutti.service.referential.import.vessels.existingValue.error=Un navire avec le nom %1s et l'immatriculation %2s existe déjà dans le référentiel tutti.service.sumatra.export.error=Erreur lors de l'export Sumatra dans le fichier %s @@ -374,4 +379,4 @@ tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise ent tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0 tutti.validator.warning.marineLitter.weight.required=Vous devez saisir la valeur du poids total des déchets<br/>ou le poids de chacune des catégories observées. tutti.validator.warning.species.protocolNotRespected=Espèces - le lot de %s / %s ne suit pas les recommandations du protocole -tutti.warning.messages= +tutti.warning.messages=Avertissements :\n %s diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java index e041cd3..0ee4941 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java @@ -57,7 +57,7 @@ public class PupitriImportServiceAno5079Test extends PupitryImportServiceTestSup // Import MELA-NGE species SpeciesBean melagSpecies = new SpeciesBean(); melagSpecies.setName("MELA-NGE"); - Collection<Species> specieses = persistenceService.importTemporarySpecies(Lists.<Species>newArrayList(melagSpecies)); + Collection<Species> specieses = persistenceService.addTemporarySpecies(Lists.<Species>newArrayList(melagSpecies)); Iterables.get(specieses, 0).setRefTaxCode(melagSpecies.getName()); File trunk = dbResource.copyClassPathResource("pupitri/ano-5079.tnk", "pupitri.tnk"); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 1214c508f3a98dd2194b522db3e61aa57c552d7a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:11:07 2015 +0100 normalize export service classes --- ...ontext.java => GenericFormatExportContext.java} | 20 ++++---- ...va => GenericFormatExportOperationContext.java} | 22 ++++---- .../genericformat/GenericFormatExportService.java | 58 +++++++++++----------- .../producer/CsvProducerForAccidentalCatch.java | 8 +-- .../producer/CsvProducerForCatch.java | 12 ++--- .../CsvProducerForIndividualObservation.java | 8 +-- .../producer/CsvProducerForMarineLitter.java | 4 +- .../GenericFormatExportServiceTest.java | 26 +++++----- 8 files changed, 79 insertions(+), 79 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java similarity index 93% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java index 0d77a89..9954494 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java @@ -46,11 +46,11 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class GlobalExportContext implements Closeable { +public class GenericFormatExportContext implements Closeable { private final SampleCategoryModel sampleCategoryModel; - protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); + protected Map<String, GenericFormatExportOperationContext> operationContexts = Maps.newTreeMap(); private final GenericFormatArchive archive; @@ -96,11 +96,11 @@ public class GlobalExportContext implements Closeable { protected String checkError; - GlobalExportContext(GenericFormatArchive archive, - char csvSeparator, - PersistenceService persistenceService, - WeightComputingService weightComputingService, - SampleCategoryModel sampleCategoryModel) { + GenericFormatExportContext(GenericFormatArchive archive, + char csvSeparator, + PersistenceService persistenceService, + WeightComputingService weightComputingService, + SampleCategoryModel sampleCategoryModel) { this.archive = archive; @@ -135,14 +135,14 @@ public class GlobalExportContext implements Closeable { } - public OperationExportContext getOperationContext(Cruise cruise, FishingOperation operation) { + public GenericFormatExportOperationContext getOperationContext(Cruise cruise, FishingOperation operation) { String operationId = operation.getId(); - OperationExportContext operationExportContext = operationContexts.get(operationId); + GenericFormatExportOperationContext operationExportContext = operationContexts.get(operationId); if (operationExportContext == null) { - operationExportContext = new OperationExportContext(cruise, + operationExportContext = new GenericFormatExportOperationContext(cruise, operation, persistenceService, weightComputingService, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java similarity index 87% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java index 1e55f1a..b17f267 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java @@ -27,10 +27,10 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class OperationExportContext { +public class GenericFormatExportOperationContext { /** Logger. */ - private static final Log log = LogFactory.getLog(OperationExportContext.class); + private static final Log log = LogFactory.getLog(GenericFormatExportOperationContext.class); private final Cruise cruise; @@ -62,15 +62,15 @@ public class OperationExportContext { private final SampleCategoryModel sampleCategoryModel; - public OperationExportContext(Cruise cruise, - FishingOperation operation, - PersistenceService persistenceService, - WeightComputingService weightComputingService, - SampleCategoryModel sampleCategoryModel, - Caracteristic weightMeasuredCaracteristic, - Caracteristic pmfmIdCaracteristic, - Caracteristic deadOrAliveCaracteristic, - Caracteristic genderCaracteristic) { + public GenericFormatExportOperationContext(Cruise cruise, + FishingOperation operation, + PersistenceService persistenceService, + WeightComputingService weightComputingService, + SampleCategoryModel sampleCategoryModel, + Caracteristic weightMeasuredCaracteristic, + Caracteristic pmfmIdCaracteristic, + Caracteristic deadOrAliveCaracteristic, + Caracteristic genderCaracteristic) { this.cruise = cruise; this.operation = operation; this.sampleCategoryModel = sampleCategoryModel; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 31c22b3..5f260d6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -179,7 +179,7 @@ public class GenericFormatExportService extends AbstractTuttiService { GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(exportFile, context.getConfig().getTmpDirectory()); - try (GlobalExportContext exportContext = createExportContext(genericFormatArchive)) { + try (GenericFormatExportContext exportContext = createExportContext(genericFormatArchive)) { for (Cruise cruise : allCruise) { @@ -237,7 +237,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(exportFile, context.getConfig().getTmpDirectory()); - try (GlobalExportContext exportContext = createExportContext(genericFormatArchive)) { + try (GenericFormatExportContext exportContext = createExportContext(genericFormatArchive)) { exportCruise(cruise, exportContext, progressionModel); @@ -288,7 +288,7 @@ public class GenericFormatExportService extends AbstractTuttiService { GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(null, context.getConfig().getTmpDirectory()); - try (GlobalExportContext exportContext = createExportContext(genericFormatArchive)) { + try (GenericFormatExportContext exportContext = createExportContext(genericFormatArchive)) { FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); @@ -309,9 +309,9 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected GlobalExportContext createExportContext(GenericFormatArchive genericFormatArchive) { + protected GenericFormatExportContext createExportContext(GenericFormatArchive genericFormatArchive) { - return new GlobalExportContext(genericFormatArchive, + return new GenericFormatExportContext(genericFormatArchive, ';', persistenceService, weightComputingService, @@ -402,7 +402,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void terminatesExport(GlobalExportContext exportContext, ProgressionModel progressionModel) { + protected void terminatesExport(GenericFormatExportContext exportContext, ProgressionModel progressionModel) { SampleCategoryModel sampleCategoryModel = exportContext.getSampleCategoryModel(); increments(progressionModel, t("tutti.service.genericExport.exportSampleCategoyModel", sampleCategoryModel.getNbSampling())); @@ -431,7 +431,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportTemporaryGears(GlobalExportContext exportContext, List<Gear> temporaryGears) { + protected void exportTemporaryGears(GenericFormatExportContext exportContext, List<Gear> temporaryGears) { try { @@ -446,7 +446,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportTemporaryPersons(GlobalExportContext exportContext, List<Person> temporaryPersons) { + protected void exportTemporaryPersons(GenericFormatExportContext exportContext, List<Person> temporaryPersons) { try { @@ -461,7 +461,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportTemporarySpeciess(GlobalExportContext exportContext, List<Species> temporarySpeciess) { + protected void exportTemporarySpeciess(GenericFormatExportContext exportContext, List<Species> temporarySpeciess) { try { @@ -476,7 +476,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportTemporaryVessels(GlobalExportContext exportContext, List<Vessel> temporaryVessels) { + protected void exportTemporaryVessels(GenericFormatExportContext exportContext, List<Vessel> temporaryVessels) { try { @@ -491,7 +491,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportSampleCategoryModel(GlobalExportContext exportContext, SampleCategoryModel sampleCategoryModel) { + protected void exportSampleCategoryModel(GenericFormatExportContext exportContext, SampleCategoryModel sampleCategoryModel) { try { @@ -506,7 +506,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportProtocol(GlobalExportContext exportContext, ProgressionModel progressionModel) { + protected void exportProtocol(GenericFormatExportContext exportContext, ProgressionModel progressionModel) { boolean protocolFilled = context.getDataContext().isProtocolFilled(); if (protocolFilled) { @@ -521,14 +521,14 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportCruise(Cruise cruise, GlobalExportContext exportContext, ProgressionModel progressionModel) { + protected void exportCruise(Cruise cruise, GenericFormatExportContext exportContext, ProgressionModel progressionModel) { List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); exportCruise(cruise, operations, exportContext, progressionModel); } - protected void exportCruise(Cruise cruise, List<FishingOperation> operations, GlobalExportContext exportContext, ProgressionModel progressionModel) { + protected void exportCruise(Cruise cruise, List<FishingOperation> operations, GenericFormatExportContext exportContext, ProgressionModel progressionModel) { // load fully operations List<FishingOperation> loadedOperations = Lists.newArrayListWithCapacity(operations.size()); @@ -564,7 +564,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { + protected void exportSurvey(GenericFormatExportContext exportContext, Cruise cruise) { List<TuttiLocation> allCountry = persistenceService.getAllCountry(); String countryId = context.getConfig().getExportCountryId(); @@ -582,7 +582,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportGearCaracteristics(GlobalExportContext exportContext, Cruise cruise) { + protected void exportGearCaracteristics(GenericFormatExportContext exportContext, Cruise cruise) { try { CsvProducerForGearCaracteristics producerForGearCaracteristics = exportContext.getProducerForGearCaracteristics(); @@ -607,7 +607,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportOperations(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + protected void exportOperations(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -617,7 +617,7 @@ public class GenericFormatExportService extends AbstractTuttiService { for (FishingOperation operation : operations) { - OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); + GenericFormatExportOperationContext operationContext = exportContext.getOperationContext(cruise, operation); CatchBatch catchBatch = operationContext.getCatchBatch(); OperationRow operationRow = producerForOperation.getDataToExport(cruise, operation, catchBatch); @@ -632,7 +632,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportParameters(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + protected void exportParameters(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -650,14 +650,14 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportMarineLitters(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + protected void exportMarineLitters(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { CsvProducerForMarineLitter producerForMarineLitter = exportContext.getProducerForMarineLitter(); for (FishingOperation operation : operations) { - OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); + GenericFormatExportOperationContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -674,7 +674,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportIndividualObservations(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + protected void exportIndividualObservations(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -682,7 +682,7 @@ public class GenericFormatExportService extends AbstractTuttiService { CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); for (FishingOperation operation : operations) { - OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); + GenericFormatExportOperationContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -698,7 +698,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportAccidentalCatch(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + protected void exportAccidentalCatch(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { CsvProducerForAccidentalCatch producerForAccidentalCatch = exportContext.getProducerForAccidentalCatch(); @@ -706,7 +706,7 @@ public class GenericFormatExportService extends AbstractTuttiService { for (FishingOperation operation : operations) { - OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); + GenericFormatExportOperationContext operationContext = exportContext.getOperationContext(cruise, operation); List<AccidentalCatchRow> rows = producerForAccidentalCatch.getDataToExport(operationContext); producerForSpecies.prepareAccidentalRows(rows); @@ -718,12 +718,12 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportCatches(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + protected void exportCatches(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); + GenericFormatExportOperationContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -739,7 +739,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } } - protected void exportCatch(GlobalExportContext exportContext, OperationExportContext operationContext) throws Exception { + protected void exportCatch(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) throws Exception { CatchBatch catchBatch = operationContext.getCatchBatch(); @@ -803,7 +803,7 @@ public class GenericFormatExportService extends AbstractTuttiService { } - protected void exportSpecies(GlobalExportContext exportContext) { + protected void exportSpecies(GenericFormatExportContext exportContext) { try { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java index 09fa013..b1c33e9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java @@ -4,7 +4,7 @@ import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import org.apache.commons.collections4.CollectionUtils; @@ -28,7 +28,7 @@ public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRo super(file, model); } - public List<AccidentalCatchRow> getDataToExport(OperationExportContext operationExportContext) { + public List<AccidentalCatchRow> getDataToExport(GenericFormatExportOperationContext operationExportContext) { List<AccidentalCatchRow> rows = new ArrayList<>(); @@ -47,7 +47,7 @@ public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRo } - protected void addAccidentalBatch(OperationExportContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch) { + protected void addAccidentalBatch(GenericFormatExportOperationContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch) { addCaracteristicRow(operationExportContext, rows, @@ -94,7 +94,7 @@ public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRo } - protected void addCaracteristicRow(OperationExportContext operationExportContext, + protected void addCaracteristicRow(GenericFormatExportOperationContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch, Caracteristic caracteristic, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index 3252374..c740135 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -9,7 +9,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.CatchModel; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; import fr.ifremer.tutti.service.genericformat.csv.ExportSampleCategory; @@ -35,7 +35,7 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { super(file, model); } - public List<CatchRow> getDataToExport(OperationExportContext operationExportContext, + public List<CatchRow> getDataToExport(GenericFormatExportOperationContext operationExportContext, Float speciesCatchRaisingFactor, Float benthosCatchRaisingFactor) { @@ -65,7 +65,7 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } - protected void addBenthosBatches(OperationExportContext operationExportContext, + protected void addBenthosBatches(GenericFormatExportOperationContext operationExportContext, BatchContainer<BenthosBatch> rootBenthosBatch, Float benthosCatchRaisingFactor, String batchWeightUnit, @@ -105,7 +105,7 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } - protected void addSpeciesBatches(OperationExportContext operationExportContext, + protected void addSpeciesBatches(GenericFormatExportOperationContext operationExportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch, Float speciesCatchRaisingFactor, String batchWeightUnit, @@ -144,7 +144,7 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } } - protected void addSpeciesBatch(OperationExportContext operationExportContext, + protected void addSpeciesBatch(GenericFormatExportOperationContext operationExportContext, CatchRow currentRow, List<CatchRow> rows, SpeciesBatch speciesBatch, @@ -266,7 +266,7 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } } - protected void addBenthosBatch(OperationExportContext operationExportContext, + protected void addBenthosBatch(GenericFormatExportOperationContext operationExportContext, CatchRow currentRow, List<CatchRow> rows, BenthosBatch benthosBatch, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java index eb7faac..0965c68 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -4,7 +4,7 @@ import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import org.apache.commons.collections4.CollectionUtils; @@ -28,7 +28,7 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO super(file, model); } - public List<IndividualObservationRow> getDataToExport(OperationExportContext operationExportContext) { + public List<IndividualObservationRow> getDataToExport(GenericFormatExportOperationContext operationExportContext) { List<IndividualObservationRow> rows = new ArrayList<>(); List<IndividualObservationBatch> individualObservations = operationExportContext.getIndividualObservations(); @@ -44,7 +44,7 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO } - protected void addIndividualObservationBatch(OperationExportContext operationExportContext, + protected void addIndividualObservationBatch(GenericFormatExportOperationContext operationExportContext, List<IndividualObservationRow> rows, IndividualObservationBatch child) { @@ -80,7 +80,7 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO } } - protected void addCaracteristicRow(OperationExportContext operationExportContext, + protected void addCaracteristicRow(GenericFormatExportOperationContext operationExportContext, List<IndividualObservationRow> rows, IndividualObservationBatch child, Caracteristic caracteristic, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java index 98f9936..9f0b34f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java @@ -3,7 +3,7 @@ package fr.ifremer.tutti.service.genericformat.producer; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import org.apache.commons.collections4.CollectionUtils; @@ -25,7 +25,7 @@ public class CsvProducerForMarineLitter extends CsvProducer<MarineLitterRow, Mar } - public List<MarineLitterRow> getDataToExport(OperationExportContext operationExportContext) { + public List<MarineLitterRow> getDataToExport(GenericFormatExportOperationContext operationExportContext) { List<MarineLitterRow> rows = new ArrayList<>(); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index d2d6381..82875b7 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -358,7 +358,7 @@ public class GenericFormatExportServiceTest { @Test public void exportSurvey() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportSurvey(exportContext, dataContext.cruise); } ServiceDbResource.assertFileContent("Survey export:\n", @@ -369,7 +369,7 @@ public class GenericFormatExportServiceTest { @Test public void exportGearCaracteristics() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportGearCaracteristics(exportContext, dataContext.cruise); } ServiceDbResource.assertFileContent("Gear caracteristics export:\n", @@ -380,7 +380,7 @@ public class GenericFormatExportServiceTest { @Test public void exportOperations() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportOperations(exportContext, dataContext.cruise, dataContext.operations); } ServiceDbResource.assertFileContent("Operation export:\n", @@ -396,7 +396,7 @@ public class GenericFormatExportServiceTest { FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100105"); dataContext.operations = Lists.newArrayList(operation); - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportOperations(exportContext, dataContext.cruise, dataContext.operations); } @@ -414,7 +414,7 @@ public class GenericFormatExportServiceTest { operation.setGear(null); dataContext.operations = Lists.newArrayList(operation); - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportOperations(exportContext, dataContext.cruise, dataContext.operations); } @@ -426,7 +426,7 @@ public class GenericFormatExportServiceTest { @Test public void exportParameters() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportParameters(exportContext, dataContext.cruise, dataContext.operations); } @@ -438,7 +438,7 @@ public class GenericFormatExportServiceTest { @Test public void exportCatches() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); } ServiceDbResource.assertFileContent("Catch export:\n", @@ -461,7 +461,7 @@ public class GenericFormatExportServiceTest { FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100000"); dataContext.operations = Lists.newArrayList(operation); - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); service.exportSpecies(exportContext); } @@ -483,7 +483,7 @@ public class GenericFormatExportServiceTest { dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS); - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); } } @@ -491,7 +491,7 @@ public class GenericFormatExportServiceTest { @Test public void exportMarineLitters() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportMarineLitters(exportContext, dataContext.cruise, dataContext.operations); } ServiceDbResource.assertFileContent("MarineLitter export:\n", @@ -502,7 +502,7 @@ public class GenericFormatExportServiceTest { @Test public void exportIndividualObservations() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportIndividualObservations(exportContext, dataContext.cruise, dataContext.operations); } ServiceDbResource.assertFileContent("individualObservation export:\n", @@ -513,7 +513,7 @@ public class GenericFormatExportServiceTest { @Test public void exportAccidentalCatch() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { service.exportAccidentalCatch(exportContext, dataContext.cruise, dataContext.operations); } ServiceDbResource.assertFileContent("accidentalCatch export:\n", @@ -524,7 +524,7 @@ public class GenericFormatExportServiceTest { @Test public void exportSpecies() throws Exception { - try (GlobalExportContext exportContext = service.createExportContext(archive)) { + try (GenericFormatExportContext exportContext = service.createExportContext(archive)) { List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 578969e92ad0a316fe38a8da119a37330053f475 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:12:18 2015 +0100 add a referential import result object for generic format import --- .../GenericFormatReferentialImportResult.java | 67 ++++++++++++++++++++++ .../referential/ReferentialImportRequest.java | 8 +++ .../referential/ReferentialImportResult.java | 9 ++- 3 files changed, 82 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java new file mode 100644 index 0000000..ed6c220 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -0,0 +1,67 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.base.Function; +import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; +import fr.ifremer.tutti.service.referential.ReferentialImportResult; + +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatReferentialImportResult<E extends TuttiReferentialEntity, K extends Comparable<K>> { + + private final Map<K, E> entitiesAdded; + + private final Map<K, E> entitiesLinked; + + public GenericFormatReferentialImportResult(ReferentialImportRequest<E, K> importRequest, ReferentialImportResult<E> importResult) { + + Function<E, K> entityToIdFunction = importRequest.getEntityToIdFunction(); + + int nbRefAdded = importResult.getNbRefAdded(); + List<E> toAdds = importRequest.getEntitiesToAdd(); + List<E> addeds = importResult.getRefAdded(); + this.entitiesAdded = merge(entityToIdFunction, nbRefAdded, toAdds, addeds); + + int nbRefLinked = importResult.getNbRefLinked(); + List<E> toLinks = importRequest.getEntitiesToLink(); + List<E> linkeds = importResult.getRefLinked(); + this.entitiesLinked = merge(entityToIdFunction, nbRefLinked, toLinks, linkeds); + + } + + public Map<K, E> getEntitiesAdded() { + return entitiesAdded; + } + + public Map<K, E> getEntitiesLinked() { + return entitiesLinked; + } + + protected Map<K, E> merge(Function<E, K> entityToIdFunction, + int nbEntities, + List<E> request, + List<E> result) { + + Map<K, E> mergeMap = new TreeMap<>(); + + for (int index = 0; index < nbEntities; index++) { + + E toAdd = request.get(index); + K id = entityToIdFunction.apply(toAdd); + E added = result.get(index); + mergeMap.put(id, added); + + } + + return mergeMap; + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java index 83225f9..80aac65 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java @@ -55,8 +55,11 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { private final Set<String> existingNaturalIds; + private final Function<E, K> entityToIdFunction; + public ReferentialImportRequest(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { + this.entityToIdFunction = entityToIdFunction; this.existingEntitiesById = Maps.uniqueIndex(existingEntities, entityToIdFunction); this.existingNaturalIds = Sets.newHashSet(Iterables.transform(existingEntities, naturalIdFunction)); @@ -121,4 +124,9 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { public void removeExistingNaturalId(String naturalId) { existingNaturalIds.remove(naturalId); } + + public Function<E, K> getEntityToIdFunction() { + return entityToIdFunction; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java index f81d7af..3860544 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java @@ -27,6 +27,7 @@ package fr.ifremer.tutti.service.referential; import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -44,7 +45,7 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { protected int nbRefDeleted = 0; public List<E> getRefAdded() { - return refAdded; + return Collections.unmodifiableList(refAdded); } public void addAllRefsAdded(List<E> refs) { @@ -56,7 +57,7 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { } public List<E> getRefUpdated() { - return refUpdated; + return Collections.unmodifiableList(refUpdated); } public void addAllRefsUpdated(List<E> refs) { @@ -67,6 +68,10 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { return refUpdated.size(); } + public List<E> getRefLinked() { + return Collections.unmodifiableList(refLinked); + } + public void addAllRefsLinked(List<E> refs) { refLinked.addAll(refs); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit adc7f2c4835235fdf8539e3b3a8caf674dca62a2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:12:45 2015 +0100 normalize generic format import service classes --- .../genericformat/GenericFormatImportContext.java | 141 +++++++++++ .../GenericFormatImportEntityParserFactory.java | 146 ++++++++++++ .../genericformat/GenericFormatImportRequest.java | 73 ++++++ .../genericformat/GenericFormatImportResult.java | 39 ++-- .../genericformat/GenericFormatImportService.java | 143 ++++++------ .../service/genericformat/GlobalImportContext.java | 259 --------------------- .../consumer/CsvConsumerForAccidentalCatch.java | 18 +- .../consumer/CsvConsumerForCatch.java | 19 +- .../consumer/CsvConsumerForGearCaracteristic.java | 18 +- .../CsvConsumerForIndividualObservation.java | 18 +- .../consumer/CsvConsumerForMarineLitter.java | 18 +- .../consumer/CsvConsumerForOperation.java | 18 +- .../consumer/CsvConsumerForParameter.java | 18 +- .../consumer/CsvConsumerForSampleCategory.java | 6 +- .../consumer/CsvConsumerForSurvey.java | 18 +- .../genericformat/csv/AccidentalCatchModel.java | 12 +- .../service/genericformat/csv/CatchModel.java | 14 +- .../genericformat/csv/GearCaracteristicModel.java | 12 +- .../csv/IndividualObservationModel.java | 12 +- .../genericformat/csv/MarineLitterModel.java | 12 +- .../service/genericformat/csv/OperationModel.java | 20 +- .../service/genericformat/csv/ParameterModel.java | 10 +- .../genericformat/csv/SampleCategoryModel.java | 10 +- .../service/genericformat/csv/SurveyModel.java | 18 +- .../resources/i18n/tutti-service_fr_FR.properties | 32 +-- 25 files changed, 583 insertions(+), 521 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java new file mode 100644 index 0000000..bf21187 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -0,0 +1,141 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; +import org.nuiton.csv.ImportRow; + +import java.io.Closeable; +import java.io.IOException; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class GenericFormatImportContext implements Closeable { + + private final GenericFormatImportRequest importRequest; + + private final GenericFormatImportEntityParserFactory importEntityParserFactory; + + private final GenericFormatImportResult importResult; + + public GenericFormatImportContext(GenericFormatImportRequest importRequest, PersistenceService persistenceService) { + this.importRequest = importRequest; + this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest); + this.importResult = new GenericFormatImportResult(importRequest); + } + + public GenericFormatImportRequest getImportRequest() { + return importRequest; + } + + public GenericFormatImportResult getImportResult() { + return importResult; + } + + @Override + public void close() throws IOException { + + //TODO Close + //getArchive().close(); + + } + + public boolean isCruiseExists(Cruise cruise) { + + boolean equals = false; + for (Cruise existingCruise : importRequest.getExistingCruises()) { + + equals = Cruises.equals(cruise, existingCruise); + if (equals) { + break; + } + + } + return equals; + + } + + public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { + CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForSurvey loadSurveys() { + CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(importRequest.getArchive().getSurveyPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForGearCaracteristic loadGearCaracteristics() { + CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(importRequest.getArchive().getGearCaracteristicsPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForOperation loadOperations() { + CsvConsumerForOperation consumer = new CsvConsumerForOperation(importRequest.getArchive().getOperationPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForParameter loadParameters() { + CsvConsumerForParameter consumer = new CsvConsumerForParameter(importRequest.getArchive().getParameterPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForCatch loadCatches() { + CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importRequest.getSampleCategoryModel(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForMarineLitter loadMarineLitters() { + CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(importRequest.getArchive().getMarineLitterPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForIndividualObservation loadIndividualObservations() { + CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(importRequest.getArchive().getIndividualObservationPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForAccidentalCatch loadAccidentalCatches() { + CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(importRequest.getArchive().getAccidentalCatchPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForTemporaryGear loadTemporaryGears() { + CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(importRequest.getArchive().getTemporaryReferentialGearsPath(), importRequest.getCsvSeparator()); + return consumer; + } + + public CsvConsumerForTemporaryPerson loadTemporaryPersons() { + CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(importRequest.getArchive().getTemporaryReferentialPersonsPath(), importRequest.getCsvSeparator()); + return consumer; + } + + public CsvConsumerForTemporarySpecies loadTemporarySpecies() { + CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(importRequest.getArchive().getTemporaryReferentialSpeciesPath(), importRequest.getCsvSeparator()); + return consumer; + } + + public CsvConsumerForTemporaryVessel loadTemporaryVessels() { + CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(importRequest.getArchive().getTemporaryReferentialVesselsPath(), importRequest.getCsvSeparator()); + return consumer; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java new file mode 100644 index 0000000..d429821 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java @@ -0,0 +1,146 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; +import fr.ifremer.tutti.service.csv.GearParserFormatter; +import fr.ifremer.tutti.service.csv.HarbourParserFormatter; +import fr.ifremer.tutti.service.csv.PersonListParserFormatter; +import fr.ifremer.tutti.service.csv.PersonParserFormatter; +import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; +import fr.ifremer.tutti.service.csv.VesselListParserFormatter; +import fr.ifremer.tutti.service.csv.VesselParserFormatter; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportEntityParserFactory { + + private final PersistenceService persistenceService; + + private final GenericFormatImportRequest importRequest; + + private VesselParserFormatter vesselParser; + + private HarbourParserFormatter harbourParser; + + private GearParserFormatter mandatoryGearParser; + + private PersonListParserFormatter listPersonParser; + + private CaracteristicParserFormatter caracteristicParser; + + private FishingOperationStrataParserFormatter fishingOperationStrataParser; + + private FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; + + private FishingOperationLocationParserFormatter fishingOperationLocationParser; + + private VesselListParserFormatter listVesselParser; + + private SpeciesParserFormatter speciesParser; + + private CaracteristicValueParserFormatter marineLitterCategoryValueParser; + + private CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; + + public GenericFormatImportEntityParserFactory(PersistenceService persistenceService, + GenericFormatImportRequest importRequest) { + this.persistenceService = persistenceService; + this.importRequest = importRequest; + } + + public VesselParserFormatter getVesselParser() { + if (vesselParser == null) { + vesselParser = VesselParserFormatter.newParser(persistenceService); + } + return vesselParser; + } + + public HarbourParserFormatter getHarbourParser() { + if (harbourParser == null) { + harbourParser = HarbourParserFormatter.newParser(persistenceService); + } + return harbourParser; + } + + public GearParserFormatter getMandatoryGearParser() { + if (mandatoryGearParser == null) { + mandatoryGearParser = GearParserFormatter.newParser(persistenceService); + } + return mandatoryGearParser; + } + + public PersonListParserFormatter getListPersonParser() { + if (listPersonParser == null) { + listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); + } + return listPersonParser; + } + + public CaracteristicParserFormatter getCaracteristicParser() { + if (caracteristicParser == null) { + caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); + } + return caracteristicParser; + } + + public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { + if (fishingOperationStrataParser == null) { + Program program = importRequest.getProgram(); + fishingOperationStrataParser = FishingOperationStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + } + return fishingOperationStrataParser; + } + + public FishingOperationSubStrataParserFormatter getFishingOperationSubStrataParser() { + if (fishingOperationSubStrataParser == null) { + Program program = importRequest.getProgram(); + fishingOperationSubStrataParser = FishingOperationSubStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + } + return fishingOperationSubStrataParser; + } + + public FishingOperationLocationParserFormatter getFishingOperationLocationParser() { + if (fishingOperationLocationParser == null) { + Program program = importRequest.getProgram(); + fishingOperationLocationParser = FishingOperationLocationParserFormatter.newParser(persistenceService, program.getZone().getId()); + } + return fishingOperationLocationParser; + } + + public VesselListParserFormatter getListVesselParser() { + if (listVesselParser == null) { + listVesselParser = VesselListParserFormatter.newParser(getVesselParser()); + } + return listVesselParser; + } + + public SpeciesParserFormatter getSpeciesParser() { + if (speciesParser == null) { + speciesParser = SpeciesParserFormatter.newParser(persistenceService); + } + return speciesParser; + } + + public CaracteristicValueParserFormatter getMarineLitterCategoryValueParser() { + if (marineLitterCategoryValueParser == null) { + marineLitterCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterCategoryCaracteristic()); + } + return marineLitterCategoryValueParser; + } + + public CaracteristicValueParserFormatter getMarineLitterSizeCategoryValueParser() { + if (marineLitterSizeCategoryValueParser == null) { + marineLitterSizeCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); + } + return marineLitterSizeCategoryValueParser; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java new file mode 100644 index 0000000..052113b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java @@ -0,0 +1,73 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; +import java.util.Set; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportRequest { + + private final GenericFormatArchive archive; + + private final char csvSeparator; + + private final SampleCategoryModel sampleCategoryModel; + + private final Set<Cruise> existingCruises; + + private final TuttiProtocol oldProtocol; + + private final Program program; + + public GenericFormatImportRequest(PersistenceService persistenceService, + GenericFormatArchive archive, + char csvSeparator, + Program program, + SampleCategoryModel sampleCategoryModel) { + this.archive = archive; + this.csvSeparator = csvSeparator; + this.sampleCategoryModel = sampleCategoryModel; + this.program = program; + + List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); + this.existingCruises = ImmutableSet.copyOf(allCruise); + this.oldProtocol = persistenceService.getProtocol(); + + } + + public GenericFormatArchive getArchive() { + return archive; + } + + public char getCsvSeparator() { + return csvSeparator; + } + + public SampleCategoryModel getSampleCategoryModel() { + return sampleCategoryModel; + } + + public Set<Cruise> getExistingCruises() { + return existingCruises; + } + + public TuttiProtocol getOldProtocol() { + return oldProtocol; + } + + public Program getProgram() { + return program; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index 90c96a1..a9921f2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -7,7 +7,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.referential.ReferentialImportResult; import java.util.LinkedHashSet; import java.util.Set; @@ -20,30 +19,31 @@ import java.util.Set; */ public class GenericFormatImportResult { - private final GenericFormatArchive archive; - private final Set<Cruise> importedCruises; private final Set<String> errors; private TuttiProtocol protocol; - private ReferentialImportResult<Gear> importedGears; - private ReferentialImportResult<Person> importedPersons; + private GenericFormatReferentialImportResult<Gear, Integer> importedGears; + + private GenericFormatReferentialImportResult<Person, Integer> importedPersons; - private ReferentialImportResult<Species> importedSpecies; + private GenericFormatReferentialImportResult<Species, Integer> importedSpecies; - private ReferentialImportResult<Vessel> importedVessels; + private GenericFormatReferentialImportResult<Vessel, String> importedVessels; - public GenericFormatImportResult(GenericFormatArchive archive) { - this.archive = archive; + private final GenericFormatImportRequest importRequest; + + public GenericFormatImportResult(GenericFormatImportRequest importRequest) { + this.importRequest = importRequest; this.importedCruises = new LinkedHashSet<>(); this.errors = new LinkedHashSet<>(); } - public GenericFormatArchive getArchive() { - return archive; + public GenericFormatImportRequest getImportRequest() { + return importRequest; } public Set<Cruise> getImportedCruises() { @@ -70,36 +70,35 @@ public class GenericFormatImportResult { this.protocol = protocol; } - public ReferentialImportResult<Gear> getImportedGears() { + public GenericFormatReferentialImportResult<Gear, Integer> getImportedGears() { return importedGears; } - public void setImportedGears(ReferentialImportResult<Gear> importedGears) { + public void setImportedGears(GenericFormatReferentialImportResult<Gear, Integer> importedGears) { this.importedGears = importedGears; } - public ReferentialImportResult<Person> getImportedPersons() { + public GenericFormatReferentialImportResult<Person, Integer> getImportedPersons() { return importedPersons; } - public void setImportedPersons(ReferentialImportResult<Person> importedPersons) { + public void setImportedPersons(GenericFormatReferentialImportResult<Person, Integer> importedPersons) { this.importedPersons = importedPersons; } - public ReferentialImportResult<Species> getImportedSpecies() { + public GenericFormatReferentialImportResult<Species, Integer> getImportedSpecies() { return importedSpecies; } - public void setImportedSpecies(ReferentialImportResult<Species> importedSpecies) { + public void setImportedSpecies(GenericFormatReferentialImportResult<Species, Integer> importedSpecies) { this.importedSpecies = importedSpecies; } - public ReferentialImportResult<Vessel> getImportedVessels() { + public GenericFormatReferentialImportResult<Vessel, String> getImportedVessels() { return importedVessels; } - public void setImportedVessels(ReferentialImportResult<Vessel> importedVessels) { + public void setImportedVessels(GenericFormatReferentialImportResult<Vessel, String> importedVessels) { this.importedVessels = importedVessels; } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index e20e443..fc6a253 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -145,28 +145,31 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); archive.checkArchiveLayout(); - try (GlobalImportContext importContext = new GlobalImportContext(persistenceService, - archive, - ';', - program, - context.getSampleCategoryModel())) { - - GenericFormatImportResult result = new GenericFormatImportResult(archive); - - checkSampleCategoryModel(importContext, result, progressionModel); - importTemporaryGears(importContext, result, progressionModel); - importTemporaryPersons(importContext, result, progressionModel); - importTemporarySpecies(importContext, result, progressionModel); - importTemporaryVessels(importContext, result, progressionModel); - importProtocol(importContext, result, progressionModel); - importCruises(importContext, result, progressionModel); - importGearCaracteristics(importContext, result, progressionModel); - importOperations(importContext, result, progressionModel); - importParameters(importContext, result, progressionModel); - importCatches(importContext, result, progressionModel); - importMarineLitters(importContext, result, progressionModel); - importIndividualObservations(importContext, result, progressionModel); - importAccidentalCatches(importContext, result, progressionModel); + GenericFormatImportRequest request = new GenericFormatImportRequest(persistenceService, + archive, + ';', + program, + context.getSampleCategoryModel()); + + try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, persistenceService)) { + + GenericFormatImportResult result = new GenericFormatImportResult(request); + + checkSampleCategoryModel(importContext, progressionModel); + importTemporaryGears(importContext, progressionModel); + importTemporaryPersons(importContext, progressionModel); + importTemporarySpecies(importContext, progressionModel); + importTemporaryVessels(importContext, progressionModel); + importProtocol(importContext, progressionModel); + + importCruises(importContext, progressionModel); + importGearCaracteristics(importContext, progressionModel); + importOperations(importContext, progressionModel); + importParameters(importContext, progressionModel); + importCatches(importContext, progressionModel); + importMarineLitters(importContext, progressionModel); + importIndividualObservations(importContext, progressionModel); + importAccidentalCatches(importContext, progressionModel); return result; @@ -177,7 +180,7 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void checkSampleCategoryModel(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void checkSampleCategoryModel(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); Iterable<ImportRow<SampleCategoryRow>> rows = importContext.loadSampleCategories(); @@ -188,102 +191,110 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importTemporaryGears(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporaryGears(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporaryGears")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialGearsPathExists()) { - ReferentialImportRequest<Gear, Integer> requestResult = referentialTemporaryGearService.createReferentialImportRequest(); + ReferentialImportRequest<Gear, Integer> referentialImportRequest = referentialTemporaryGearService.createReferentialImportRequest(); try (CsvConsumerForTemporaryGear consumer = importContext.loadTemporaryGears()) { for (ImportRow<GearRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close gears.csv file", e); } - ReferentialImportResult<Gear> importResult = referentialTemporaryGearService.executeImportRequest(requestResult); - result.setImportedGears(importResult); + ReferentialImportResult<Gear> referentialImportResult = referentialTemporaryGearService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Gear, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedGears(genericFormatReferentialImportResult); } } - protected void importTemporaryPersons(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporaryPersons(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporaryPersons")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialPersonsPathExists()) { - ReferentialImportRequest<Person, Integer> requestResult = referentialTemporaryPersonService.createReferentialImportRequest(); + ReferentialImportRequest<Person, Integer> referentialImportRequest = referentialTemporaryPersonService.createReferentialImportRequest(); try (CsvConsumerForTemporaryPerson consumer = importContext.loadTemporaryPersons()) { for (ImportRow<PersonRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close person.csv file", e); } - ReferentialImportResult<Person> importResult = referentialTemporaryPersonService.executeImportRequest(requestResult); - result.setImportedPersons(importResult); + ReferentialImportResult<Person> referentialImportResult = referentialTemporaryPersonService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Person, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedPersons(genericFormatReferentialImportResult); } } - protected void importTemporarySpecies(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporarySpecies(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporarySpecies")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialSpeciesPathExists()) { - ReferentialImportRequest<Species, Integer> requestResult = referentialTemporarySpeciesService.createReferentialImportRequest(); + ReferentialImportRequest<Species, Integer> referentialImportRequest = referentialTemporarySpeciesService.createReferentialImportRequest(); try (CsvConsumerForTemporarySpecies consumer = importContext.loadTemporarySpecies()) { for (ImportRow<SpeciesRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close species.csv file", e); } - ReferentialImportResult<Species> importResult = referentialTemporarySpeciesService.executeImportRequest(requestResult); - result.setImportedSpecies(importResult); + ReferentialImportResult<Species> referentialImportResult = referentialTemporarySpeciesService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Species, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedSpecies(genericFormatReferentialImportResult); } } - protected void importTemporaryVessels(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporaryVessels(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporaryVessels")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialVesselsPathExists()) { - ReferentialImportRequest<Vessel, String> requestResult = referentialTemporaryVesselService.createReferentialImportRequest(); + ReferentialImportRequest<Vessel, String> referentialImportRequest = referentialTemporaryVesselService.createReferentialImportRequest(); try (CsvConsumerForTemporaryVessel consumer = importContext.loadTemporaryVessels()) { for (ImportRow<VesselRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close vessel.csv file", e); } - ReferentialImportResult<Vessel> importResult = referentialTemporaryVesselService.executeImportRequest(requestResult); - result.setImportedVessels(importResult); + ReferentialImportResult<Vessel> referentialImportResult = referentialTemporaryVesselService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Vessel, String> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedVessels(genericFormatReferentialImportResult); } } - protected void importProtocol(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importProtocol(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.load.protocol")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isProtocolExists()) { TuttiProtocol tuttiProtocol = protocolImportExportService.importProtocol(archive.getProtocolPath().toFile()); @@ -317,19 +328,19 @@ public class GenericFormatImportService extends AbstractTuttiService { } - result.setProtocol(tuttiProtocol); + importContext.getImportResult().setProtocol(tuttiProtocol); } } - protected void importCruises(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importCruises(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.cruises")); try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { for (ImportRow<SurveyRow> row : consumer) { - consumer.checkRow(row, importContext, result, validationService); + consumer.checkRow(row, importContext, validationService); } } catch (IOException e) { @@ -338,13 +349,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importGearCaracteristics(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importGearCaracteristics(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.gearCaracteristics")); try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { for (ImportRow<GearCaracteristicRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -353,13 +364,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importOperations(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importOperations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.operations")); try (CsvConsumerForOperation consumer = importContext.loadOperations()) { for (ImportRow<OperationRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -368,13 +379,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importParameters(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importParameters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.parameters")); try (CsvConsumerForParameter consumer = importContext.loadParameters()) { for (ImportRow<ParameterRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -383,13 +394,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importCatches(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.catches")); try (CsvConsumerForCatch consumer = importContext.loadCatches()) { for (ImportRow<CatchRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -398,13 +409,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importAccidentalCatches(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importAccidentalCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.accidentalCatches")); try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { for (ImportRow<AccidentalCatchRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -413,13 +424,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importIndividualObservations(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importIndividualObservations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.individualObservations")); try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { for (ImportRow<IndividualObservationRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -428,13 +439,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importMarineLitters(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importMarineLitters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.marineLitters")); try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { for (ImportRow<MarineLitterRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java deleted file mode 100644 index f39eef3..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ /dev/null @@ -1,259 +0,0 @@ -package fr.ifremer.tutti.service.genericformat; - -import com.google.common.collect.ImmutableSet; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; -import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; -import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; -import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; -import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; -import fr.ifremer.tutti.service.csv.GearParserFormatter; -import fr.ifremer.tutti.service.csv.HarbourParserFormatter; -import fr.ifremer.tutti.service.csv.PersonListParserFormatter; -import fr.ifremer.tutti.service.csv.PersonParserFormatter; -import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; -import fr.ifremer.tutti.service.csv.VesselListParserFormatter; -import fr.ifremer.tutti.service.csv.VesselParserFormatter; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; -import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; -import org.nuiton.csv.ImportRow; - -import java.io.Closeable; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GlobalImportContext implements Closeable { - - private final VesselParserFormatter vesselParser; - - private final HarbourParserFormatter harbourParser; - - private final GearParserFormatter mandatoryGearParser; - - private final PersonListParserFormatter listPersonParser; - - private final CaracteristicParserFormatter caracteristicParser; - - private final FishingOperationStrataParserFormatter fishingOperationStrataParser; - - private final FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; - - private final FishingOperationLocationParserFormatter fishingOperationLocationParser; - - private final VesselListParserFormatter listVesselParser; - - private final SpeciesParserFormatter speciesParser; - - private final CaracteristicValueParserFormatter marineLitterCategoryValueParser; - - private final CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; - - private final GenericFormatArchive archive; - - private final char csvSeparator; - - private final SampleCategoryModel sampleCategoryModel; - - private final Set<Cruise> existingCruises; - - private final TuttiProtocol oldProtocol; - - public GlobalImportContext(PersistenceService persistenceService, - GenericFormatArchive archive, - char csvSeparator, - Program program, - SampleCategoryModel sampleCategoryModel) { - this.archive = archive; - this.csvSeparator = csvSeparator; - this.sampleCategoryModel = sampleCategoryModel; - this.vesselParser = VesselParserFormatter.newParser(persistenceService); - this.harbourParser = HarbourParserFormatter.newParser(persistenceService); - this.listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); - this.mandatoryGearParser = GearParserFormatter.newParser(persistenceService); - this.caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); - this.fishingOperationStrataParser = FishingOperationStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); - this.fishingOperationSubStrataParser = FishingOperationSubStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); - this.fishingOperationLocationParser = FishingOperationLocationParserFormatter.newParser(persistenceService, program.getZone().getId()); - this.listVesselParser = VesselListParserFormatter.newParser(vesselParser); - this.speciesParser = SpeciesParserFormatter.newParser(persistenceService); - this.marineLitterCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterCategoryCaracteristic()); - this.marineLitterSizeCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); - - List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); - this.existingCruises = ImmutableSet.copyOf(allCruise); - this.oldProtocol = persistenceService.getProtocol(); - - } - - @Override - public void close() throws IOException { - - //TODO Close - //archive.close(); - - } - - public GenericFormatArchive getArchive() { - return archive; - } - - public VesselParserFormatter getVesselParser() { - return vesselParser; - } - - public HarbourParserFormatter getHarbourParser() { - return harbourParser; - } - - public PersonListParserFormatter getListPersonParser() { - return listPersonParser; - } - - public GearParserFormatter getGearParser() { - return mandatoryGearParser; - } - - public CaracteristicParserFormatter getCaracteristicParser() { - return caracteristicParser; - } - - public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { - return fishingOperationStrataParser; - } - - public FishingOperationSubStrataParserFormatter getFishingOperationSubStrataParser() { - return fishingOperationSubStrataParser; - } - - public FishingOperationLocationParserFormatter getFishingOperationLocationParser() { - return fishingOperationLocationParser; - } - - public VesselListParserFormatter getListVesselParser() { - return listVesselParser; - } - - public SpeciesParserFormatter getSpeciesParser() { - return speciesParser; - } - - public CaracteristicValueParserFormatter getMarineLitterCategoryValueParser() { - return marineLitterCategoryValueParser; - } - - public CaracteristicValueParserFormatter getMarineLitterSizeCategoryValueParser() { - return marineLitterSizeCategoryValueParser; - } - - public SampleCategoryModel getSampleCategoryModel() { - return sampleCategoryModel; - } - - public boolean isCruiseExists(Cruise cruise) { - - boolean equals = false; - for (Cruise existingCruise : existingCruises) { - - equals = Cruises.equals(cruise, existingCruise); - if (equals) { - break; - } - - } - return equals; - - } - - public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { - CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(archive.getSampleCategoryModelPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForSurvey loadSurveys() { - CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(archive.getSurveyPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForGearCaracteristic loadGearCaracteristics() { - CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(archive.getGearCaracteristicsPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForOperation loadOperations() { - CsvConsumerForOperation consumer = new CsvConsumerForOperation(archive.getOperationPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForParameter loadParameters() { - CsvConsumerForParameter consumer = new CsvConsumerForParameter(archive.getParameterPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForCatch loadCatches() { - CsvConsumerForCatch consumer = new CsvConsumerForCatch(archive.getSampleCategoryModelPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForMarineLitter loadMarineLitters() { - CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(archive.getMarineLitterPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForIndividualObservation loadIndividualObservations() { - CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(archive.getIndividualObservationPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForAccidentalCatch loadAccidentalCatches() { - CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(archive.getAccidentalCatchPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForTemporaryGear loadTemporaryGears() { - CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(archive.getTemporaryReferentialGearsPath(), csvSeparator); - return consumer; - } - - public CsvConsumerForTemporaryPerson loadTemporaryPersons() { - CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(archive.getTemporaryReferentialPersonsPath(), csvSeparator); - return consumer; - } - - public CsvConsumerForTemporarySpecies loadTemporarySpecies() { - CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(archive.getTemporaryReferentialSpeciesPath(), csvSeparator); - return consumer; - } - - public CsvConsumerForTemporaryVessel loadTemporaryVessels() { - CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(archive.getTemporaryReferentialVesselsPath(), csvSeparator); - return consumer; - } - - public TuttiProtocol getOldProtocol() { - return oldProtocol; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java index ce2a6c4..8cc531b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { - public CsvConsumerForAccidentalCatch(Path file, char separator, GlobalImportContext importContext) { - super(file, AccidentalCatchModel.forImport(separator, importContext)); + public CsvConsumerForAccidentalCatch(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, AccidentalCatchModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<AccidentalCatchRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<AccidentalCatchRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java index dd87e52..d597d7b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -1,12 +1,12 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.CatchModel; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +18,11 @@ import java.nio.file.Path; */ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { - public CsvConsumerForCatch(Path file, char separator, GlobalImportContext importContext) { - super(file, CatchModel.forImport(separator, importContext)); + public CsvConsumerForCatch(Path file, char separator, SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { + super(file, CatchModel.forImport(separator, sampleCategoryModel, parserFactory)); } - public void checkRow(ImportRow<CatchRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<CatchRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +32,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java index 1937f19..5bfe65d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { - public CsvConsumerForGearCaracteristic(Path file, char separator, GlobalImportContext importContext) { - super(file, GearCaracteristicModel.forImport(separator, importContext)); + public CsvConsumerForGearCaracteristic(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, GearCaracteristicModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<GearCaracteristicRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<GearCaracteristicRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java index d9af30a..ed03845 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { - public CsvConsumerForIndividualObservation(Path file, char separator, GlobalImportContext importContext) { - super(file, IndividualObservationModel.forImport(separator, importContext)); + public CsvConsumerForIndividualObservation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, IndividualObservationModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<IndividualObservationRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<IndividualObservationRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java index c3f6ba4..d568ec3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, MarineLitterModel> { - public CsvConsumerForMarineLitter(Path file, char separator, GlobalImportContext importContext) { - super(file, MarineLitterModel.forImport(separator, importContext)); + public CsvConsumerForMarineLitter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, MarineLitterModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<MarineLitterRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<MarineLitterRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, Mar } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java index a33f92d..ac95852 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.OperationModel; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, OperationModel> { - public CsvConsumerForOperation(Path file, char separator, GlobalImportContext importContext) { - super(file, OperationModel.forImport(separator, importContext)); + public CsvConsumerForOperation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, OperationModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<OperationRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<OperationRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, Operation } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java index 0fbf829..f3a790f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, ParameterModel> { - public CsvConsumerForParameter(Path file, char separator, GlobalImportContext importContext) { - super(file, ParameterModel.forImport(separator, importContext)); + public CsvConsumerForParameter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, ParameterModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<ParameterRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<ParameterRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, Parameter } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index ebe7072..661bc05 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -1,7 +1,7 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; @@ -15,8 +15,8 @@ import java.nio.file.Path; */ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, SampleCategoryModel> { - public CsvConsumerForSampleCategory(Path file, char separator, GlobalImportContext importContext) { - super(file, SampleCategoryModel.forImport(separator, importContext)); + public CsvConsumerForSampleCategory(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, SampleCategoryModel.forImport(separator, parserFactory)); } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index 4ac3416..5490b17 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -3,12 +3,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.validator.NuitonValidatorResult; import java.nio.file.Path; @@ -21,11 +20,11 @@ import java.nio.file.Path; */ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { - public CsvConsumerForSurvey(Path file, char separator, GlobalImportContext importContext) { - super(file, SurveyModel.forImport(separator, importContext)); + public CsvConsumerForSurvey(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, SurveyModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<SurveyRow> row, GlobalImportContext importContext, GenericFormatImportResult result, ValidationService validationService) { + public void checkRow(ImportRow<SurveyRow> row, GenericFormatImportContext importContext, ValidationService validationService) { if (row.isValid()) { @@ -50,12 +49,7 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index 063cc58..9af43f2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * TODO @@ -47,10 +47,10 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden } - public static AccidentalCatchModel forImport(char separator, GlobalImportContext globalImportContext) { + public static AccidentalCatchModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { AccidentalCatchModel importModel = new AccidentalCatchModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -92,7 +92,7 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -105,10 +105,10 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newIgnoredColumn("Rang_Engin"); newIgnoredColumn("Id_Lot"); - newMandatoryColumn("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 9f50a9f..c162301 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -33,7 +33,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import org.apache.commons.beanutils.PropertyUtils; import org.nuiton.csv.ValueSetter; @@ -57,10 +57,10 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { } - public static CatchModel forImport(char separator, GlobalImportContext globalImportContext) { + public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { CatchModel importModel = new CatchModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(sampleCategoryModel, parserFactory); return importModel; } @@ -137,9 +137,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { } - protected void forImport(GlobalImportContext globalImportContext) { - - SampleCategoryModel sampleCategoryModel = globalImportContext.getSampleCategoryModel(); + protected void forImport(SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -151,7 +149,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newIgnoredColumn("Engin"); newIgnoredColumn("Rang_Engin"); - newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Code_Espece_Campagne"); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); @@ -173,7 +171,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { // mensuration - newMandatoryColumn("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_Longueur"); newMandatoryColumn("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); newMandatoryColumn("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index e8216a3..a000522 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * To export gear caracteristics. @@ -45,10 +45,10 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } - public static GearCaracteristicModel forImport(char separator, GlobalImportContext globalImportContext) { + public static GearCaracteristicModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { GearCaracteristicModel importModel = new GearCaracteristicModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -85,7 +85,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -95,11 +95,11 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC //FIXME newMandatoryColumn("Rang_Engin", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); - newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getGearParser()); + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, parserFactory.getMandatoryGearParser()); newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index 5222f4b..81f60e1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a individual observation export. @@ -47,10 +47,10 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I } - public static IndividualObservationModel forImport(char separator, GlobalImportContext globalImportContext) { + public static IndividualObservationModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { IndividualObservationModel importModel = new IndividualObservationModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -93,7 +93,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -106,10 +106,10 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newIgnoredColumn("Rang_Engin"); newIgnoredColumn("Id_Lot"); - newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 1af9d26..4daee37 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a marine litter export. @@ -47,10 +47,10 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt } - public static MarineLitterModel forImport(char separator, GlobalImportContext globalImportContext) { + public static MarineLitterModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { MarineLitterModel importModel = new MarineLitterModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -91,7 +91,7 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -109,8 +109,8 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt newMandatoryColumn("Poids", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); newMandatoryColumn("Commentaire", MarineLitterBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Categorie_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, globalImportContext.getMarineLitterCategoryValueParser()); - newMandatoryColumn("Categorie_Taille_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, globalImportContext.getMarineLitterSizeCategoryValueParser()); + newMandatoryColumn("Categorie_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, parserFactory.getMarineLitterCategoryValueParser()); + newMandatoryColumn("Categorie_Taille_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, parserFactory.getMarineLitterSizeCategoryValueParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 98126c6..9c954a9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a operation export. @@ -48,10 +48,10 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - public static OperationModel forImport(char separator, GlobalImportContext globalImportContext) { + public static OperationModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { OperationModel importModel = new OperationModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -169,7 +169,7 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -256,12 +256,12 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newMandatoryColumn("Poids_Total_Macro_Dechet", OperationRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); newIgnoredColumn("Poids_Total_Macro_Dechet_Calcule"); - newMandatoryColumn("Navire_Id", FishingOperation.PROPERTY_VESSEL, globalImportContext.getVesselParser()); - newMandatoryColumn("Strate_Id", FishingOperation.PROPERTY_STRATA, globalImportContext.getFishingOperationStrataParser()); - newMandatoryColumn("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, globalImportContext.getFishingOperationSubStrataParser()); - newMandatoryColumn("Localite_Id", FishingOperation.PROPERTY_LOCATION, globalImportContext.getFishingOperationLocationParser()); - newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, globalImportContext.getListPersonParser()); - newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, globalImportContext.getListVesselParser()); + newMandatoryColumn("Navire_Id", FishingOperation.PROPERTY_VESSEL, parserFactory.getVesselParser()); + newMandatoryColumn("Strate_Id", FishingOperation.PROPERTY_STRATA, parserFactory.getFishingOperationStrataParser()); + newMandatoryColumn("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, parserFactory.getFishingOperationSubStrataParser()); + newMandatoryColumn("Localite_Id", FishingOperation.PROPERTY_LOCATION, parserFactory.getFishingOperationLocationParser()); + newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, parserFactory.getListPersonParser()); + newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, parserFactory.getListVesselParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index f9db65d..856bff8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a parameter export. @@ -45,10 +45,10 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> } - public static ParameterModel forImport(char separator, GlobalImportContext globalImportContext) { + public static ParameterModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { ParameterModel importModel = new ParameterModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -84,7 +84,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -94,7 +94,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java index bb63285..c86ac2f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java @@ -3,7 +3,7 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Created on 2/8/15. @@ -21,10 +21,10 @@ public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCa } - public static SampleCategoryModel forImport(char separator, GlobalImportContext globalImportContext) { + public static SampleCategoryModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { SampleCategoryModel importModel = new SampleCategoryModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -50,11 +50,11 @@ public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCa } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn(SampleCategoryRow.PROPERTY_CODE); newMandatoryColumn(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); - newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index 7b3a4a5..b33b316 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a survey export. @@ -45,10 +45,10 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } - public static SurveyModel forImport(char separator, GlobalImportContext globalImportContext) { + public static SurveyModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { SurveyModel importModel = new SurveyModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -93,7 +93,7 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -109,11 +109,11 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newIgnoredColumn("Resp_Salle_Tri"); newMandatoryColumn("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, globalImportContext.getVesselParser()); - newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, globalImportContext.getHarbourParser()); - newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, globalImportContext.getHarbourParser()); - newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, globalImportContext.getListPersonParser()); - newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, globalImportContext.getListPersonParser()); + newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, parserFactory.getVesselParser()); + newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, parserFactory.getHarbourParser()); + newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, parserFactory.getHarbourParser()); + newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, parserFactory.getListPersonParser()); + newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, parserFactory.getListPersonParser()); } diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 4ad1f0e..bad7cf5 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -7,25 +7,25 @@ tutti.csv.import.error.on.field=Colonne %s \: %s tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s tutti.error.messages=Erreurs :\n %s tutti.fatal.messages=Erreurs critiques :\n %s -tutti.genericFormat.import.accidentalCatches= -tutti.genericFormat.import.catches= -tutti.genericFormat.import.cruises= +tutti.genericFormat.import.accidentalCatches=Import des captures accidentelles +tutti.genericFormat.import.catches=Import des captures +tutti.genericFormat.import.cruises=Import des campagnes tutti.genericFormat.import.error.cruiseAlreadyExist= tutti.genericFormat.import.error.cruiseNotValid= -tutti.genericFormat.import.gearCaracteristics= -tutti.genericFormat.import.individualObservations= -tutti.genericFormat.import.marineLitters= -tutti.genericFormat.import.operations= -tutti.genericFormat.import.parameters= -tutti.genericFormat.import.protocol= -tutti.genericFormat.import.sampleCategoryModel= -tutti.genericFormat.import.temporaryGears= -tutti.genericFormat.import.temporaryPersons= -tutti.genericFormat.import.temporarySpecies= -tutti.genericFormat.import.temporaryVessels= +tutti.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin +tutti.genericFormat.import.individualObservations=Import des observations individuelles +tutti.genericFormat.import.marineLitters=Import des macro-déchets +tutti.genericFormat.import.operations=Import des traits +tutti.genericFormat.import.parameters=Import des paramètres de trait +tutti.genericFormat.import.protocol=Import d'un nouveau protocol %s +tutti.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation +tutti.genericFormat.import.temporaryGears=Import des références temporaires d'engins +tutti.genericFormat.import.temporaryPersons=Import des références temporaires de personnes +tutti.genericFormat.import.temporarySpecies=Import des références temporaires de Taxons +tutti.genericFormat.import.temporaryVessels=Import des références temporaires de navires tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique \:\n%s -tutti.genericFormat.load.protocol= -tutti.genericFormat.reuse.protocol= +tutti.genericFormat.load.protocol=Import du protocol +tutti.genericFormat.reuse.protocol=Réutilisation du protocol existant %s tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit b08591081082678e8bad85a2c6ff801ce14e4bc6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:41:32 2015 +0100 - introduce id translation map for temporary referentials - reformat package --- .../csv/AbstractTuttiImportExportModel.java | 10 ++--- .../service/csv/AbstractTuttiImportModel.java | 10 ++--- .../tutti/service/csv/BeanIndexNullableGetter.java | 10 ++--- .../tutti/service/csv/BeanNullableGetter.java | 10 ++--- .../tutti/service/csv/BeanPropertyFormatter.java | 10 ++--- .../service/csv/CaracteristicParserFormatter.java | 2 +- .../service/csv/EntityParserFormatterSupport.java | 41 ++++++++++++++----- .../service/csv/EnumByNameParserFormatter.java | 10 ++--- .../FishingOperationLocationParserFormatter.java | 15 +------ .../csv/FishingOperationStrataParserFormatter.java | 21 ++-------- .../FishingOperationSubStrataParserFormatter.java | 15 +------ .../tutti/service/csv/GearParserFormatter.java | 27 ++++++++++--- .../tutti/service/csv/HarbourParserFormatter.java | 10 ++--- .../tutti/service/csv/ListIntegerFormatter.java | 10 ++--- .../tutti/service/csv/PersonParserFormatter.java | 27 ++++++++++--- .../tutti/service/csv/SpeciesParserFormatter.java | 26 +++++++++--- .../tutti/service/csv/StringParserFormatter.java | 10 ++--- .../tutti/service/csv/TuttiRepeatableExport.java | 10 ++--- .../tutti/service/csv/VesselParserFormatter.java | 26 +++++++++--- .../GenericFormatImportEntityParserFactory.java | 23 ++++++----- .../GenericFormatReferentialImportResult.java | 46 +++++++++++++++------- .../genericformat/csv/GearCaracteristicModel.java | 2 +- 22 files changed, 217 insertions(+), 154 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 9b05c7a..4204269 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -13,11 +13,11 @@ import java.util.List; import java.util.Map; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> { public AbstractTuttiImportExportModel(char separator) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java index 18e9c1b..ed1a5a4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java @@ -6,11 +6,11 @@ import org.nuiton.csv.ext.AbstractImportModel; import java.util.Map; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> { public AbstractTuttiImportModel(char separator) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java index c665a86..e9d2945 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java @@ -8,11 +8,11 @@ import java.lang.reflect.InvocationTargetException; import java.util.Collection; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class BeanIndexNullableGetter<E, T> implements ValueGetter<E, T> { protected String collectionName; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java index 25048eb..e901b10 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java @@ -7,11 +7,11 @@ import org.nuiton.csv.ValueGetter; import java.lang.reflect.InvocationTargetException; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class BeanNullableGetter<E, T> implements ValueGetter<E, T> { protected String propertyName; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java index 30620c6..91042ad 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java @@ -7,11 +7,11 @@ import org.nuiton.csv.ValueFormatter; import static org.nuiton.i18n.I18n.t; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class BeanPropertyFormatter<E> implements ValueFormatter<E> { protected final String defaultNullValue; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java index f8e1f9d..57efbff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java @@ -28,7 +28,7 @@ public class CaracteristicParserFormatter extends EntityParserFormatterSupport<C private final PersistenceService persistenceService; protected CaracteristicParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Caracteristic.class); + super("", technical, Caracteristic.class); this.persistenceService = persistenceService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java index 4a17fbe..f82b21d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java @@ -17,13 +17,16 @@ import java.util.Map; */ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implements ValueParserFormatter<E> { + protected final String formatNullValue; + protected final boolean technical; protected final Class<E> entityType; protected Map<String, E> entitiesById; - protected EntityParserFormatterSupport(boolean technical, Class<E> entityType) { + protected EntityParserFormatterSupport(String formatNullValue, boolean technical, Class<E> entityType) { + this.formatNullValue = formatNullValue; this.technical = technical; this.entityType = entityType; } @@ -50,14 +53,8 @@ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implem E result = null; if (StringUtils.isNotBlank(value)) { - // get entity from universe - result = getEntitiesById().get(value); - - if (result == null) { - - throw new EntityNotFoundException(entityType, value); + result = parseNotBlankValue(value); - } } return result; @@ -65,8 +62,17 @@ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implem @Override public String format(E e) { - String value = ""; - if (e != null) { + + String value; + if (e == null) { + + if (technical) { + value = ""; + } else { + value = formatNullValue; + } + + } else { if (technical) { value = formatTechnical(e); @@ -76,6 +82,21 @@ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implem } return value; + + } + + protected E parseNotBlankValue(String value) { + + E result = getEntitiesById().get(value); + + if (result == null) { + + throw new EntityNotFoundException(entityType, value); + + } + + return result; + } protected String formatTechnical(E e) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java index d30d11a..14886db 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java @@ -8,11 +8,11 @@ import java.text.ParseException; import static org.nuiton.i18n.I18n.t; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class EnumByNameParserFormatter<E extends Enum<E>> implements ValueParserFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java index 3a55bb9..216cc7a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java @@ -31,7 +31,7 @@ public class FishingOperationLocationParserFormatter extends EntityParserFormatt private final PersistenceService persistenceService; protected FishingOperationLocationParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { - super(technical, TuttiLocation.class); + super("NA", technical, TuttiLocation.class); this.zoneId = zoneId; this.persistenceService = persistenceService; } @@ -46,17 +46,4 @@ public class FishingOperationLocationParserFormatter extends EntityParserFormatt return TuttiLocations.GET_NAME.apply(value); } - @Override - public String format(TuttiLocation value) { - - String format; - if (!technical && value == null) { - format = "NA"; - } else { - format = super.format(value); - } - return format; - - } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java index 2b66085..52fc647 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java @@ -15,15 +15,15 @@ import java.util.List; public class FishingOperationStrataParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { public static FishingOperationStrataParserFormatter newFormatter() { - return new FishingOperationStrataParserFormatter(false,null, null); + return new FishingOperationStrataParserFormatter(false, null, null); } public static FishingOperationStrataParserFormatter newTechnicalFormatter() { - return new FishingOperationStrataParserFormatter(true,null, null); + return new FishingOperationStrataParserFormatter(true, null, null); } public static FishingOperationStrataParserFormatter newParser(PersistenceService persistenceService, String zoneId) { - return new FishingOperationStrataParserFormatter(true,persistenceService, zoneId); + return new FishingOperationStrataParserFormatter(true, persistenceService, zoneId); } private final String zoneId; @@ -31,7 +31,7 @@ public class FishingOperationStrataParserFormatter extends EntityParserFormatter private final PersistenceService persistenceService; protected FishingOperationStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { - super(technical, TuttiLocation.class); + super("NA", technical, TuttiLocation.class); this.zoneId = zoneId; this.persistenceService = persistenceService; } @@ -46,17 +46,4 @@ public class FishingOperationStrataParserFormatter extends EntityParserFormatter return TuttiLocations.GET_NAME.apply(value); } - @Override - public String format(TuttiLocation value) { - - String format; - if (!technical && value == null) { - format = "NA"; - } else { - format = super.format(value); - } - return format; - - } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java index 5135d94..7d919c1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java @@ -31,7 +31,7 @@ public class FishingOperationSubStrataParserFormatter extends EntityParserFormat private final PersistenceService persistenceService; protected FishingOperationSubStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { - super(technical, TuttiLocation.class); + super("NA", technical, TuttiLocation.class); this.zoneId = zoneId; this.persistenceService = persistenceService; } @@ -46,17 +46,4 @@ public class FishingOperationSubStrataParserFormatter extends EntityParserFormat return TuttiLocations.GET_NAME.apply(value); } - @Override - public String format(TuttiLocation value) { - - String format; - if (!technical && value == null) { - format = "NA"; - } else { - format = super.format(value); - } - return format; - - } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java index 4de0f60..19b02f0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.service.PersistenceService; import java.util.List; +import java.util.Map; /** * Created on 2/14/15. @@ -15,22 +16,25 @@ import java.util.List; public class GearParserFormatter extends EntityParserFormatterSupport<Gear> { public static GearParserFormatter newFormatter() { - return new GearParserFormatter(false, null); + return new GearParserFormatter(false, null, null); } public static GearParserFormatter newTechnicalFormatter() { - return new GearParserFormatter(true, null); + return new GearParserFormatter(true, null, null); } - public static GearParserFormatter newParser(PersistenceService persistenceService) { - return new GearParserFormatter(true, persistenceService); + public static GearParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new GearParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected GearParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Gear.class); + private final Map<String, String> idTranslationMap; + + protected GearParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Gear.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -45,4 +49,15 @@ public class GearParserFormatter extends EntityParserFormatterSupport<Gear> { return result; } + + @Override + protected Gear parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java index c3f124f..8e4ba1e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java @@ -14,22 +14,22 @@ import java.util.List; */ public class HarbourParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { - public static HarbourParserFormatter newFormatter() { - return new HarbourParserFormatter(false,null); + return new HarbourParserFormatter(false, null); } + public static HarbourParserFormatter newTechnicalFormatter() { - return new HarbourParserFormatter(true,null); + return new HarbourParserFormatter(true, null); } public static HarbourParserFormatter newParser(PersistenceService persistenceService) { - return new HarbourParserFormatter(true,persistenceService); + return new HarbourParserFormatter(true, persistenceService); } private final PersistenceService persistenceService; protected HarbourParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, TuttiLocation.class); + super("", technical, TuttiLocation.class); this.persistenceService = persistenceService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java index 4b374d5..1bdf0a9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java @@ -10,11 +10,11 @@ import java.text.ParseException; import java.util.List; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class ListIntegerFormatter implements ValueParserFormatter<List<Integer>> { @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java index e634a36..19289dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Persons; import fr.ifremer.tutti.service.PersistenceService; import java.util.List; +import java.util.Map; /** * Created on 2/14/15. @@ -15,22 +16,25 @@ import java.util.List; public class PersonParserFormatter extends EntityParserFormatterSupport<Person> { public static PersonParserFormatter newFormatter() { - return new PersonParserFormatter(false,null); + return new PersonParserFormatter(false, null, null); } public static PersonParserFormatter newTechnicalFormatter() { - return new PersonParserFormatter(true,null); + return new PersonParserFormatter(true, null, null); } - public static PersonParserFormatter newParser(PersistenceService persistenceService) { - return new PersonParserFormatter(true,persistenceService); + public static PersonParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new PersonParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected PersonParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Person.class); + private final Map<String, String> idTranslationMap; + + protected PersonParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Person.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -42,4 +46,15 @@ public class PersonParserFormatter extends EntityParserFormatterSupport<Person> protected String formatBusiness(Person person) { return Persons.GET_FULL_NAME.apply(person); } + + @Override + protected Person parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java index f56e3e4..c640b2e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java @@ -16,22 +16,25 @@ import java.util.Map; public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species> { public static SpeciesParserFormatter newFormatter() { - return new SpeciesParserFormatter(false, null); + return new SpeciesParserFormatter(false, null, null); } public static SpeciesParserFormatter newTechnicalFormatter() { - return new SpeciesParserFormatter(true, null); + return new SpeciesParserFormatter(true, null, null); } - public static SpeciesParserFormatter newParser(PersistenceService persistenceService) { - return new SpeciesParserFormatter(true, persistenceService); + public static SpeciesParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new SpeciesParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected SpeciesParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Species.class); + private final Map<String, String> idTranslationMap; + + protected SpeciesParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Species.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -58,4 +61,15 @@ public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species protected String formatTechnical(Species value) { return Speciess.GET_REFERECE_TAXON_ID.apply(value); } + + @Override + protected Species parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java index 785654c..b5b5246 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java @@ -3,11 +3,11 @@ package fr.ifremer.tutti.service.csv; import org.nuiton.csv.Common; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class StringParserFormatter extends Common.NullableParserFormatter<String> { public StringParserFormatter(String defaultValue, boolean nullAllowed) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java index e273d4b..2d658cb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java @@ -7,11 +7,11 @@ import java.io.Writer; import java.util.Collections; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class TuttiRepeatableExport<E> extends RepeatableExport<E> { public TuttiRepeatableExport(ExportModel<E> model) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java index 56de011..e90188a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessels; import fr.ifremer.tutti.service.PersistenceService; import java.util.List; +import java.util.Map; /** * Created on 2/14/15. @@ -15,22 +16,25 @@ import java.util.List; public class VesselParserFormatter extends EntityParserFormatterSupport<Vessel> { public static VesselParserFormatter newFormatter() { - return new VesselParserFormatter(false, null); + return new VesselParserFormatter(false, null, null); } public static VesselParserFormatter newTechnicalFormatter() { - return new VesselParserFormatter(true, null); + return new VesselParserFormatter(true, null, null); } - public static VesselParserFormatter newParser(PersistenceService persistenceService) { - return new VesselParserFormatter(true, persistenceService); + public static VesselParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new VesselParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected VesselParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Vessel.class); + private final Map<String, String> idTranslationMap; + + protected VesselParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Vessel.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -46,4 +50,14 @@ public class VesselParserFormatter extends EntityParserFormatterSupport<Vessel> } + @Override + protected Vessel parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java index d429821..ebe644d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java @@ -27,11 +27,13 @@ public class GenericFormatImportEntityParserFactory { private final GenericFormatImportRequest importRequest; + private final GenericFormatImportResult importResult; + private VesselParserFormatter vesselParser; private HarbourParserFormatter harbourParser; - private GearParserFormatter mandatoryGearParser; + private GearParserFormatter gearParser; private PersonListParserFormatter listPersonParser; @@ -52,14 +54,16 @@ public class GenericFormatImportEntityParserFactory { private CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; public GenericFormatImportEntityParserFactory(PersistenceService persistenceService, - GenericFormatImportRequest importRequest) { + GenericFormatImportRequest importRequest, + GenericFormatImportResult importResult) { this.persistenceService = persistenceService; this.importRequest = importRequest; + this.importResult = importResult; } public VesselParserFormatter getVesselParser() { if (vesselParser == null) { - vesselParser = VesselParserFormatter.newParser(persistenceService); + vesselParser = VesselParserFormatter.newParser(persistenceService, importResult.getImportedVessels().getIdTranslationMap()); } return vesselParser; } @@ -71,16 +75,17 @@ public class GenericFormatImportEntityParserFactory { return harbourParser; } - public GearParserFormatter getMandatoryGearParser() { - if (mandatoryGearParser == null) { - mandatoryGearParser = GearParserFormatter.newParser(persistenceService); + public GearParserFormatter getGearParser() { + if (gearParser == null) { + gearParser = GearParserFormatter.newParser(persistenceService, importResult.getImportedGears().getIdTranslationMap()); } - return mandatoryGearParser; + return gearParser; } public PersonListParserFormatter getListPersonParser() { if (listPersonParser == null) { - listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); + PersonParserFormatter delegateParserFormatter = PersonParserFormatter.newParser(persistenceService, importResult.getImportedPersons().getIdTranslationMap()); + listPersonParser = PersonListParserFormatter.newParser(delegateParserFormatter); } return listPersonParser; } @@ -125,7 +130,7 @@ public class GenericFormatImportEntityParserFactory { public SpeciesParserFormatter getSpeciesParser() { if (speciesParser == null) { - speciesParser = SpeciesParserFormatter.newParser(persistenceService); + speciesParser = SpeciesParserFormatter.newParser(persistenceService, importResult.getImportedSpecies().getIdTranslationMap()); } return speciesParser; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index ed6c220..ee503f9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -17,51 +18,68 @@ import java.util.TreeMap; */ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEntity, K extends Comparable<K>> { - private final Map<K, E> entitiesAdded; + private final Map<String, E> entitiesAdded; - private final Map<K, E> entitiesLinked; + private final Map<String, E> entitiesLinked; + + private final Map<String, String> idTranslationMap; public GenericFormatReferentialImportResult(ReferentialImportRequest<E, K> importRequest, ReferentialImportResult<E> importResult) { + Map<String, String> translationMap = new TreeMap<>(); + Function<E, K> entityToIdFunction = importRequest.getEntityToIdFunction(); int nbRefAdded = importResult.getNbRefAdded(); List<E> toAdds = importRequest.getEntitiesToAdd(); List<E> addeds = importResult.getRefAdded(); - this.entitiesAdded = merge(entityToIdFunction, nbRefAdded, toAdds, addeds); + this.entitiesAdded = merge(entityToIdFunction, nbRefAdded, toAdds, addeds, translationMap); int nbRefLinked = importResult.getNbRefLinked(); List<E> toLinks = importRequest.getEntitiesToLink(); List<E> linkeds = importResult.getRefLinked(); - this.entitiesLinked = merge(entityToIdFunction, nbRefLinked, toLinks, linkeds); + this.entitiesLinked = merge(entityToIdFunction, nbRefLinked, toLinks, linkeds, translationMap); + + this.idTranslationMap = Collections.unmodifiableMap(translationMap); } - public Map<K, E> getEntitiesAdded() { + public Map<String, E> getEntitiesAdded() { return entitiesAdded; } - public Map<K, E> getEntitiesLinked() { + public Map<String, E> getEntitiesLinked() { return entitiesLinked; } - protected Map<K, E> merge(Function<E, K> entityToIdFunction, - int nbEntities, - List<E> request, - List<E> result) { + public Map<String, String> getIdTranslationMap() { + return idTranslationMap; + } - Map<K, E> mergeMap = new TreeMap<>(); + protected Map<String, E> merge(Function<E, K> entityToIdFunction, + int nbEntities, + List<E> request, + List<E> result, + Map<String, String> translationMap) { + + Map<String, E> mergeMap = new TreeMap<>(); for (int index = 0; index < nbEntities; index++) { E toAdd = request.get(index); - K id = entityToIdFunction.apply(toAdd); + K toAddId = entityToIdFunction.apply(toAdd); + String originalId = String.valueOf(toAddId); + E added = result.get(index); - mergeMap.put(id, added); + K addedId = entityToIdFunction.apply(added); + String targetId = String.valueOf(addedId); + + mergeMap.put(originalId, added); + translationMap.put(originalId, targetId); } - return mergeMap; + return Collections.unmodifiableMap(mergeMap); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index a000522..2d1c7fd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -99,7 +99,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); - newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, parserFactory.getMandatoryGearParser()); + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, parserFactory.getGearParser()); newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 8d955c135c8390bfb591becc2172eb788a860f36 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:35:59 2015 +0100 add persistence service method to get first available protocol name --- .../tutti/persistence/TuttiPersistenceImpl.java | 5 +++++ .../tutti/persistence/TuttiPersistenceNoDbImpl.java | 5 +++++ .../service/ProtocolPersistenceService.java | 11 +++++++++++ .../service/ProtocolPersistenceServiceImpl.java | 20 ++++++++++++++++++++ .../fr/ifremer/tutti/service/PersistenceService.java | 5 +++++ 5 files changed, 46 insertions(+) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 0fc00c0..6ecd384 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -820,6 +820,11 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override + public String getFirstAvailableName(String protocolName) { + return getProtocolService().getFirstAvailableName(protocolName); + } + + @Override public List<String> getAllProtocolNames() { return getProtocolService().getAllProtocolId(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index 1aa18f6..b91cdf1 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -459,6 +459,11 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override + public String getFirstAvailableName(String protocolName) { + throw notImplemented(); + } + + @Override public List<String> getAllProtocolNames() { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java index 27e0615..605fc55 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java @@ -55,6 +55,17 @@ public interface ProtocolPersistenceService extends TuttiPersistenceServiceImple boolean isProtocolExist(String id); + /** + * Given a {@code protocolName}, find out the first available protocol name. + * + * If this name is already used, then suffix with {@code -0}, {@code -1}, until one is not used. + * + * @param protocolName base protocle name + * @return the first available protocol name base on the given one. + * @since 3.14 + */ + String getFirstAvailableName(String protocolName); + List<String> getAllProtocolId(); List<String> getAllProtocolNames(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java index b5952ae..5fae1fb 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java @@ -93,6 +93,26 @@ public class ProtocolPersistenceServiceImpl extends AbstractPersistenceService i } @Override + public String getFirstAvailableName(String protocolName) { + + List<String> allProtocolNames = getAllProtocolNames(); + + String availableName; + + if (allProtocolNames.contains(protocolName)) { + + availableName = TuttiProtocols.getFirstAvailableName(protocolName, allProtocolNames); + + } else { + + availableName = protocolName; + } + + return availableName; + + } + + @Override public List<String> getAllProtocolId() { File protocolDirectory = config.getProtocolDirectory(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index e04a221..8da5b79 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1281,6 +1281,11 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override + public String getFirstAvailableName(String protocolName) { + return driver.getFirstAvailableName(protocolName); + } + + @Override public List<TuttiProtocol> getAllProtocol() { return driver.getAllProtocol(); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f22fe9958c352e5c3335fafba6a099cffe74fc34 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:36:43 2015 +0100 translate taxon ids in protocol if required --- .../entities/protocol/TuttiProtocols.java | 25 ++++++++++ .../genericformat/GenericFormatImportService.java | 53 ++++++++++------------ 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 8bace77..fdc4deb 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -146,6 +146,31 @@ public class TuttiProtocols extends AbstractTuttiProtocols { return result; } + public static void translateReferenceTaxonIds(TuttiProtocol result, Map<String, String> idTranslationMap) { + + List<SpeciesProtocol> species = result.getSpecies(); + translateReferenceTaxonIds(species, idTranslationMap); + + List<SpeciesProtocol> benthos = result.getBenthos(); + translateReferenceTaxonIds(benthos, idTranslationMap); + + } + + protected static void translateReferenceTaxonIds(List<SpeciesProtocol> species, Map<String, String> idTranslationMap) { + + for (SpeciesProtocol speciesProtocol : species) { + Integer speciesReferenceTaxonId = speciesProtocol.getSpeciesReferenceTaxonId(); + String id = String.valueOf(speciesReferenceTaxonId); + if (idTranslationMap.containsKey(id)) { + + String newId = idTranslationMap.get(id); + Integer newSpeciesReferenceTaxonId = Integer.valueOf(newId); + speciesProtocol.setSpeciesReferenceTaxonId(newSpeciesReferenceTaxonId); + + } + } + } + protected static TuttiProtocol migrateProtocol(File file) { try { //try to load a v2 diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index fc6a253..d9be17f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -22,6 +22,7 @@ import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualO import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; @@ -50,6 +51,7 @@ import fr.ifremer.tutti.service.referential.csv.VesselRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; +import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -58,6 +60,7 @@ import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -171,7 +174,6 @@ public class GenericFormatImportService extends AbstractTuttiService { importIndividualObservations(importContext, progressionModel); importAccidentalCatches(importContext, progressionModel); - return result; } catch (IOException e) { @@ -183,10 +185,22 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void checkSampleCategoryModel(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); - Iterable<ImportRow<SampleCategoryRow>> rows = importContext.loadSampleCategories(); + try (CsvConsumerForSampleCategory consumer = importContext.loadSampleCategories()) { + + int nbCategories = 0; + for (ImportRow<SampleCategoryRow> row : consumer) { + consumer.checkRow(row, importContext); + nbCategories++; + } + + if (nbCategories != importContext.getImportRequest().getSampleCategoryModel().getNbSampling()) { - for (ImportRow<SampleCategoryRow> row : rows) { + throw new ImportRuntimeException(t("tutti.genericFormat.import.sampleCategoryModel.error.missingCategories")); + } + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close sampleCategoryModel.csv file", e); } } @@ -299,34 +313,16 @@ public class GenericFormatImportService extends AbstractTuttiService { TuttiProtocol tuttiProtocol = protocolImportExportService.importProtocol(archive.getProtocolPath().toFile()); - if (persistenceService.isProtocolExist(tuttiProtocol.getId())) { - - // already known, do not reimport - if (log.isWarnEnabled()) { - log.warn("Already known protocol with id" + tuttiProtocol.getId() + " do not reimport it"); - } - - progressionModel.increments(t("tutti.genericFormat.reuse.protocol", tuttiProtocol.getName())); - - tuttiProtocol = persistenceService.getProtocol(tuttiProtocol.getId()); - - } else { - - List<String> allProtocolNames = persistenceService.getAllProtocolNames(); - - if (allProtocolNames.contains(tuttiProtocol.getName())) { + Map<String, String> idTranslationMap = importContext.getImportResult().getImportedSpecies().getIdTranslationMap(); + TuttiProtocols.translateReferenceTaxonIds(tuttiProtocol, idTranslationMap); - String newName = TuttiProtocols.getFirstAvailableName(tuttiProtocol.getName(), allProtocolNames); - tuttiProtocol.setName(newName); + String newName = persistenceService.getFirstAvailableName(tuttiProtocol.getName()); + tuttiProtocol.setName(newName); - } - - progressionModel.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); + progressionModel.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); - tuttiProtocol = persistenceService.createProtocol(tuttiProtocol); - persistenceService.setProtocol(tuttiProtocol); - - } + tuttiProtocol = persistenceService.createProtocol(tuttiProtocol); + persistenceService.setProtocol(tuttiProtocol); importContext.getImportResult().setProtocol(tuttiProtocol); @@ -454,5 +450,4 @@ public class GenericFormatImportService extends AbstractTuttiService { } - } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6062cb57a68f49b73c84d84d455b8355fe219b09 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:36:58 2015 +0100 validate sample category model --- .../genericformat/GenericFormatImportContext.java | 10 ++-- .../genericformat/GenericFormatImportResult.java | 2 +- .../GenericFormatReferentialImportResult.java | 1 + .../consumer/CsvConsumerForSampleCategory.java | 57 ++++++++++++++++++++++ .../resources/i18n/tutti-service_en_GB.properties | 6 +++ .../resources/i18n/tutti-service_fr_FR.properties | 18 ++++--- 6 files changed, 81 insertions(+), 13 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java index bf21187..bd7a207 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -12,12 +12,10 @@ import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; -import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; -import org.nuiton.csv.ImportRow; import java.io.Closeable; import java.io.IOException; @@ -32,14 +30,14 @@ public class GenericFormatImportContext implements Closeable { private final GenericFormatImportRequest importRequest; + private final GenericFormatImportResult importResult; + private final GenericFormatImportEntityParserFactory importEntityParserFactory; - private final GenericFormatImportResult importResult; - public GenericFormatImportContext(GenericFormatImportRequest importRequest, PersistenceService persistenceService) { this.importRequest = importRequest; - this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest); this.importResult = new GenericFormatImportResult(importRequest); + this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest, importResult); } public GenericFormatImportRequest getImportRequest() { @@ -73,7 +71,7 @@ public class GenericFormatImportContext implements Closeable { } - public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { + public CsvConsumerForSampleCategory loadSampleCategories() { CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importEntityParserFactory); return consumer; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index a9921f2..b551a79 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -25,7 +25,6 @@ public class GenericFormatImportResult { private TuttiProtocol protocol; - private GenericFormatReferentialImportResult<Gear, Integer> importedGears; private GenericFormatReferentialImportResult<Person, Integer> importedPersons; @@ -101,4 +100,5 @@ public class GenericFormatImportResult { public void setImportedVessels(GenericFormatReferentialImportResult<Vessel, String> importedVessels) { this.importedVessels = importedVessels; } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index ee503f9..ff33d81 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -82,4 +82,5 @@ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEnti return Collections.unmodifiableMap(mergeMap); } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index 661bc05..7956793 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -1,11 +1,19 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; import java.nio.file.Path; +import java.util.Objects; + +import static org.nuiton.i18n.I18n.t; /** * Created on 2/11/15. @@ -19,4 +27,53 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, super(file, SampleCategoryModel.forImport(separator, parserFactory)); } + public void checkRow(ImportRow<SampleCategoryRow> row, GenericFormatImportContext importContext) { + + if (row.isValid()) { + + int categoryIndex = (int) row.getLineNumber(); + fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); + + int nbSampling = sampleCategoryModel.getNbSampling(); + if (nbSampling < categoryIndex) { + + // too much categories + addCheckError(row, new IllegalStateException(t("tutti.genericFormat.import.sampleCategoryModel.error.tooMuchCategories"))); + + } else { + + SampleCategoryRow bean = row.getBean(); + SampleCategoryModelEntry categoryEntry = sampleCategoryModel.getCategoryByIndex(categoryIndex); + + String code = bean.getCode(); + + if (StringUtils.isBlank(code)) { + + addCheckError(row, new IllegalStateException(t("tutti.genericFormat.import.sampleCategoryModel.error.noCode"))); + + } else { + + Caracteristic caracteristic = bean.getCaracteristic(); + if (caracteristic == null) { + + addCheckError(row, new IllegalStateException(t("tutti.genericFormat.import.sampleCategoryModel.error.noCaracteristic"))); + + } else if (!Objects.equals(categoryEntry.getCategoryId(), caracteristic.getIdAsInt())) { + + addCheckError(row, new IllegalStateException(t("tutti.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching", categoryEntry.getCategoryId(), caracteristic.getIdAsInt()))); + + } else if (!Objects.equals(categoryEntry.getCode(), code)) { + + addCheckError(row, new IllegalStateException(t("tutti.genericFormat.import.sampleCategoryModel.error.codeNotMatching", categoryEntry.getCode(), code))); + + } + } + } + + } + + reportError(row); + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index f2f5ef5..0b9aa3b 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -24,6 +24,12 @@ tutti.genericFormat.import.operations= tutti.genericFormat.import.parameters= tutti.genericFormat.import.protocol= tutti.genericFormat.import.sampleCategoryModel= +tutti.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching= +tutti.genericFormat.import.sampleCategoryModel.error.codeNotMatching= +tutti.genericFormat.import.sampleCategoryModel.error.missingCategories= +tutti.genericFormat.import.sampleCategoryModel.error.noCaracteristic= +tutti.genericFormat.import.sampleCategoryModel.error.noCode= +tutti.genericFormat.import.sampleCategoryModel.error.tooMuchCategories= tutti.genericFormat.import.temporaryGears= tutti.genericFormat.import.temporaryPersons= tutti.genericFormat.import.temporarySpecies= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index bad7cf5..f7329ee 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -4,14 +4,14 @@ tutti.caracteristicType.LENGTH_STEP=Classes de tailles tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques tutti.caracteristicType.lengthStep= tutti.csv.import.error.on.field=Colonne %s \: %s -tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s -tutti.error.messages=Erreurs :\n %s -tutti.fatal.messages=Erreurs critiques :\n %s +tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \:\n %s +tutti.error.messages=Erreurs \:\n %s +tutti.fatal.messages=Erreurs critiques \:\n %s tutti.genericFormat.import.accidentalCatches=Import des captures accidentelles tutti.genericFormat.import.catches=Import des captures tutti.genericFormat.import.cruises=Import des campagnes -tutti.genericFormat.import.error.cruiseAlreadyExist= -tutti.genericFormat.import.error.cruiseNotValid= +tutti.genericFormat.import.error.cruiseAlreadyExist=Il existe déjà une campagne avec ce nom %s +tutti.genericFormat.import.error.cruiseNotValid=La camapgne n'est pas valide :\n%s tutti.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin tutti.genericFormat.import.individualObservations=Import des observations individuelles tutti.genericFormat.import.marineLitters=Import des macro-déchets @@ -19,6 +19,12 @@ tutti.genericFormat.import.operations=Import des traits tutti.genericFormat.import.parameters=Import des paramètres de trait tutti.genericFormat.import.protocol=Import d'un nouveau protocol %s tutti.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation +tutti.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching=L'identifiant de la caractéristique devrait être %s, mais vaut %s +tutti.genericFormat.import.sampleCategoryModel.error.codeNotMatching=Le code devrait être %s, mais vaut %s +tutti.genericFormat.import.sampleCategoryModel.error.missingCategories=Il manque des catégories +tutti.genericFormat.import.sampleCategoryModel.error.noCaracteristic=La catactéristique est obligatoire +tutti.genericFormat.import.sampleCategoryModel.error.noCode=Le code est obligatoire +tutti.genericFormat.import.sampleCategoryModel.error.tooMuchCategories=Trop de catégorisation tutti.genericFormat.import.temporaryGears=Import des références temporaires d'engins tutti.genericFormat.import.temporaryPersons=Import des références temporaires de personnes tutti.genericFormat.import.temporarySpecies=Import des références temporaires de Taxons @@ -379,4 +385,4 @@ tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise ent tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0 tutti.validator.warning.marineLitter.weight.required=Vous devez saisir la valeur du poids total des déchets<br/>ou le poids de chacune des catégories observées. tutti.validator.warning.species.protocolNotRespected=Espèces - le lot de %s / %s ne suit pas les recommandations du protocole -tutti.warning.messages=Avertissements :\n %s +tutti.warning.messages=Avertissements \:\n %s -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 4520b672c1e3a389fafa654fac6211e65cb6f2d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 18:12:21 2015 +0100 do not create directory, already done --- .../fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java | 1 - 1 file changed, 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java index 0382bcd..cb201ac 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java @@ -84,7 +84,6 @@ public class GenericFormatArchive { try { Path workingDirectory = Files.createTempDirectory(tempDirectory.toPath(), "genericImport"); - Files.createDirectory(workingDirectory); GenericFormatArchive archive = new GenericFormatArchive(ArchiveMode.IMPORT, archiveFile, workingDirectory); return archive; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 8383c87d58b77e8c6582ce8a57a939a8790580d3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 18:12:42 2015 +0100 load program in data context --- .../java/fr/ifremer/tutti/service/ServiceDbResource.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java index b594a3e..5bf4c3b 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java @@ -302,6 +302,19 @@ public class ServiceDbResource extends DatabaseResource { return dataContext; } + public DataContext loadContext(String programId) { + + DataContext dataContext = new DataContext(); + PersistenceService persistenceService = getServiceContext().getService(PersistenceService.class); + + Program program = persistenceService.getProgram(programId); + Assert.assertNotNull(program); + + dataContext.program = program; + + return dataContext; + } + public void openDataContext() { TuttiServiceContext serviceContext = getServiceContext(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c54286e4bdbf78eaf0da0b39d22f9cce4c5354fa Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 18:13:05 2015 +0100 compute nb step in export --- .../service/genericformat/GenericFormatExportServiceTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index 82875b7..498583e 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -323,7 +323,6 @@ public class GenericFormatExportServiceTest { dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 2, OPERATION_1_ID, OPERATION_2_ID); progressionModel = new ProgressionModel(); - progressionModel.setTotal(9); exportFile = new File(dataDirectory, "export.zip"); @@ -340,7 +339,10 @@ public class GenericFormatExportServiceTest { Assert.assertFalse(exportFile.exists()); - service.exportProgram(dataContext.program.getId(), exportFile, progressionModel); + String programId = dataContext.program.getId(); + progressionModel.setTotal(service.getExportProgramNbSteps(programId)); + + service.exportProgram(programId, exportFile, progressionModel); Assert.assertTrue(exportFile.exists()); } @@ -351,6 +353,8 @@ public class GenericFormatExportServiceTest { Assert.assertFalse(exportFile.exists()); + progressionModel.setTotal(service.getExportCruiseNbSteps()); + service.exportCruise(dataContext.cruise.getId(), exportFile, progressionModel); Assert.assertTrue(exportFile.exists()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 86352e5060ca55439349ed38c1d575bda145b3e9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:34:53 2015 +0100 fix NPE when adding errors with no field --- .../main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index 666e775..7c9c896 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -69,7 +69,18 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> Set<String> errors = new HashSet<>(); for (AbstractImportErrorInfo<O> errorInfo : bean.getErrors()) { - errors.add(t("tutti.csv.import.error.on.field", errorInfo.getField().getHeaderName(), errorInfo.getCause().getMessage())); + + Throwable cause = errorInfo.getCause(); + + if (errorInfo.getField() == null) { + + errors.add(cause.getMessage()); + + } else { + + errors.add(t("tutti.csv.import.error.on.field", errorInfo.getField().getHeaderName(), cause.getMessage())); + } + } String message = t("tutti.csv.import.error.on.row", bean.getLineNumber(), Joiner.on("\n").join(errors)); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 90d5975acadafd083b64e9a2af4bce77fa8d06af Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:35:29 2015 +0100 adapt caracteristt parser (pass directly list of caracteristic to use) --- .../tutti/service/csv/CaracteristicParserFormatter.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java index 57efbff..443f6ac 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.service.csv; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.PersistenceService; import java.util.List; @@ -21,20 +20,20 @@ public class CaracteristicParserFormatter extends EntityParserFormatterSupport<C return new CaracteristicParserFormatter(true, null); } - public static CaracteristicParserFormatter newParser(PersistenceService persistenceService) { - return new CaracteristicParserFormatter(true, persistenceService); + public static CaracteristicParserFormatter newParser(List<Caracteristic> entities) { + return new CaracteristicParserFormatter(true, entities); } - private final PersistenceService persistenceService; + private final List<Caracteristic> entities; - protected CaracteristicParserFormatter(boolean technical, PersistenceService persistenceService) { + protected CaracteristicParserFormatter(boolean technical, List<Caracteristic> entities) { super("", technical, Caracteristic.class); - this.persistenceService = persistenceService; + this.entities = entities; } @Override protected List<Caracteristic> getEntities() { - return persistenceService.getAllCaracteristic(); + return entities; } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 50033a981808ce7d029339c4ba82b859347bdc7c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:35:56 2015 +0100 improve archive object --- .../genericformat/GenericFormatArchive.java | 216 +++++++++++++++++---- 1 file changed, 175 insertions(+), 41 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java index cb201ac..a80111f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java @@ -1,7 +1,11 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.vfs2.FileObject; import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; @@ -12,6 +16,7 @@ import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -26,6 +31,9 @@ import static org.nuiton.i18n.I18n.t; */ public class GenericFormatArchive { + /** Logger. */ + private static final Log log = LogFactory.getLog(GenericFormatArchive.class); + private static enum ArchiveMode { IMPORT, EXPORT @@ -44,7 +52,7 @@ public class GenericFormatArchive { DATA_OPERATION(true, "operation.csv"), DATA_PARAMETER(true, "parameter.csv"), DATA_CATCH(true, "catch.csv"), - DATA_SPECIES(true, "species.csv"), + DATA_SPECIES(false, "species.csv"), DATA_MARINE_LITTER(true, "marineLitter.csv"), DATA_ACCIDENTAL_CATCH(true, "accidentalCatch.csv"), DATA_INDIVIDUAL_OBSERVATION(true, "individualObservation.csv"); @@ -66,11 +74,6 @@ public class GenericFormatArchive { return filename; } - public ZipEntry getzipentry(ZipFile zipFile) { - ZipEntry entry = zipFile.getEntry(getFilename()); - return entry; - } - } private final File archiveFile; @@ -79,6 +82,8 @@ public class GenericFormatArchive { private final ArchiveMode archiveMode; + private final String prefixPath; + public static GenericFormatArchive forImport(File archiveFile, File tempDirectory) { try { @@ -107,6 +112,13 @@ public class GenericFormatArchive { } + public static GenericFormatArchive forExportFromWorkingDirectory(File archiveFile, File workingDirectory) { + + GenericFormatArchive archive = new GenericFormatArchive(ArchiveMode.EXPORT, archiveFile, workingDirectory.toPath()); + return archive; + + } + public Path getWorkingDirectoryPath() { return workingDirectory; } @@ -191,39 +203,6 @@ public class GenericFormatArchive { return getPath(ArchiveFilePath.DATA_MARINE_LITTER); } - public void checkArchiveLayout() { - - List<String> errors = new ArrayList<>(); - - try (ZipFile zipFile = new ZipFile(archiveFile)) { - - for (ArchiveFilePath archiveFilePath : ArchiveFilePath.values()) { - - if (archiveFilePath.isMandatory()) { - - ZipEntry zipEntry = archiveFilePath.getzipentry(zipFile); - - if (zipEntry == null) { - errors.add(t("tutti.genericformat.importError.missArchiveFile", archiveFilePath.getFilename())); - } - - } - } - } catch (IOException e) { - - throw new ApplicationTechnicalException("Could not open zip file: " + archiveFile, e); - } - - if (errors.isEmpty()) { - - String message = t("tutti.genericFormat.importError.archiveNotSane", Joiner.on("\n").join(errors)); - - throw new ApplicationBusinessException(message); - - } - - } - public void createZip(ProgressionModel progressionModel) { if (progressionModel != null) { @@ -242,22 +221,33 @@ public class GenericFormatArchive { Path file = workingDirectory.resolve(filename); - if (isImport() && Files.notExists(file)) { + if (isImport() && Files.notExists(file) && !missingPaths.contains(archiveFilePath)) { // Explode from archive try (ZipFile zipFile = new ZipFile(archiveFile)) { - ZipEntry entry = archiveFilePath.getzipentry(zipFile); + String zipEntryPath = getZipEntryPath(archiveFilePath); + ZipEntry entry = zipFile.getEntry(zipEntryPath); + + Preconditions.checkState(!(archiveFilePath.isMandatory() && entry == null), "Must have entry " + filename); + if (entry != null) { + + if (log.isInfoEnabled()) { + log.info("Explode zip entry to " + file.toFile().getName()); + } + try (InputStream inputStream = zipFile.getInputStream(entry)) { Files.copy(inputStream, file); } + } } catch (IOException e) { throw new ApplicationTechnicalException("Could not open zip file: " + archiveFile, e); } + } return file; @@ -272,10 +262,154 @@ public class GenericFormatArchive { return ArchiveMode.EXPORT == archiveMode; } + protected final EnumSet<ArchiveFilePath> missingPaths; protected GenericFormatArchive(ArchiveMode archiveMode, File archiveFile, Path workingDirectory) { + this.archiveFile = archiveFile; this.workingDirectory = workingDirectory; this.archiveMode = archiveMode; + + if (log.isInfoEnabled()) { + log.info("Archive zip file: " + archiveFile); + log.info("Archive working directory: " + workingDirectory); + log.info("Archive mode: " + archiveMode); + } + if (isImport()) { + this.prefixPath = extractPrefixPath(); + if (log.isInfoEnabled()) { + log.info("Zip entries prefix path: " + prefixPath); + } + + checkArchiveLayout(); + + missingPaths = getMissingPaths(); + + } else { + this.prefixPath = null; + this.missingPaths = null; + } + + } + + protected String extractPrefixPath() { + + FileObject fileObject = ApplicationIOUtil.resolveFile( + "zip:" + archiveFile.getAbsolutePath(), + t("tutti.service.persistence.getArchive.error", archiveFile)); + + FileObject[] children = ApplicationIOUtil.getChildren( + fileObject, + t("tutti.service.persistence.openArchive.error", fileObject)); + + fileObject = children[0]; + + String prefix = fileObject.getName().getBaseName() + "/"; + return prefix; + + } + + protected String getZipEntryPath(ArchiveFilePath archiveFilePath) { + + String path = prefixPath + archiveFilePath.getFilename(); + return path; + } + + protected void checkArchiveLayout() { + + List<String> errors = new ArrayList<>(); + + try (ZipFile zipFile = new ZipFile(archiveFile)) { + + for (ArchiveFilePath archiveFilePath : ArchiveFilePath.values()) { + + if (archiveFilePath.isMandatory()) { + String zipEntryPath = getZipEntryPath(archiveFilePath); + + if (log.isDebugEnabled()) { + log.debug("Check mandatory entry " + zipEntryPath + " exists."); + } + + ZipEntry zipEntry = zipFile.getEntry(zipEntryPath); + + if (zipEntry == null) { + + if (log.isErrorEnabled()) { + log.error("Mandatory entry " + zipEntryPath + " not found."); + } + errors.add(t("tutti.genericformat.importError.missArchiveFile", archiveFilePath.getFilename())); + + } else { + + if (log.isInfoEnabled()) { + log.info("Mandatory entry " + zipEntryPath + " found."); + } + } + } + + } + + } catch (IOException e) { + + throw new ApplicationTechnicalException("Could not open zip file: " + archiveFile, e); + } + + if (!errors.isEmpty()) { + + String message = t("tutti.genericFormat.importError.archiveNotSane", Joiner.on("\n").join(errors)); + + throw new ApplicationBusinessException(message); + + } + + } + + + protected EnumSet<ArchiveFilePath> getMissingPaths() { + + EnumSet<ArchiveFilePath> result = EnumSet.noneOf(ArchiveFilePath.class); + + try (ZipFile zipFile = new ZipFile(archiveFile)) { + + for (ArchiveFilePath archiveFilePath : ArchiveFilePath.values()) { + + if (!archiveFilePath.isMandatory()) { + + String zipEntryPath = getZipEntryPath(archiveFilePath); + + if (log.isDebugEnabled()) { + log.debug("Check optional entry " + zipEntryPath + " exists."); + } + + ZipEntry zipEntry = zipFile.getEntry(zipEntryPath); + + if (zipEntry == null) { + + if (log.isInfoEnabled()) { + log.info("Optional entry " + zipEntryPath + " not found."); + } + + result.add(archiveFilePath); + + } else { + + if (log.isInfoEnabled()) { + log.info("Optional entry " + zipEntryPath + " found."); + } + + } + + } + + } + + } catch (IOException e) { + + throw new ApplicationTechnicalException("Could not open zip file: " + archiveFile, e); + } + + return result; + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 27daf67ccf5b0743ea72a453cb29d8ecb9e7780e Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:36:27 2015 +0100 - normalize entity list parser formatter - make samplecategorymodel import ok - survey are ok to be imported now - start writting test of import --- .../csv/EntityListParserFormatterSupport.java | 4 +- .../tutti/service/csv/GearListParserFormatter.java | 25 ++++++ ...matter.java => IntegerListParserFormatter.java} | 2 +- .../tutti/service/csv/ProgramFormatter.java | 23 ----- .../tutti/service/csv/ProgramParserFormatter.java | 46 ++++++++++ .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 20 +++-- .../GenericFormatImportEntityParserFactory.java | 58 ++++++++++--- .../genericformat/GenericFormatImportService.java | 98 ++++++++++++++++++++-- .../consumer/CsvConsumerForSampleCategory.java | 2 +- .../service/genericformat/csv/OperationModel.java | 12 +-- .../genericformat/csv/SampleCategoryModel.java | 2 +- .../genericformat/csv/SampleCategoryRow.java | 3 + .../service/genericformat/csv/SurveyModel.java | 22 +++-- .../tutti/service/protocol/SpeciesRowModel.java | 4 +- .../consumer/CsvConsumerForTemporarySpecies.java | 4 +- .../GenericFormatImportServiceTest.java | 80 ++++++++++++++++++ .../genericFormat/empty/accidentalCatch.csv | 1 + .../test/resources/genericFormat/empty/catch.csv | 1 + .../genericFormat/empty/gearCaracteristics.csv | 1 + .../genericFormat/empty/individualObservation.csv | 1 + .../resources/genericFormat/empty/marineLitter.csv | 1 + .../resources/genericFormat/empty/operation.csv | 1 + .../resources/genericFormat/empty/parameter.csv | 1 + .../genericFormat/empty/protocol.tuttiProtocol | 81 ++++++++++++++++++ .../genericFormat/empty/sampleCategory.csv | 6 ++ .../test/resources/genericFormat/empty/survey.csv | 2 + .../genericFormat/empty/temporaryPersons.csv | 4 + .../genericFormat/empty/temporarySpecies.csv | 9 ++ .../genericFormat/empty/temporaryVessels.csv | 1 + .../ImportGenericFormatProgramCruisesAction.java | 20 ++--- 30 files changed, 453 insertions(+), 82 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java index 14b80d9..91a08be 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java @@ -26,10 +26,10 @@ public abstract class EntityListParserFormatterSupport<E extends TuttiEntity> im public List<E> parse(String value) throws ParseException { List<E> list = new ArrayList<>(); - String[] ids = value.split("|"); + String[] ids = value.split("\\|"); for (String id : ids) { - E entity = delegateParserFormatter.parse(id); + E entity = delegateParserFormatter.parse(id.trim()); list.add(entity); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearListParserFormatter.java new file mode 100644 index 0000000..e24f33b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearListParserFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Gear; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GearListParserFormatter extends EntityListParserFormatterSupport<Gear> { + + public static GearListParserFormatter newFormatter(GearParserFormatter delegateParserFormatter) { + return new GearListParserFormatter(delegateParserFormatter); + } + + public static GearListParserFormatter newParser(GearParserFormatter delegateParserFormatter) { + return new GearListParserFormatter(delegateParserFormatter); + } + + protected GearListParserFormatter(GearParserFormatter delegateParserFormatter) { + super(delegateParserFormatter); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/IntegerListParserFormatter.java similarity index 93% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/IntegerListParserFormatter.java index 1bdf0a9..e79c0a0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/IntegerListParserFormatter.java @@ -15,7 +15,7 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class ListIntegerFormatter implements ValueParserFormatter<List<Integer>> { +public class IntegerListParserFormatter implements ValueParserFormatter<List<Integer>> { @Override public String format(List<Integer> value) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramFormatter.java deleted file mode 100644 index 8acd5d1..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.Programs; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ProgramFormatter implements ValueFormatter<Program> { - - @Override - public String format(Program value) { - String result = ""; - if (value != null) { - result = Programs.GET_NAME.apply(value); - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParserFormatter.java new file mode 100644 index 0000000..b0e3936 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ProgramParserFormatter.java @@ -0,0 +1,46 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.Programs; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class ProgramParserFormatter extends EntityParserFormatterSupport<Program> { + + public static ProgramParserFormatter newFormatter() { + return new ProgramParserFormatter(false, null); + } + + public static ProgramParserFormatter newTechnicalFormatter() { + return new ProgramParserFormatter(true, null); + } + + public static ProgramParserFormatter newParser(PersistenceService persistenceService) { + return new ProgramParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected ProgramParserFormatter(boolean technical, PersistenceService persistenceService) { + super("", technical, Program.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Program> getEntities() { + return persistenceService.getAllProgram(); + } + + @Override + protected String formatBusiness(Program value) { + return Programs.GET_NAME.apply(value); + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 9956e30..8f10b44 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -163,12 +163,18 @@ public class TuttiCsvUtil extends Common { public static ValueFormatter<Serializable> CARACTERISTIC_VALUE_TECHNICAL_FORMATTER = CaracteristicValueParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<Program> PROGRAM_FORMATTER = new ProgramFormatter(); + public static final ValueFormatter<Program> PROGRAM_FORMATTER = ProgramParserFormatter.newFormatter(); + + public static final ValueFormatter<Program> PROGRAM_TECHNICAL_FORMATTER = ProgramParserFormatter.newTechnicalFormatter(); public static final ValueFormatter<Gear> GEAR_FORMATTER = GearParserFormatter.newFormatter(); public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = GearParserFormatter.newTechnicalFormatter(); + public static final ValueFormatter<List<Gear>> GEAR_LIST_FORMATTER = GearListParserFormatter.newFormatter(GearParserFormatter.newFormatter()); + + public static final ValueFormatter<List<Gear>> GEAR_LIST_TECHNICAL_FORMATTER = GearListParserFormatter.newFormatter(GearParserFormatter.newTechnicalFormatter()); + public static final ValueFormatter<TuttiLocation> COUNTRY_FORMATTER = new CountryFormatter(); public static final ValueFormatter<TuttiLocation> PROGRAM_ZONE_FORMATTER = new ProgramZoneFormatter(); @@ -197,18 +203,18 @@ public class TuttiCsvUtil extends Common { public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = SpeciesParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = PersonListParserFormatter.newFormatter(PersonParserFormatter.newFormatter()); + public static final ValueFormatter<List<Person>> PERSON_LIST_FORMATTER = PersonListParserFormatter.newFormatter(PersonParserFormatter.newFormatter()); - public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = PersonListParserFormatter.newFormatter(PersonParserFormatter.newTechnicalFormatter()); + public static final ValueFormatter<List<Person>> PERSON_LIST_TECHNICAL_FORMATTER = PersonListParserFormatter.newFormatter(PersonParserFormatter.newTechnicalFormatter()); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = VesselListParserFormatter.newFormatter(VesselParserFormatter.newFormatter()); + public static final ValueFormatter<List<Vessel>> VESSEL_LIST_FORMATTER = VesselListParserFormatter.newFormatter(VesselParserFormatter.newFormatter()); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = VesselListParserFormatter.newFormatter(VesselParserFormatter.newTechnicalFormatter()); + public static final ValueFormatter<List<Vessel>> VESSEL_LIST_TECHNICAL_FORMATTER = VesselListParserFormatter.newFormatter(VesselParserFormatter.newTechnicalFormatter()); - public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); + public static final ValueParserFormatter<List<Integer>> INTEGER_LIST_PARSER_FORMATTER = new IntegerListParserFormatter(); public static <E extends Enum<E>> ValueParserFormatter<E> newEnumByNameParserFormatter(Class<E> enumType, boolean mandatory) { - return new fr.ifremer.tutti.service.csv.EnumByNameParserFormatter<E>(enumType, mandatory); + return new fr.ifremer.tutti.service.csv.EnumByNameParserFormatter<>(enumType, mandatory); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java index ebe644d..7c24386 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java @@ -1,20 +1,25 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; +import fr.ifremer.tutti.service.csv.GearListParserFormatter; import fr.ifremer.tutti.service.csv.GearParserFormatter; import fr.ifremer.tutti.service.csv.HarbourParserFormatter; import fr.ifremer.tutti.service.csv.PersonListParserFormatter; import fr.ifremer.tutti.service.csv.PersonParserFormatter; +import fr.ifremer.tutti.service.csv.ProgramParserFormatter; import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; import fr.ifremer.tutti.service.csv.VesselListParserFormatter; import fr.ifremer.tutti.service.csv.VesselParserFormatter; +import java.util.List; + /** * Created on 2/15/15. * @@ -29,23 +34,29 @@ public class GenericFormatImportEntityParserFactory { private final GenericFormatImportResult importResult; + private ProgramParserFormatter programParser; + private VesselParserFormatter vesselParser; private HarbourParserFormatter harbourParser; private GearParserFormatter gearParser; - private PersonListParserFormatter listPersonParser; + private GearListParserFormatter gearListParser; + + private PersonListParserFormatter personListParser; private CaracteristicParserFormatter caracteristicParser; + private CaracteristicParserFormatter caracteristicForSampleCategoryParser; + private FishingOperationStrataParserFormatter fishingOperationStrataParser; private FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; private FishingOperationLocationParserFormatter fishingOperationLocationParser; - private VesselListParserFormatter listVesselParser; + private VesselListParserFormatter vesselListParser; private SpeciesParserFormatter speciesParser; @@ -82,21 +93,46 @@ public class GenericFormatImportEntityParserFactory { return gearParser; } - public PersonListParserFormatter getListPersonParser() { - if (listPersonParser == null) { + public GearListParserFormatter getGearListParser() { + if (gearListParser == null) { + GearParserFormatter delegateParserFormatter = getGearParser(); + gearListParser = GearListParserFormatter.newParser(delegateParserFormatter); + } + return gearListParser; + } + + public PersonListParserFormatter getPersonListParser() { + if (personListParser == null) { PersonParserFormatter delegateParserFormatter = PersonParserFormatter.newParser(persistenceService, importResult.getImportedPersons().getIdTranslationMap()); - listPersonParser = PersonListParserFormatter.newParser(delegateParserFormatter); + personListParser = PersonListParserFormatter.newParser(delegateParserFormatter); } - return listPersonParser; + return personListParser; + } + + public ProgramParserFormatter getProgramParser() { + if (programParser == null) { + programParser = ProgramParserFormatter.newParser(persistenceService); + } + return programParser; } public CaracteristicParserFormatter getCaracteristicParser() { if (caracteristicParser == null) { - caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); + List<Caracteristic> caracteristics = persistenceService.getAllCaracteristic(); + caracteristicParser = CaracteristicParserFormatter.newParser(caracteristics); } return caracteristicParser; } + public CaracteristicParserFormatter getCaracteristicForSampleCategoryParser() { + if (caracteristicForSampleCategoryParser == null) { + List<Caracteristic> caracteristics = persistenceService.getAllCaracteristicForSampleCategory(); + caracteristicForSampleCategoryParser = CaracteristicParserFormatter.newParser(caracteristics); + + } + return caracteristicForSampleCategoryParser; + } + public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { if (fishingOperationStrataParser == null) { Program program = importRequest.getProgram(); @@ -121,11 +157,11 @@ public class GenericFormatImportEntityParserFactory { return fishingOperationLocationParser; } - public VesselListParserFormatter getListVesselParser() { - if (listVesselParser == null) { - listVesselParser = VesselListParserFormatter.newParser(getVesselParser()); + public VesselListParserFormatter getVesselListParser() { + if (vesselListParser == null) { + vesselListParser = VesselListParserFormatter.newParser(getVesselParser()); } - return listVesselParser; + return vesselListParser; } public SpeciesParserFormatter getSpeciesParser() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index d9be17f..e641ea3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -98,6 +98,7 @@ public class GenericFormatImportService extends AbstractTuttiService { super.setServiceContext(context); persistenceService = getService(PersistenceService.class); decoratorService = getService(DecoratorService.class); + validationService = getService(ValidationService.class); weightComputingService = getService(WeightComputingService.class); referentialTemporaryGearService = getService(ReferentialTemporaryGearService.class); referentialTemporaryPersonService = getService(ReferentialTemporaryPersonService.class); @@ -126,13 +127,6 @@ public class GenericFormatImportService extends AbstractTuttiService { } } - public void checkArchive(File importFile) { - - GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); - archive.checkArchiveLayout(); - - } - public GenericFormatImportResult importProgram(String programId, File importFile, ProgressionModel progressionModel) { Preconditions.checkNotNull(programId); @@ -146,7 +140,6 @@ public class GenericFormatImportService extends AbstractTuttiService { } GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); - archive.checkArchiveLayout(); GenericFormatImportRequest request = new GenericFormatImportRequest(persistenceService, archive, @@ -184,6 +177,10 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void checkSampleCategoryModel(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import sample category model."); + } + progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); try (CsvConsumerForSampleCategory consumer = importContext.loadSampleCategories()) { @@ -211,6 +208,10 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialGearsPathExists()) { + if (log.isInfoEnabled()) { + log.info("Import temporary gears."); + } + ReferentialImportRequest<Gear, Integer> referentialImportRequest = referentialTemporaryGearService.createReferentialImportRequest(); try (CsvConsumerForTemporaryGear consumer = importContext.loadTemporaryGears()) { @@ -226,6 +227,12 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Gear, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedGears(genericFormatReferentialImportResult); + } else { + + if (log.isInfoEnabled()) { + log.info("Skip import temporary gears (no file found)."); + } + } } @@ -236,6 +243,10 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialPersonsPathExists()) { + if (log.isInfoEnabled()) { + log.info("Import temporary persons."); + } + ReferentialImportRequest<Person, Integer> referentialImportRequest = referentialTemporaryPersonService.createReferentialImportRequest(); try (CsvConsumerForTemporaryPerson consumer = importContext.loadTemporaryPersons()) { @@ -251,6 +262,12 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Person, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedPersons(genericFormatReferentialImportResult); + } else { + + if (log.isInfoEnabled()) { + log.info("Skip import temporary persons (no file found)."); + } + } } @@ -261,6 +278,10 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialSpeciesPathExists()) { + if (log.isInfoEnabled()) { + log.info("Import temporary species."); + } + ReferentialImportRequest<Species, Integer> referentialImportRequest = referentialTemporarySpeciesService.createReferentialImportRequest(); try (CsvConsumerForTemporarySpecies consumer = importContext.loadTemporarySpecies()) { @@ -276,6 +297,12 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Species, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedSpecies(genericFormatReferentialImportResult); + } else { + + if (log.isInfoEnabled()) { + log.info("Skip import temporary species (no file found)."); + } + } } @@ -286,6 +313,10 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialVesselsPathExists()) { + if (log.isInfoEnabled()) { + log.info("Import temporary vessels."); + } + ReferentialImportRequest<Vessel, String> referentialImportRequest = referentialTemporaryVesselService.createReferentialImportRequest(); try (CsvConsumerForTemporaryVessel consumer = importContext.loadTemporaryVessels()) { @@ -301,6 +332,12 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Vessel, String> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedVessels(genericFormatReferentialImportResult); + } else { + + if (log.isInfoEnabled()) { + log.info("Skip import temporary vessels (no file found)."); + } + } } @@ -311,6 +348,10 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isProtocolExists()) { + if (log.isInfoEnabled()) { + log.info("Import protocol."); + } + TuttiProtocol tuttiProtocol = protocolImportExportService.importProtocol(archive.getProtocolPath().toFile()); Map<String, String> idTranslationMap = importContext.getImportResult().getImportedSpecies().getIdTranslationMap(); @@ -326,11 +367,20 @@ public class GenericFormatImportService extends AbstractTuttiService { importContext.getImportResult().setProtocol(tuttiProtocol); + } else { + + if (log.isInfoEnabled()) { + log.info("Skip import protocol (no file found)."); + } + } } protected void importCruises(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import survey.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.cruises")); try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { @@ -338,6 +388,10 @@ public class GenericFormatImportService extends AbstractTuttiService { consumer.checkRow(row, importContext, validationService); + if (log.isInfoEnabled()) { + log.info("Will persist cruise: " + row.getBean().getName()); + } + } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close survey.csv file", e); @@ -347,7 +401,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importGearCaracteristics(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import gearCaracteristics.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.gearCaracteristics")); + try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { for (ImportRow<GearCaracteristicRow> row : consumer) { @@ -362,7 +420,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importOperations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import operation.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.operations")); + try (CsvConsumerForOperation consumer = importContext.loadOperations()) { for (ImportRow<OperationRow> row : consumer) { @@ -377,7 +439,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importParameters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import parameter.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.parameters")); + try (CsvConsumerForParameter consumer = importContext.loadParameters()) { for (ImportRow<ParameterRow> row : consumer) { @@ -392,7 +458,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import catch.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.catches")); + try (CsvConsumerForCatch consumer = importContext.loadCatches()) { for (ImportRow<CatchRow> row : consumer) { @@ -407,7 +477,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importAccidentalCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import accidentalCatch.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.accidentalCatches")); + try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { for (ImportRow<AccidentalCatchRow> row : consumer) { @@ -422,7 +496,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importIndividualObservations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import individualObservation.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.individualObservations")); + try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { for (ImportRow<IndividualObservationRow> row : consumer) { @@ -437,7 +515,11 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void importMarineLitters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + if (log.isInfoEnabled()) { + log.info("Import marineLitter.csv file."); + } progressionModel.increments(t("tutti.genericFormat.import.marineLitters")); + try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { for (ImportRow<MarineLitterRow> row : consumer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index 7956793..76e8ce5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -31,7 +31,7 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, if (row.isValid()) { - int categoryIndex = (int) row.getLineNumber(); + int categoryIndex = (int) row.getLineNumber() -1; fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); int nbSampling = sampleCategoryModel.getNbSampling(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 9c954a9..499ef42 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -99,8 +99,8 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN); newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN); newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.INTEGER_NULL_TO_9); - newColumnForExport("Saisisseur", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.LIST_PERSON_FORMATTER); - newColumnForExport("Navire_Associe", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.LIST_VESSEL_FORMATTER); + newColumnForExport("Saisisseur", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.PERSON_LIST_FORMATTER); + newColumnForExport("Navire_Associe", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.VESSEL_LIST_FORMATTER); newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newNullableColumnForExport("Poids_Total", OperationRow.PROPERTY_CATCH_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); @@ -164,8 +164,8 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newColumnForExport("Strate_Id", FishingOperation.PROPERTY_STRATA, TuttiCsvUtil.FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER); newColumnForExport("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, TuttiCsvUtil.FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER); newColumnForExport("Localite_Id", FishingOperation.PROPERTY_LOCATION, TuttiCsvUtil.FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER); - newColumnForExport("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); - newColumnForExport("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.LIST_VESSEL_TECHNICAL_FORMATTER); + newColumnForExport("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.PERSON_LIST_TECHNICAL_FORMATTER); + newColumnForExport("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.VESSEL_LIST_TECHNICAL_FORMATTER); } @@ -260,8 +260,8 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newMandatoryColumn("Strate_Id", FishingOperation.PROPERTY_STRATA, parserFactory.getFishingOperationStrataParser()); newMandatoryColumn("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, parserFactory.getFishingOperationSubStrataParser()); newMandatoryColumn("Localite_Id", FishingOperation.PROPERTY_LOCATION, parserFactory.getFishingOperationLocationParser()); - newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, parserFactory.getListPersonParser()); - newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, parserFactory.getListVesselParser()); + newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, parserFactory.getPersonListParser()); + newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, parserFactory.getVesselListParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java index c86ac2f..72df2ed 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java @@ -54,7 +54,7 @@ public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCa newMandatoryColumn(SampleCategoryRow.PROPERTY_CODE); newMandatoryColumn(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); - newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); + newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicForSampleCategoryParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java index e09bb42..5b9e2ca 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java @@ -45,6 +45,9 @@ public class SampleCategoryRow implements Serializable { public void setCaracteristic(Caracteristic caracteristic) { sampleCategoryModelEntry.setCaracteristic(caracteristic); + if (caracteristic!=null) { + sampleCategoryModelEntry.setCategoryId(caracteristic.getIdAsInt()); + } } public void setCode(String code) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index b33b316..e700cc2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -73,6 +73,7 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER); + newColumnForExport("Nombre_Poches", Cruise.PROPERTY_MULTIRIG_NUMBER, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiCsvUtil.COUNTRY_FORMATTER); newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiCsvUtil.PROGRAM_ZONE_FORMATTER); newColumnForExport("Campagne", Cruise.PROPERTY_NAME); @@ -81,15 +82,17 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_FORMATTER); newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND); newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_FORMATTER); - newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_FORMATTER); - newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_FORMATTER); + newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.PERSON_LIST_FORMATTER); + newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.PERSON_LIST_FORMATTER); newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + newColumnForExport("Serie_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_TECHNICAL_FORMATTER); newColumnForExport("Navire_Id", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_TECHNICAL_FORMATTER); + newColumnForExport("Engin_Id", Cruise.PROPERTY_GEAR, TuttiCsvUtil.GEAR_LIST_TECHNICAL_FORMATTER); newColumnForExport("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER); newColumnForExport("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER); - newColumnForExport("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); - newColumnForExport("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_TECHNICAL_FORMATTER); + newColumnForExport("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.PERSON_LIST_TECHNICAL_FORMATTER); + newColumnForExport("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.PERSON_LIST_TECHNICAL_FORMATTER); } @@ -99,8 +102,11 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newIgnoredColumn("Serie"); newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newIgnoredColumn("Navire"); + newMandatoryColumn("Nombre_Poches", Cruise.PROPERTY_MULTIRIG_NUMBER, TuttiCsvUtil.PRIMITIVE_INTEGER); + newIgnoredColumn("Pays"); + newIgnoredColumn("Zone_Etude"); newMandatoryColumn("Campagne", Cruise.PROPERTY_NAME); - newMandatoryColumn("Id_Sismer", SurveyRow.PROPERTY_ID_SISMER); + newIgnoredColumn("Id_Sismer"); newMandatoryColumn("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND); newIgnoredColumn("Port_Deb_Campagne"); newMandatoryColumn("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND); @@ -109,11 +115,13 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newIgnoredColumn("Resp_Salle_Tri"); newMandatoryColumn("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + newMandatoryColumn("Serie_Id", Cruise.PROPERTY_PROGRAM, parserFactory.getProgramParser()); newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, parserFactory.getVesselParser()); + newMandatoryColumn("Engin_Id", Cruise.PROPERTY_GEAR, parserFactory.getGearListParser()); newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, parserFactory.getHarbourParser()); newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, parserFactory.getHarbourParser()); - newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, parserFactory.getListPersonParser()); - newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, parserFactory.getListPersonParser()); + newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, parserFactory.getPersonListParser()); + newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, parserFactory.getPersonListParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java index 8fc5fdb..47c3638 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java @@ -91,7 +91,7 @@ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> //FIXME See if really needed, otherwise just use the default String parser // newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE); newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE, new StringParserFormatter(null, true)); - newMandatoryColumn(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.LIST_INTEGER_PARSER_FORMATTER); + newMandatoryColumn(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.INTEGER_LIST_PARSER_FORMATTER); newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN); @@ -107,7 +107,7 @@ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_MATRIX_NAME); newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_METHOD_NAME); - newColumnForExport(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.LIST_INTEGER_PARSER_FORMATTER); + newColumnForExport(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.INTEGER_LIST_PARSER_FORMATTER); newColumnForExport(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); newColumnForExport(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN); newColumnForExport(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index 60fa0b1..86357d4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -110,14 +110,14 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec if (toAdd) { if (log.isInfoEnabled()) { - log.info("Will add gear with name: " + name); + log.info("Will add species with name: " + name); } requestResult.addEntityToAdd(entity); } else { if (log.isInfoEnabled()) { - log.info("Will link gear with name: " + name); + log.info("Will link species with name: " + name); } requestResult.addEntityToLink(entity); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java new file mode 100644 index 0000000..7b8354d --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java @@ -0,0 +1,80 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.ServiceDbResource; +import fr.ifremer.tutti.service.TuttiServiceContext; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.nuiton.util.FileUtil; + +import java.io.File; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportServiceTest { + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbGenericFormatImport"); + + public static final String PROGRAM_ID = "CAM-CGFS"; + + protected GenericFormatImportService service; + + protected PersistenceService persistenceService; + + protected ServiceDbResource.DataContext dataContext; + + protected ProgressionModel progressionModel; + + @Before + public void setUp() throws Exception { + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + + persistenceService = serviceContext.getService(PersistenceService.class); + + dbResource.setCountryInConfig("12"); + dbResource.openDataContext(); + + service = serviceContext.getService(GenericFormatImportService.class); + + dataContext = dbResource.loadContext(PROGRAM_ID); + + progressionModel = new ProgressionModel(); + + } + + protected File createArchive(String directoryName, String archiveFileName) { + + File explodedDirectory = FileUtil.getFileFromPaths(new File("src"), "test", "resources", "genericFormat", directoryName); + + File dataDirectory = dbResource.getConfig().getDataDirectory(); + File archiveFile = new File(dataDirectory, archiveFileName); + + GenericFormatArchive archiveToExport = GenericFormatArchive.forExportFromWorkingDirectory(archiveFile, explodedDirectory); + + archiveToExport.createZip(null); + + return archiveFile; + + } + + @Test + public void loadEmptyImport() { + + File archiveFile = createArchive("empty", "empty.zip"); + + int nbSteps = service.getImportProgramNbSteps(archiveFile); + progressionModel.adaptTotal(nbSteps); + + service.importProgram(dataContext.program.getId(), archiveFile, progressionModel); + + + } +} diff --git a/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv b/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv new file mode 100644 index 0000000..1d7f9f1 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id diff --git a/tutti-service/src/test/resources/genericFormat/empty/catch.csv b/tutti-service/src/test/resources/genericFormat/empty/catch.csv new file mode 100644 index 0000000..65d3a64 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/catch.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Code_Taxon;Code_Espece_Campagne;Nom_Scientifique;Benthos;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturite;Num_Ordre_Maturite_H2;Tot_Maturite;Ech_Matu [...] \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv b/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv new file mode 100644 index 0000000..3c40757 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Engin;Rang_Engin;Code_PMFM;Libelle_PMFM;Valeur diff --git a/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv b/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv new file mode 100644 index 0000000..1d7f9f1 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id diff --git a/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv b/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv new file mode 100644 index 0000000..e308bed --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Categorie;Categorie_Taille;Nombre;Poids;Commentaire;Categorie_Id;Categorie_Taille_Id \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/empty/operation.csv b/tutti-service/src/test/resources/genericFormat/empty/operation.csv new file mode 100644 index 0000000..a50e33e --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/operation.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Navire;DateDeb;LatDeb;LongDeb;DateFin;LatFin;LongFin;Duree;Strate;Sous_Strate;Localite;Validite_OP;Rectiligne;Distance;Saisisseur;Navire_Associe;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Car [...] \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/empty/parameter.csv b/tutti-service/src/test/resources/genericFormat/empty/parameter.csv new file mode 100644 index 0000000..0f9cf03 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/parameter.csv @@ -0,0 +1 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur;Valeur_Id diff --git a/tutti-service/src/test/resources/genericFormat/empty/protocol.tuttiProtocol b/tutti-service/src/test/resources/genericFormat/empty/protocol.tuttiProtocol new file mode 100644 index 0000000..344c7dd --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/protocol.tuttiProtocol @@ -0,0 +1,81 @@ +id: 2b5f8ccd-1a91-4902-93db-c209f02b6e1a +name: Protocole EVHOE 2014 +benthos: +- !SpeciesProtocol + id: d315e520-dfb8-47e5-bad9-8bb9a7e13692 + countIfNoFrequencyEnabled: true + speciesReferenceTaxonId: -3 + speciesSurveyCode: MELANGE + weightEnabled: true +- !SpeciesProtocol + id: ea6c48e3-d7d9-4482-996c-637c9c34ccc0 + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + mandatorySampleCategoryId: + - 198 + - 196 + speciesReferenceTaxonId: 4001 + speciesSurveyCode: SAGASCH + weightEnabled: true +caracteristicMapping: +- !CaracteristicMappingRow + pmfmId: 828 + tab: GEAR_USE_FEATURE +comment: "Protocole en pr\u00e9paration pour EVHOE 2014" +lengthClassesPmfmId: +- 306 +- 622 +- 307 +- 302 +- 299 +- 1394 +- 1417 +- 1425 +- 1426 +- 1427 +- 284 +- 285 +- 294 +- 295 +- 300 +- 301 +- 304 +- 318 +- 319 +- 322 +- 323 +- 661 +- 662 +species: +- !SpeciesProtocol + id: 609eb1b2-7d9f-4277-91fb-0b18cf5a81f9 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + speciesReferenceTaxonId: -4 + speciesSurveyCode: DIVE-RS1 + weightEnabled: true +- !SpeciesProtocol + id: f5f7c134-55dd-4c4c-a635-ae8d8fc2ff75 + countIfNoFrequencyEnabled: true + speciesReferenceTaxonId: -5 + speciesSurveyCode: DIVE-RS1 + weightEnabled: true +- !SpeciesProtocol + id: d7006c1f-8cca-4c0e-92ae-492e40941c44 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 196 + speciesReferenceTaxonId: 1055 + speciesSurveyCode: CANC-BEL + weightEnabled: true +- !SpeciesProtocol + id: 06957d3a-7677-47bd-b953-454f752b5ec6 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + speciesReferenceTaxonId: 1663 + speciesSurveyCode: TRAC-MED + weightEnabled: true +version: 3 diff --git a/tutti-service/src/test/resources/genericFormat/empty/sampleCategory.csv b/tutti-service/src/test/resources/genericFormat/empty/sampleCategory.csv new file mode 100644 index 0000000..2f2b57f --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/sampleCategory.csv @@ -0,0 +1,6 @@ +code;order;caracteristic +V_HV;0;1428 +Class_Tri;1;198 +Sexe;2;196 +Maturite;3;174 +Age;4;1430 diff --git a/tutti-service/src/test/resources/genericFormat/empty/survey.csv b/tutti-service/src/test/resources/genericFormat/empty/survey.csv new file mode 100644 index 0000000..a54b3c7 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/survey.csv @@ -0,0 +1,2 @@ +Annee;Serie;Serie_Partielle;Navire;Nombre_Poches;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire;Serie_Id;Navire_Id;Engin_Id;Port_Deb_Campagne_Id;Port_Fin_Campagne_Id;Chef_Mission_Id;Resp_Salle_Tri_Id +2014;Campagne EVHOE;1;868095;1;FRA;EVHOE - Golfe de Gascogne / Mer Celtique;Campagne EVHOE 2014;;17/10/2014 07:00:00;Brest;01/12/2014 07:00:00;Brest;Jean-Pierre LEAUTE|Michele SALAUN|Lionel PAWLOWSKI;Erwan DUHAMEL|Nicolas CAROFF;;CAM-CGFS;868095;1|2;530;530;143|70|2332;128|59 diff --git a/tutti-service/src/test/resources/genericFormat/empty/temporaryPersons.csv b/tutti-service/src/test/resources/genericFormat/empty/temporaryPersons.csv new file mode 100644 index 0000000..372a462 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/temporaryPersons.csv @@ -0,0 +1,4 @@ +id;firstName;lastName;toDelete +-1;Léo;Paul; +-2;Paul;Valery; +-3;Valery;François; \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/empty/temporarySpecies.csv b/tutti-service/src/test/resources/genericFormat/empty/temporarySpecies.csv new file mode 100644 index 0000000..16277a6 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/temporarySpecies.csv @@ -0,0 +1,9 @@ +id;name;toDelete +-6;Benthos; +-4;Divers 1; +-5;Divers 2; +-1;Divers 3; +-2;Divers 4; +-7;Gelatineux; +-8;MBECTOP; +-3;Melange; \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/empty/temporaryVessels.csv b/tutti-service/src/test/resources/genericFormat/empty/temporaryVessels.csv new file mode 100644 index 0000000..850442a --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/empty/temporaryVessels.csv @@ -0,0 +1 @@ +id;name;internationalRegistrationCode;scientificVessel;toDelete diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java index ab1be99..de785a3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java @@ -50,10 +50,11 @@ public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction if (doAction) { - // check archive is sane + // compute number of steps (will also check archive format) GenericFormatImportService service = getContext().getGenericFormatImportService(); - service.checkArchive(file); + int nbSteps = service.getImportProgramNbSteps(file); + createProgressionModelIfRequired(nbSteps); } @@ -69,32 +70,29 @@ public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction Preconditions.checkNotNull(file); if (log.isInfoEnabled()) { - log.info("Will import cruise to program " + program.getId() + " from archive: " + file); + log.info("Will import cruises to program " + program.getName() + " from archive: " + file); } GenericFormatImportService service = getContext().getGenericFormatImportService(); - int nbSteps = service.getImportProgramNbSteps(file); - createProgressionModelIfRequired(nbSteps); - - ApplicationBusinessException exportError = null; + ApplicationBusinessException importError = null; try { service.importProgram(program.getId(), file, getProgressionModel()); } catch (ApplicationBusinessException e) { String errorMessage; - errorMessage = t("tutti.importProgram.action.exportErrors", program.getName(), e.getMessage()); + errorMessage = t("tutti.importProgram.action.importErrors", program.getName(), e.getMessage()); - exportError = new ApplicationBusinessException(errorMessage); + importError = new ApplicationBusinessException(errorMessage); } handler.resetEditProgramAction(); sendMessage(t("tutti.importProgram.action.success", program.getName(), file.getName())); - if (exportError != null) { - throw exportError; + if (importError != null) { + throw importError; } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 49c99512344c3d67d190e1761f886a54230c7be0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:57:05 2015 +0100 fix NPE if no referential import done --- .../tutti/service/genericformat/GenericFormatImportService.java | 4 ++++ .../service/genericformat/GenericFormatReferentialImportResult.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index e641ea3..0dbc1fc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -232,6 +232,7 @@ public class GenericFormatImportService extends AbstractTuttiService { if (log.isInfoEnabled()) { log.info("Skip import temporary gears (no file found)."); } + importContext.getImportResult().setImportedGears(new GenericFormatReferentialImportResult<Gear, Integer>()); } @@ -267,6 +268,7 @@ public class GenericFormatImportService extends AbstractTuttiService { if (log.isInfoEnabled()) { log.info("Skip import temporary persons (no file found)."); } + importContext.getImportResult().setImportedPersons(new GenericFormatReferentialImportResult<Person, Integer>()); } @@ -302,6 +304,7 @@ public class GenericFormatImportService extends AbstractTuttiService { if (log.isInfoEnabled()) { log.info("Skip import temporary species (no file found)."); } + importContext.getImportResult().setImportedSpecies(new GenericFormatReferentialImportResult<Species, Integer>()); } @@ -337,6 +340,7 @@ public class GenericFormatImportService extends AbstractTuttiService { if (log.isInfoEnabled()) { log.info("Skip import temporary vessels (no file found)."); } + importContext.getImportResult().setImportedVessels(new GenericFormatReferentialImportResult<Vessel, String>()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index ff33d81..2eab11e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -24,6 +24,12 @@ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEnti private final Map<String, String> idTranslationMap; + public GenericFormatReferentialImportResult() { + this.entitiesAdded = Collections.emptyMap(); + this.entitiesLinked = Collections.emptyMap(); + this.idTranslationMap = Collections.emptyMap(); + } + public GenericFormatReferentialImportResult(ReferentialImportRequest<E, K> importRequest, ReferentialImportResult<E> importResult) { Map<String, String> translationMap = new TreeMap<>(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c76757f545feadeff37f7441b21183e70391ceb8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 20:57:22 2015 +0100 fix test data --- tutti-service/src/test/resources/genericFormat/empty/survey.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/test/resources/genericFormat/empty/survey.csv b/tutti-service/src/test/resources/genericFormat/empty/survey.csv index a54b3c7..7038273 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/survey.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/survey.csv @@ -1,2 +1,2 @@ Annee;Serie;Serie_Partielle;Navire;Nombre_Poches;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire;Serie_Id;Navire_Id;Engin_Id;Port_Deb_Campagne_Id;Port_Fin_Campagne_Id;Chef_Mission_Id;Resp_Salle_Tri_Id -2014;Campagne EVHOE;1;868095;1;FRA;EVHOE - Golfe de Gascogne / Mer Celtique;Campagne EVHOE 2014;;17/10/2014 07:00:00;Brest;01/12/2014 07:00:00;Brest;Jean-Pierre LEAUTE|Michele SALAUN|Lionel PAWLOWSKI;Erwan DUHAMEL|Nicolas CAROFF;;CAM-CGFS;868095;1|2;530;530;143|70|2332;128|59 +2014;Campagne EVHOE;1;868095;1;FRA;EVHOE - Golfe de Gascogne / Mer Celtique;Campagne EVHOE 2014;;17/10/2014 07:00:00;Brest;01/12/2014 07:00:00;Brest;Jean-Pierre LEAUTE|Michele SALAUN|Lionel PAWLOWSKI;Erwan DUHAMEL|Nicolas CAROFF;;CAM-CGFS;868095;1|4;530;530;143|70|2332;128|59 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 00f53fbd1feee8492cbfe6c6cac7b3e1d46626dd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 21:03:17 2015 +0100 fix test data --- .../src/test/resources/genericFormat/empty/gearCaracteristics.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv b/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv index 3c40757..90a0a58 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv @@ -1 +1 @@ -Annee;Serie;Serie_Partielle;Engin;Rang_Engin;Code_PMFM;Libelle_PMFM;Valeur +Annee;Serie;Serie_Partielle;Engin;Rang_Engin;Code_PMFM;Libelle_PMFM;Valeur;Engin_Id;Valeur_Id -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 956cc4049b02a07833b1399cfe9d0ec7e8bb2408 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 21:03:24 2015 +0100 fix path --- .../fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java index a80111f..d9524b2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java @@ -172,7 +172,7 @@ public class GenericFormatArchive { } public Path getGearCaracteristicsPath() { - return getPath(ArchiveFilePath.DATA_ACCIDENTAL_CATCH); + return getPath(ArchiveFilePath.DATA_GEAR_CARACTERISTIC); } public Path getOperationPath() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f455a8963f17c5cf17005ef2e98e5e64abfbde07 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 21:09:29 2015 +0100 fix bad path --- .../ifremer/tutti/service/genericformat/GenericFormatImportContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java index bd7a207..a4f5266 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -97,7 +97,7 @@ public class GenericFormatImportContext implements Closeable { } public CsvConsumerForCatch loadCatches() { - CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importRequest.getSampleCategoryModel(), importEntityParserFactory); + CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getCatchPath(), importRequest.getCsvSeparator(), importRequest.getSampleCategoryModel(), importEntityParserFactory); return consumer; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 7452db3e521b8d72025edeb74fc92fe36bedc365 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:58:13 2015 +0100 fix gear export --- .../tutti/service/referential/producer/CsvProducerForTemporaryGear.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java index bf02c27..783e1dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java @@ -19,7 +19,7 @@ import java.util.List; public class CsvProducerForTemporaryGear extends CsvProducer<GearRow, GearModel> { public CsvProducerForTemporaryGear(Path file, char separator) { - super(file, GearModel.forImport(separator)); + super(file, GearModel.forExport(separator)); } public List<GearRow> getDataToExport(List<Gear> toExport) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 30aad201e2c52c51a8109478adf16a8bc485be86 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:58:37 2015 +0100 add referential import result --- .../genericformat/GenericFormatImportService.java | 13 ++++++++++ .../GenericFormatReferentialImportResult.java | 30 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index 0dbc1fc..f0d8d22 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -226,6 +226,9 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Gear, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedGears(genericFormatReferentialImportResult); + if (log.isInfoEnabled()) { + log.info("Temporary gears import result: " + genericFormatReferentialImportResult.getReport()); + } } else { @@ -262,6 +265,9 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Person, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedPersons(genericFormatReferentialImportResult); + if (log.isInfoEnabled()) { + log.info("Temporary persons import result: " + genericFormatReferentialImportResult.getReport()); + } } else { @@ -299,6 +305,9 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Species, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedSpecies(genericFormatReferentialImportResult); + if (log.isInfoEnabled()) { + log.info("Temporary species import result: " + genericFormatReferentialImportResult.getReport()); + } } else { if (log.isInfoEnabled()) { @@ -335,6 +344,10 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatReferentialImportResult<Vessel, String> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); importContext.getImportResult().setImportedVessels(genericFormatReferentialImportResult); + if (log.isInfoEnabled()) { + log.info("Temporary vessels import result: " + genericFormatReferentialImportResult.getReport()); + } + } else { if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index 2eab11e..19a0c7b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -1,10 +1,12 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.base.Function; +import com.google.common.base.Joiner; import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -89,4 +91,32 @@ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEnti } + public String getReport() { + + StringBuilder builder = new StringBuilder(); + + List<String> added = getMapReport(entitiesAdded); + builder.append(String.format("%s entities added: \n%s", added.size(), Joiner.on("\n").join(added))); + + List<String> linked = getMapReport(entitiesLinked); + builder.append(String.format("%s entities linked: \n%s", added.size(), Joiner.on("\n").join(linked))); + + return builder.toString(); + + } + + protected List<String> getMapReport(Map<String, E> map) { + + List<String> list = new ArrayList<>(); + for (Map.Entry<String, String> entry : idTranslationMap.entrySet()) { + String originalId = entry.getKey(); + String targetId = entry.getValue(); + if (map.containsKey(targetId)) { + list.add(String.format("original id: %s -> persist id: %s", originalId, targetId)); + } + + } + return list; + + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 65950d7df53c3dddfa5c1510f8db0621d0ccd385 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:58:55 2015 +0100 rename i18n --- .../fr/ifremer/tutti/ui/swing/action/ExportProtocolAction.java | 2 +- .../fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java | 2 +- .../src/main/resources/i18n/tutti-ui-swing_en_GB.properties | 3 +++ .../src/main/resources/i18n/tutti-ui-swing_fr_FR.properties | 8 +++++++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProtocolAction.java index 1a3f53a..0b70ce5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProtocolAction.java @@ -65,7 +65,7 @@ public class ExportProtocolAction extends AbstractTuttiAction<SelectCruiseUIMode file = saveFile( "protocol-" + protocol.getName().replaceAll(" ", "_"), "tuttiProtocol", - t("tutti.selectCruise.title.choose.exportFile"), + t("tutti.selectCruise.title.choose.exportProtocolFile"), t("tutti.selectCruise.action.exportProtocol"), "^.+\\.tuttiProtocol$", t("tutti.common.file.protocol") ); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java index c61c8be..5692280 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java @@ -83,7 +83,7 @@ public class ImportProtocolAction extends AbstractChangeScreenAction { if (doAction) { // choose file to import file = chooseFile( - t("tutti.selectCruise.title.choose.importFile"), + t("tutti.selectCruise.title.choose.importProtocolFile"), t("tutti.selectCruise.action.importProtocol"), "^.+\\.tuttiProtocol$", t("tutti.common.file.protocol") ); diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index e2fa25e..e37e453 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1422,6 +1422,7 @@ tutti.importDb.step.openDb= tutti.importDb.step.unzipArchive= tutti.importDb.step.will.migrateSchema= tutti.importProgram.action.exportErrors= +tutti.importProgram.action.importErrors= tutti.importProgram.action.success= tutti.importProtocol.action.success= tutti.importPupitri.carrouselFile.extension= @@ -1772,6 +1773,8 @@ tutti.selectCruise.action.exportProgram.tip= tutti.selectCruise.action.exportProtocol= tutti.selectCruise.action.exportProtocol.tip= tutti.selectCruise.action.importGenericformat= +tutti.selectCruise.action.importProgram= +tutti.selectCruise.action.importProgram.tip= tutti.selectCruise.action.importProtocol= tutti.selectCruise.action.importProtocol.tip= tutti.selectCruise.action.newCruise= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 1b167d0..53853d1 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1363,6 +1363,7 @@ tutti.importDb.step.openDb=Ouverture de la base de données <strong>%s</strong> tutti.importDb.step.unzipArchive=Décompression de l'archive tutti.importDb.step.will.migrateSchema=Démarrage de la mise à jour du schéma de la base depuis la version %s vers la version %s tutti.importProgram.action.exportErrors= +tutti.importProgram.action.importErrors= tutti.importProgram.action.success= tutti.importProtocol.action.success=Protocole [%s] lu depuis le fichier. tutti.importPupitri.carrouselFile.extension=car @@ -1671,7 +1672,9 @@ tutti.selectCruise.action.exportProgram=Exporter tutti.selectCruise.action.exportProgram.tip=Exporter la série sélectionnée tutti.selectCruise.action.exportProtocol=Exporter tutti.selectCruise.action.exportProtocol.tip=Exporter le protocole sélectionné -tutti.selectCruise.action.importGenericformat= +tutti.selectCruise.action.importGenericformat=Importer +tutti.selectCruise.action.importProgram=Importer +tutti.selectCruise.action.importProgram.tip=Importer des campagnes au format générique tutti.selectCruise.action.importProtocol=Importer tutti.selectCruise.action.importProtocol.tip=Importer un protocole tutti.selectCruise.action.newCruise=Nouveau @@ -1694,8 +1697,11 @@ tutti.selectCruise.field.protocol.tip=Nom du protocole de saisie tutti.selectCruise.title=Sélection de la campagne tutti.selectCruise.title.choose.exportCruiseFile=Exporter une campagne tutti.selectCruise.title.choose.exportFile=Exporter le protocole +tutti.selectCruise.title.choose.exportProtocolFile=Exporter le protocole tutti.selectCruise.title.choose.exportProgramFile=Exporter une série de campagne tutti.selectCruise.title.choose.importFile=Importer le protocole +tutti.selectCruise.title.choose.importProtocolFile=Importer le protocole +tutti.selectCruise.title.choose.importGenericFormatFile=Importer des campagnes tutti.selectCruise.warn.invalid.selected.data=Les données sélectionnées ne sont pas valides, impossible de saisir ou valider les captures. tutti.selectSpecies.action.cancel=Annuler tutti.selectSpecies.action.cancel.mnemonic=A -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit aba3d82acb8e41984ffb9b16801c1937b2ccf86d Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 09:59:48 2015 +0100 add generic format import --- .../filtered-resources/tutti-help-fr.properties | 26 ++-------------------- .../ImportGenericFormatProgramCruisesAction.java | 2 +- .../tutti/ui/swing/content/home/SelectCruiseUI.css | 2 +- .../ui/swing/content/home/SelectCruiseUI.jaxx | 1 + 4 files changed, 5 insertions(+), 26 deletions(-) diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index 1fa9eb7..2fce70a 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id:$ -# $HeadURL:$ -# %% -# Copyright (C) 2012 - 2014 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Mon Dec 08 18:37:45 CET 2014 +#Mon Feb 16 09:45:58 CET 2015 \ "tutti.editProtocol.action.addCaracteristicMapping.help"\ = tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -415,6 +392,7 @@ tutti.selectCruise.action.exportCruiseForSumatraV2.help=selectCruise.html\#actio tutti.selectCruise.action.exportProgram.help=selectCruise.html\#actions tutti.selectCruise.action.exportProtocol.help=selectCruise.html\#actions tutti.selectCruise.action.generateCruiseReport.help=selectCruise.html\#actions +tutti.selectCruise.action.importProgram.help=selectCruise.html\#actions tutti.selectCruise.action.importProtocol.help=selectCruise.html\#actions tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java index de785a3..4a2a2d0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java @@ -40,7 +40,7 @@ public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction // choose file to import file = chooseFile( - t("tutti.selectCruise.title.choose.importFile"), + t("tutti.selectCruise.title.choose.importGenericFormatFile"), t("tutti.selectCruise.action.importGenericformat"), "^.+\\.zip$", t("tutti.common.file.genericFormat") ); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css index d3d1adf..1bb3650 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css @@ -56,7 +56,7 @@ BeanFilterableComboBox { } #editProgramComboBox { - model: {SwingUtil.newComboModel(editProgramButton, exportProgramButton)}; + model: {SwingUtil.newComboModel(editProgramButton, exportProgramButton, importProgramButton)}; enabled: {model.isProgramFound()}; renderer: {new ActionListCellRenderer()}; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx index baf33f8..0f42f3c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx @@ -63,6 +63,7 @@ <JButton id='editProgramButton'/> <JButton id='exportProgramButton'/> + <JButton id='importProgramButton'/> <JButton id='editCruiseButton'/> <JButton id='exportCruiseButton'/> <JButton id='sendCruiseReportButton'/> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f2a00b8071986b4dec4578a43c43b5a294243662 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 10:00:09 2015 +0100 fix i18n keys --- tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index f7329ee..e1bb26a 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -11,7 +11,7 @@ tutti.genericFormat.import.accidentalCatches=Import des captures accidentelles tutti.genericFormat.import.catches=Import des captures tutti.genericFormat.import.cruises=Import des campagnes tutti.genericFormat.import.error.cruiseAlreadyExist=Il existe déjà une campagne avec ce nom %s -tutti.genericFormat.import.error.cruiseNotValid=La camapgne n'est pas valide :\n%s +tutti.genericFormat.import.error.cruiseNotValid=La camapgne n'est pas valide \:\n%s tutti.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin tutti.genericFormat.import.individualObservations=Import des observations individuelles tutti.genericFormat.import.marineLitters=Import des macro-déchets -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit fac0aa97e9fff2861c2a4276e6650a1965b69efd Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 14:10:17 2015 +0100 fix i18n --- .../src/main/resources/i18n/tutti-ui-swing_en_GB.properties | 3 +++ .../src/main/resources/i18n/tutti-ui-swing_fr_FR.properties | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index e37e453..80fcb34 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1798,7 +1798,10 @@ tutti.selectCruise.title= tutti.selectCruise.title.choose.exportCruiseFile= tutti.selectCruise.title.choose.exportFile= tutti.selectCruise.title.choose.exportProgramFile= +tutti.selectCruise.title.choose.exportProtocolFile= tutti.selectCruise.title.choose.importFile= +tutti.selectCruise.title.choose.importGenericFormatFile= +tutti.selectCruise.title.choose.importProtocolFile= tutti.selectCruise.warn.invalid.selected.data= tutti.selectSpecies.action.cancel= tutti.selectSpecies.action.cancel.mnemonic= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 53853d1..2a69e86 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1697,11 +1697,11 @@ tutti.selectCruise.field.protocol.tip=Nom du protocole de saisie tutti.selectCruise.title=Sélection de la campagne tutti.selectCruise.title.choose.exportCruiseFile=Exporter une campagne tutti.selectCruise.title.choose.exportFile=Exporter le protocole -tutti.selectCruise.title.choose.exportProtocolFile=Exporter le protocole tutti.selectCruise.title.choose.exportProgramFile=Exporter une série de campagne +tutti.selectCruise.title.choose.exportProtocolFile=Exporter le protocole tutti.selectCruise.title.choose.importFile=Importer le protocole -tutti.selectCruise.title.choose.importProtocolFile=Importer le protocole tutti.selectCruise.title.choose.importGenericFormatFile=Importer des campagnes +tutti.selectCruise.title.choose.importProtocolFile=Importer le protocole tutti.selectCruise.warn.invalid.selected.data=Les données sélectionnées ne sont pas valides, impossible de saisir ou valider les captures. tutti.selectSpecies.action.cancel=Annuler tutti.selectSpecies.action.cancel.mnemonic=A -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 2317940a78ced0bf3d22f1d13047666a1cfc5b56 Merge: 2cbb96b fac0aa9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 16 14:24:11 2015 +0100 fixes #6612: [EXPORT GENERIQUE] Consolidation de l’export générique (merge into develop) pom.xml | 2 +- .../tutti/persistence/TuttiPersistenceImpl.java | 63 +- .../persistence/TuttiPersistenceNoDbImpl.java | 53 +- .../tutti/persistence/entities/TuttiEntities.java | 21 - .../tutti/persistence/entities/data/Cruises.java | 13 + .../tutti/persistence/entities/data/Programs.java | 21 + .../entities/protocol/TuttiProtocols.java | 40 + .../CaracteristicQualitativeValues.java | 23 +- .../persistence/entities/referential/Gears.java | 27 +- .../persistence/entities/referential/Persons.java | 28 +- .../persistence/entities/referential/Speciess.java | 44 +- .../entities/referential/TuttiLocations.java | 33 + .../persistence/entities/referential/Vessels.java | 47 +- .../service/ProtocolPersistenceService.java | 11 + .../service/ProtocolPersistenceServiceImpl.java | 20 + .../referential/GearPersistenceService.java | 29 +- .../referential/GearPersistenceServiceImpl.java | 102 +- .../referential/PersonPersistenceService.java | 29 +- .../referential/PersonPersistenceServiceImpl.java | 108 ++- .../referential/SpeciesPersistenceService.java | 29 +- .../referential/SpeciesPersistenceServiceImpl.java | 86 +- .../referential/VesselPersistenceService.java | 29 +- .../referential/VesselPersistenceServiceImpl.java | 99 +- .../src/main/resources/queries-failsafe.hbm.xml | 106 +- .../entities/protocol/TuttiProtocolsTest.java | 21 +- .../GearPersistenceServiceWriteTest.java | 4 +- .../PersonPersistenceServiceWriteTest.java | 4 +- .../SpeciesPersistenceServiceReadTest.java | 2 +- .../SpeciesPersistenceServiceWriteTest.java | 4 +- .../VesselPersistenceServiceWriteTest.java | 4 +- .../ifremer/tutti/service/PdfGeneratorService.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 77 +- .../fr/ifremer/tutti/service/TuttiCsvUtil.java | 942 ------------------ .../service/bigfin/csv/BigfinDataRowModel.java | 4 +- .../AbstractFishingOperationRowModel.java | 5 +- .../catches/multipost/AccidentalCatchRowModel.java | 51 +- .../catches/multipost/AttachmentRowModel.java | 5 +- .../catches/multipost/CaracteristicRowModel.java | 21 +- .../catches/multipost/CatchBatchRowModel.java | 2 +- .../catches/multipost/CatchFrequencyRowModel.java | 23 +- .../service/catches/multipost/CatchRowModel.java | 35 +- .../catches/multipost/CatchWeightsRowModel.java | 12 +- .../multipost/IndividualObservationRowModel.java | 32 +- .../catches/multipost/MarineLitterRowModel.java | 35 +- .../multipost/MarineLitterWeightRowModel.java | 5 +- .../catches/multipost/MultiPostImportService.java | 97 +- .../csv/AbstractTuttiImportExportModel.java | 63 ++ .../service/csv/AbstractTuttiImportModel.java | 28 + .../tutti/service/csv/BeanIndexNullableGetter.java | 50 + .../tutti/service/csv/BeanNullableGetter.java | 39 + .../tutti/service/csv/BeanPropertyFormatter.java | 37 + .../service/csv/CaracteristicParserFormatter.java | 46 + .../csv/CaracteristicValueParserFormatter.java | 114 +++ .../tutti/service/csv/CountryFormatter.java | 23 + .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 107 +++ .../fr/ifremer/tutti/service/csv/CsvProducer.java | 58 ++ .../csv/EntityListParserFormatterSupport.java | 52 + .../tutti/service/csv/EntityNotFoundException.java | 39 + .../service/csv/EntityParserFormatterSupport.java | 107 +++ .../service/csv/EnumByNameParserFormatter.java | 50 + .../FishingOperationLocationParserFormatter.java | 49 + .../csv/FishingOperationStrataParserFormatter.java | 49 + .../FishingOperationSubStrataParserFormatter.java | 49 + .../service/csv/ForeignKeyListParserFormatter.java | 68 ++ .../service/csv/ForeignKeyParserFormatter.java | 57 ++ .../tutti/service/csv/GearListParserFormatter.java | 25 + .../tutti/service/csv/GearParserFormatter.java | 63 ++ .../tutti/service/csv/HarbourParserFormatter.java | 48 + .../tutti/service/csv/ImportModelWithHeader.java | 13 + .../service/csv/IntegerListParserFormatter.java | 43 + .../service/csv/PersonListParserFormatter.java | 25 + .../tutti/service/csv/PersonParserFormatter.java | 60 ++ .../tutti/service/csv/ProgramParserFormatter.java | 46 + .../tutti/service/csv/ProgramZoneFormatter.java | 23 + .../tutti/service/csv/SpeciesParserFormatter.java | 75 ++ .../tutti/service/csv/StringParserFormatter.java | 30 + .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 225 +++++ .../tutti/service/csv/TuttiRepeatableExport.java | 25 + .../service/csv/VesselListParserFormatter.java | 25 + .../tutti/service/csv/VesselParserFormatter.java | 63 ++ .../export/generic/AccidentalCatchExportModel.java | 167 ---- .../generic/GearCaracteristicExportModel.java | 74 -- .../generic/IndividualObservationExportModel.java | 145 --- .../export/generic/MarineLitterExportModel.java | 82 -- .../export/generic/OperationExportModel.java | 143 --- .../export/generic/ParameterExportModel.java | 92 -- .../service/export/generic/SpeciesExportModel.java | 75 -- .../service/export/generic/SurveyExportModel.java | 68 -- .../service/export/generic/TuttiExportService.java | 1014 -------------------- .../service/export/sumatra/CatchRowModel.java | 7 +- .../genericformat/GenericFormatArchive.java | 415 ++++++++ .../genericformat/GenericFormatExportContext.java | 252 +++++ .../GenericFormatExportOperationContext.java | 206 ++++ .../genericformat/GenericFormatExportService.java | 820 ++++++++++++++++ .../genericformat/GenericFormatImportContext.java | 139 +++ .../GenericFormatImportEntityParserFactory.java | 187 ++++ .../genericformat/GenericFormatImportRequest.java | 73 ++ .../genericformat/GenericFormatImportResult.java | 104 ++ .../genericformat/GenericFormatImportService.java | 552 +++++++++++ .../GenericFormatReferentialImportResult.java | 122 +++ .../consumer/CruiseAlreadyExistException.java | 32 + .../consumer/CruiseNotValidException.java | 58 ++ .../consumer/CsvConsumerForAccidentalCatch.java | 37 + .../consumer/CsvConsumerForCatch.java | 39 + .../consumer/CsvConsumerForGearCaracteristic.java | 38 + .../CsvConsumerForIndividualObservation.java | 38 + .../consumer/CsvConsumerForMarineLitter.java | 38 + .../consumer/CsvConsumerForOperation.java | 38 + .../consumer/CsvConsumerForParameter.java | 38 + .../consumer/CsvConsumerForSampleCategory.java | 79 ++ .../consumer/CsvConsumerForSurvey.java | 56 ++ .../genericformat/csv/AccidentalCatchModel.java | 119 +++ .../csv/AccidentalCatchRow.java} | 4 +- .../service/genericformat/csv/CatchModel.java | 216 +++++ .../csv/CatchRow.java} | 34 +- .../csv}/ExportSampleCategory.java | 2 +- .../genericformat/csv/GearCaracteristicModel.java | 107 +++ .../csv/GearCaracteristicRow.java} | 20 +- .../csv/IndividualObservationModel.java | 120 +++ .../csv/IndividualObservationRow.java} | 4 +- .../genericformat/csv/MarineLitterModel.java | 117 +++ .../csv/MarineLitterRow.java} | 4 +- .../service/genericformat/csv/OperationModel.java | 268 ++++++ .../csv/OperationRow.java} | 97 +- .../service/genericformat/csv/ParameterModel.java | 105 ++ .../csv/ParameterRow.java} | 4 +- .../genericformat/csv/SampleCategoryModel.java | 61 ++ .../genericformat/csv/SampleCategoryRow.java | 56 ++ .../genericformat/csv/SpeciesExportModel.java | 65 ++ .../csv}/SpeciesExportRow.java | 2 +- .../service/genericformat/csv/SurveyModel.java | 128 +++ .../csv/SurveyRow.java} | 64 +- .../producer/CsvProducerForAccidentalCatch.java | 115 +++ .../producer/CsvProducerForCatch.java} | 325 +++---- .../producer/CsvProducerForGearCaracteristics.java | 50 + .../CsvProducerForIndividualObservation.java | 100 ++ .../producer/CsvProducerForMarineLitter.java | 49 + .../producer/CsvProducerForOperation.java | 35 + .../producer/CsvProducerForParameter.java | 62 ++ .../producer/CsvProducerForSampleCategory.java | 40 + .../producer/CsvProducerForSpecies.java | 100 ++ .../producer/CsvProducerForSurvey.java | 32 + .../operationimport/ImportFromColumnFileModel.java | 19 +- .../service/protocol/CaracteristicRowModel.java | 5 +- .../tutti/service/protocol/SpeciesRowModel.java | 17 +- .../service/pupitri/PupitriImportService.java | 4 +- .../service/pupitri/csv/CarrouselRowModel.java | 5 +- .../tutti/service/pupitri/csv/SpeciesRowModel.java | 4 +- .../tutti/service/pupitri/csv/TrunkRowModel.java | 5 +- ...stResult.java => ReferentialImportRequest.java} | 33 +- .../referential/ReferentialImportResult.java | 38 +- .../referential/ReferentialImportService.java | 752 --------------- .../ReferentialTemporaryGearService.java | 209 ++-- .../ReferentialTemporaryPersonService.java | 204 ++-- .../ReferentialTemporarySpeciesService.java | 200 ++-- .../ReferentialTemporaryVesselService.java | 200 +--- .../consumer/CsvConsumerForTemporaryGear.java | 198 ++++ .../consumer/CsvConsumerForTemporaryPerson.java | 195 ++++ .../consumer/CsvConsumerForTemporarySpecies.java | 200 ++++ .../consumer/CsvConsumerForTemporaryVessel.java | 199 ++++ .../service/referential/{ => csv}/GearModel.java | 54 +- .../service/referential/{ => csv}/GearRow.java | 2 +- .../service/referential/{ => csv}/PersonModel.java | 54 +- .../service/referential/{ => csv}/PersonRow.java | 10 +- .../referential/{ => csv}/SpeciesModel.java | 54 +- .../service/referential/{ => csv}/SpeciesRow.java | 2 +- .../TemporaryReferentialEntityIdParser.java | 19 +- .../service/referential/{ => csv}/VesselModel.java | 59 +- .../service/referential/{ => csv}/VesselRow.java | 2 +- .../producer/CsvProducerForTemporaryGear.java | 38 + .../producer/CsvProducerForTemporaryPerson.java | 38 + .../producer/CsvProducerForTemporarySpecies.java | 38 + .../producer/CsvProducerForTemporaryVessel.java | 38 + .../tutti/service/report/ReportService.java | 4 +- .../resources/i18n/tutti-service_en_GB.properties | 105 +- .../resources/i18n/tutti-service_fr_FR.properties | 106 +- .../ifremer/tutti/service/ServiceDbResource.java | 15 +- .../export/generic/TuttiExportServiceTest.java | 505 ---------- .../GenericFormatExportService2Test.java} | 8 +- .../GenericFormatExportServiceAno5804Test.java} | 8 +- .../GenericFormatExportServiceTest.java | 548 +++++++++++ .../GenericFormatImportServiceTest.java | 80 ++ .../pupitri/PupitriImportServiceAno5079Test.java | 2 +- .../ReferentialTemporaryExportServiceTest.java | 3 + .../ReferentialTemporaryGearServiceTest.java | 8 +- .../ReferentialTemporaryPersonServiceTest.java | 4 +- .../ReferentialTemporarySpeciesServiceTest.java | 12 +- .../ReferentialTemporaryVesselServiceTest.java | 6 +- .../genericFormat/empty/accidentalCatch.csv | 1 + .../test/resources/genericFormat/empty/catch.csv | 1 + .../genericFormat/empty/gearCaracteristics.csv | 1 + .../genericFormat/empty/individualObservation.csv | 1 + .../resources/genericFormat/empty/marineLitter.csv | 1 + .../resources/genericFormat/empty/operation.csv | 1 + .../resources/genericFormat/empty/parameter.csv | 1 + .../genericFormat/empty/protocol.tuttiProtocol | 81 ++ .../genericFormat/empty/sampleCategory.csv | 6 + .../test/resources/genericFormat/empty/survey.csv | 2 + .../genericFormat/empty/temporaryPersons.csv | 4 + .../genericFormat/empty/temporarySpecies.csv | 9 + .../genericFormat/empty/temporaryVessels.csv | 1 + .../filtered-resources/tutti-help-fr.properties | 3 +- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 11 +- .../tutti/ui/swing/action/AbstractTuttiAction.java | 3 +- ...n.java => ExportGenericFormatCruiseAction.java} | 32 +- ...> ExportGenericFormatProgramCruisesAction.java} | 38 +- .../ui/swing/action/ExportProtocolAction.java | 2 +- .../ImportGenericFormatProgramCruisesAction.java | 105 ++ .../ui/swing/action/ImportProtocolAction.java | 7 +- .../action/OpenReplaceTemporaryGearUIAction.java | 3 +- .../action/OpenReplaceTemporaryVesselUIAction.java | 3 +- .../action/SelectSpeciesForBenthosBatchAction.java | 2 +- ...SpeciesForIndividualObservationBatchAction.java | 2 +- .../action/SelectSpeciesForSpeciesBatchAction.java | 2 +- .../tutti/ui/swing/content/home/SelectCruiseUI.css | 14 +- .../ui/swing/content/home/SelectCruiseUI.jaxx | 1 + .../content/protocol/EditProtocolUIHandler.java | 5 +- .../content/protocol/EditProtocolUIModel.java | 10 +- .../ManageTemporaryReferentialUIHandler.java | 17 +- .../GearCaracteristicListCellRenderer.java | 2 +- .../resources/i18n/tutti-ui-swing_en_GB.properties | 10 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 10 + 222 files changed, 11259 insertions(+), 5499 deletions(-) diff --cc tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index 4e8f7df,d689d30..959f61b --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@@ -122,21 -152,10 +152,21 @@@ public class Speciess extends AbstractS return Multimaps.index(list, GET_SURVEY_CODE); } - public static Set<String> toTaxonIds(List<Species> list) { + public static Set<String> toReferenceTaxonIds(List<Species> list) { Set<String> result = list == null ? Collections.<String>emptySet() : - Sets.newHashSet(Lists.transform(list, GET_TAXON_ID)); + Sets.newHashSet(Lists.transform(list, GET_REFERECE_TAXON_ID)); return result; } -} + + public static String getSurveyCodeOrRefTaxCode(Species species) { + String code = species.getSurveyCode(); + + if (code == null) { + + // use refTaxCode + code = species.getRefTaxCode(); + } + return code; + } +} //Speciess diff --cc tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index 573b92b,2fce70a..69e5e3b --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@@ -1,28 -1,5 +1,28 @@@ +### +# #%L +# Tutti :: UI +# $Id:$ +# $HeadURL:$ +# %% +# Copyright (C) 2012 - 2015 Ifremer +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/gpl-3.0.html>. +# #L% +### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo - #Thu Jan 29 11:48:31 CET 2015 + #Mon Feb 16 09:45:58 CET 2015 \ "tutti.editProtocol.action.addCaracteristicMapping.help"\ = tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions diff --cc tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index 8b086b2,01cd2e9..62f9d4b --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@@ -722,12 -722,12 +723,16 @@@ public class TuttiUIContext extends Abs return serviceContext.getService(CatchesPdfExportService.class); } + public ToConfirmReportService getToConfirmReportService() { + return serviceContext.getService(ToConfirmReportService.class); + } + - public TuttiExportService getTuttiExportService() { - return serviceContext.getService(TuttiExportService.class); + public GenericFormatExportService getGenericFormatExportService() { + return serviceContext.getService(GenericFormatExportService.class); + } + + public GenericFormatImportService getGenericFormatImportService() { + return serviceContext.getService(GenericFormatImportService.class); } public CatchesSumatraExportService getCatchesSumatraExportService() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm