Compare commits

..

1911 Commits

Author SHA1 Message Date
Sofia Papacharalampous 8340b32559 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-23 18:01:16 +03:00
Sofia Papacharalampous c9b0938c52 ui changes on editors with new-state 2024-05-23 18:01:05 +03:00
Efstratios Giannopoulos 16503002dd bug fixes 2024-05-23 17:51:53 +03:00
Sofia Papacharalampous ab4631526b dashboard recent-activity bug fix 2024-05-23 17:32:44 +03:00
Sofia Papacharalampous 1941500034 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-23 17:25:06 +03:00
Sofia Papacharalampous 4a44e9a7de dashboard recent-activity
*added other types
2024-05-23 17:24:52 +03:00
Efstratios Giannopoulos 2680cf1ecf bug fixes 2024-05-23 17:17:42 +03:00
Sofia Papacharalampous ada249eb61 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-23 16:59:08 +03:00
Sofia Papacharalampous aabbc77f4f fixed dashboard search 2024-05-23 16:58:54 +03:00
amentis 750f109b7d add dateValue to dmp blueprint value 2024-05-23 16:58:12 +03:00
Sofia Papacharalampous cd241ec922 bug fix 2024-05-23 16:16:04 +03:00
Sofia Papacharalampous 9fd8b680e4 bug fix on dashboard with keyword option 2024-05-23 15:53:21 +03:00
Sofia Papacharalampous 4aba8edf23 refactor latest-activity in progress
*added keyword info on url
2024-05-23 15:45:49 +03:00
Sofia Papacharalampous b36622334a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-23 15:17:51 +03:00
Sofia Papacharalampous 0ed00a9dd8 refactor latest-activity in progress
*added pagination info on url
2024-05-23 15:15:46 +03:00
Efstratios Giannopoulos 27d899dec2 unlink merge fixes 2024-05-23 15:10:02 +03:00
Efstratios Giannopoulos 9e1cf8f642 unlink merge fixes 2024-05-23 15:00:11 +03:00
Sofia Papacharalampous 86e665452d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-23 13:17:16 +03:00
Sofia Papacharalampous 5a57313c0d refactor latest-activity in progress
*added new items instead of replacing the whole listing
2024-05-23 13:17:03 +03:00
amentis 62120517b1 disabled drag contacts and disable dmp user fields when canEdit is false 2024-05-23 11:12:30 +03:00
Sofia Papacharalampous 34f471fb30 styling fixes 2024-05-23 10:52:13 +03:00
Efstratios Giannopoulos 4a5735c8ba add publication_date 2024-05-22 18:26:40 +03:00
Thomas Georgios Giannos 078df3ba67 Added endpoint summaries for Swagger ui 2024-05-22 17:57:53 +03:00
amentis c3032277d9 core update 2024-05-22 17:47:02 +03:00
amentis e4c4c1811d Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-05-22 17:45:39 +03:00
amentis b9b3fb3e78 rename User to Viewer 2024-05-22 17:45:01 +03:00
Sofia Papacharalampous 334e8e182e Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-22 16:58:21 +03:00
Sofia Papacharalampous 6a11832e2b toc auto-expand bug fix on description editor 2024-05-22 16:58:06 +03:00
Efstratios Giannopoulos 215eb25015 fix prefiling 2024-05-22 16:42:09 +03:00
Sofia Papacharalampous a5bc78f91d ui bug fix 2024-05-22 16:33:08 +03:00
Sofia Papacharalampous 12b44934fd Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-22 16:21:28 +03:00
Sofia Papacharalampous 365de9fe5c fix default tenant locale autocomplete fields 2024-05-22 16:21:13 +03:00
amentis d50b6b307a fix dmp clone, new version from dashboard 2024-05-22 15:31:40 +03:00
Thomas Georgios Giannos 757eab2069 Adding swagger groups to segregate the public API docs from the authenticated one. Exposing only dmp and description endpoints. 2024-05-22 15:25:04 +03:00
amentis 6bccc2e980 description template editor dirty field after save bug dix 2024-05-22 15:02:49 +03:00
amentis 8ceca0a98f description copy fix 2024-05-22 13:53:15 +03:00
Sofia Papacharalampous 435efb3330 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-22 13:44:24 +03:00
Sofia Papacharalampous 891d01796b redirect to listing on new-tenant save 2024-05-22 13:44:02 +03:00
Efstratios Giannopoulos f72a50f9af elastic dmp query support group ids 2024-05-22 13:25:38 +03:00
Sofia Papacharalampous bc6cd2e1ca minor ui change 2024-05-22 13:17:39 +03:00
amentis 951d424cd7 description overview error language fix 2024-05-22 13:03:08 +03:00
Sofia Papacharalampous 9e18aea655 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-22 12:39:35 +03:00
Sofia Papacharalampous 158a3356a4 truncate option-text on autocomplete 2024-05-22 12:39:14 +03:00
Thomas Georgios Giannos 1943cd1d67 Docs updates 2024-05-22 12:35:24 +03:00
amentis b2771df05f inport json dmp with common models 2024-05-22 12:33:44 +03:00
Thomas Georgios Giannos aac74142a8 Fixing swagger config issues 2024-05-22 12:05:01 +03:00
Efstratios Giannopoulos b4857b403e Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-21 18:10:37 +03:00
Efstratios Giannopoulos 0a4cef782e tags field changes 2024-05-21 18:08:27 +03:00
Sofia Papacharalampous 7d43505107 added analytics service (in progress).2 2024-05-21 18:05:40 +03:00
Sofia Papacharalampous d63e87c9d6 added analytics service (in progress) 2024-05-21 18:04:57 +03:00
Sofia Papacharalampous e4786ed5f5 add author shadow when mouseover on description and dmp overview overview 2024-05-21 17:10:36 +03:00
Sofia Papacharalampous b2355566e5 ui fixes 2024-05-21 16:15:16 +03:00
Sofia Papacharalampous f9ce641b2b minor ui change 2024-05-21 16:00:52 +03:00
Sofia Papacharalampous 0d4f3f8720 clean up font-family 2024-05-21 15:49:20 +03:00
Sofia Papacharalampous 1e40eeb768 reverse 7f70854485 2024-05-21 12:33:56 +03:00
Sofia Papacharalampous e1caa622e8 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-21 12:31:27 +03:00
Sofia Papacharalampous cbe9cd255b minor ui fix 2024-05-21 12:30:34 +03:00
Efstratios Giannopoulos dadef8297c deposit auth changes 2024-05-21 12:10:08 +03:00
Sofia Papacharalampous 04b3016fa8 minor ui fix 2024-05-21 11:48:22 +03:00
Sofia Papacharalampous 060bfd8871 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-21 11:27:58 +03:00
Sofia Papacharalampous 39e68bba77 fixed next and previous-step buttons for conditional questions on description editor 2024-05-21 11:27:44 +03:00
amentis 91556cb6b6 dmp user field filter sections changes 2024-05-21 11:22:33 +03:00
amentis 6facf9f7d4 prefilling source ui bug fix 2024-05-20 18:13:22 +03:00
Sofia Papacharalampous 49df7d7fa1 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-20 17:55:51 +03:00
Sofia Papacharalampous df0f5c7a87 fixed scrolling conflict on description editor 2024-05-20 17:55:33 +03:00
Thomas Georgios Giannos 5813699a83 Small fixes, adding introductory docs for blueprints, templates and references 2024-05-20 17:44:55 +03:00
amentis e36ceb4ed9 add tenant code validator pattern 2024-05-20 17:24:59 +03:00
Sofia Papacharalampous 9e7559b078 minor ui fixes 2024-05-20 17:00:40 +03:00
amentis a05885c8a9 export and import xml description tags 2024-05-20 15:47:39 +03:00
Sofia Papacharalampous 1b47a9d6ec Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-20 15:04:04 +03:00
Sofia Papacharalampous 7f70854485 removed api hint 2024-05-20 15:03:37 +03:00
amentis 9bc5ff800f Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-05-20 15:03:06 +03:00
amentis 86304d76cb change reviewer to run DmpUserCommonModelBuilder 2024-05-20 15:02:42 +03:00
Sofia Papacharalampous 9437a5f3e2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-20 14:46:36 +03:00
Sofia Papacharalampous 49eb10aaa8 change on description-template-editor ui for easier reordering 2024-05-20 14:46:20 +03:00
amentis ea88efd125 rename DmpUserRole user to reviewer and filter plan sections 2024-05-20 14:25:44 +03:00
Alexandros Mandilaras b94bb5ca43 give monitor cluster priveledge to the elastic role for the deploment 2024-05-20 13:57:50 +03:00
Sofia Papacharalampous b094261136 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-20 13:22:51 +03:00
Sofia Papacharalampous f587f34eda replaced select input (timezone and culture) with single-autoselect on default-tenant-locale 2024-05-20 13:22:34 +03:00
amentis 6023f6fa31 add import description, fix import/export models 2024-05-20 13:20:45 +03:00
Alexandros Mandilaras 6b69078007 comment plugin mounts on deployment 2024-05-20 12:23:42 +03:00
Efstratios Giannopoulos e0c501cd17 repository login changes 2024-05-20 12:20:21 +03:00
Sofia Papacharalampous 1f86b2ef9f remove edit option from finalized description-templates on listing 2024-05-20 11:50:41 +03:00
Sofia Papacharalampous a6b04e9ce5 unsubscribre from "read all" event 2024-05-20 11:40:06 +03:00
Sofia Papacharalampous 05a90d6fbd update status on in-app-notificatons-dialog "read all" 2024-05-20 11:37:42 +03:00
Sofia Papacharalampous 211e2044dd minor styling fix 2024-05-20 11:05:15 +03:00
Sofia Papacharalampous 42107d9820 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-20 11:01:13 +03:00
Sofia Papacharalampous 79005d70c4 bug fix on chapter reordering of description-template-editor toc 2024-05-20 11:00:57 +03:00
amentis 55669af70a tenant description add required symbol 2024-05-20 10:40:56 +03:00
Sofia Papacharalampous a13d1a4000 description template toc reordering fixes 2024-05-17 17:46:08 +03:00
Sofia Papacharalampous 9dc8ed5a53 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-17 15:27:05 +03:00
Sofia Papacharalampous 0860781cdf clean up TOCENTRY_ID_PREFIX 2024-05-17 15:26:51 +03:00
amentis ce8f5d3af5 implement import dmp with xml format (descriptions not implemented yet) 2024-05-17 15:15:08 +03:00
Sofia Papacharalampous 232915e155 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-17 14:33:54 +03:00
Sofia Papacharalampous 8f36b6bbe0 fixed auto-expand of table of contents on scroll 2024-05-17 14:33:27 +03:00
Thomas Georgios Giannos ef6e7441c3 Added missing parts on description docs, more fixes 2024-05-17 13:40:42 +03:00
Sofia Papacharalampous 3323e40aea Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-17 12:47:37 +03:00
Sofia Papacharalampous 430004e931 fixed multiple and single autocomplete behavior
-removed unnecessary hidePlaceholder flag
-fixed single-autocomplete clear value
-fixed placeholder and label
2024-05-17 12:47:23 +03:00
Efstratios Giannopoulos 5b44fa183a Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-17 12:46:36 +03:00
Efstratios Giannopoulos 8a0d02d02e Remove not visible fields on persist 2024-05-17 12:46:20 +03:00
Sofia Papacharalampous 749562ca72 ui change 2024-05-17 12:43:14 +03:00
Thomas Georgios Giannos 2d0fa5362d Fixed plan overview link on description editor banner 2024-05-17 12:15:23 +03:00
Efstratios Giannopoulos 125fd2c994 tenant code validation 2024-05-17 12:02:00 +03:00
Efstratios Giannopoulos 30e5ed504a fix tenant select 2024-05-17 11:27:33 +03:00
Sofia Papacharalampous a9468abe61 changed description template scroll behavior after deleting a field 2024-05-17 09:44:01 +03:00
amentis f928527b26 language fixes 2024-05-16 17:39:40 +03:00
Alexandros Mandilaras 9d737a8fe0 more deployment fixes. finalize keycloak auto initialization 2024-05-16 17:32:46 +03:00
Thomas Georgios Giannos 560ba3a11a More fixes on plans and descriptions docs 2024-05-16 17:03:20 +03:00
Efstratios Giannopoulos 7790d19818 visibility rule fixes 2024-05-16 16:40:51 +03:00
Sofia Papacharalampous 48eb38a156 ui fix 2024-05-16 16:35:24 +03:00
amentis 3dbfa58e5e add project fields for DepositRequest 2024-05-16 16:15:14 +03:00
Alexandros Mandilaras 08161f97e8 add new confs to deployment 2024-05-16 16:14:26 +03:00
amentis e09f34e391 add project fields for DepositRequest 2024-05-16 16:11:36 +03:00
Sofia Papacharalampous 105d86cd98 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-16 15:35:30 +03:00
Sofia Papacharalampous 2a126cd40f bug fix 2024-05-16 15:35:04 +03:00
amentis 6fe78b4059 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-16 15:29:14 +03:00
amentis 133562a061 fix bugg 2024-05-16 15:29:00 +03:00
Sofia Papacharalampous 346ef4476a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-16 14:47:20 +03:00
Sofia Papacharalampous 7ca7ba7ec7 styling changes 2024-05-16 14:47:02 +03:00
amentis 7646fd8dae remove valid url backend validator 2024-05-16 14:46:37 +03:00
amentis 066d8c8d24 fix new version flow, sort other dmp versions 2024-05-16 14:32:56 +03:00
Thomas Georgios Giannos 0945b8300e Fixes on existing plans docs 2024-05-16 14:27:55 +03:00
Sofia Papacharalampous 6dbc5a8189 ui fix on description template editor 2024-05-16 14:21:41 +03:00
Efstratios Giannopoulos 36a8936a95 fix refresh token fail 2024-05-16 13:54:01 +03:00
Alexandros Mandilaras 9441f0f326 deploy script and elastic script changes 2024-05-16 13:33:48 +03:00
Sofia Papacharalampous baa49851b4 styling fixes on single and multiple autocomplete 2024-05-16 13:29:14 +03:00
Sofia Papacharalampous c02bfe668d remove "load less" extra button with wrong event 2024-05-16 12:14:52 +03:00
amentis 31b33754c5 remove isUrlRequired from form field component 2024-05-16 11:46:57 +03:00
Diamantis Tziotzios 33edaa217f cleanup 2024-05-16 11:39:39 +03:00
Diamantis Tziotzios 2cdbfb0445 notification template urls fix 2024-05-16 11:13:36 +03:00
Efstratios Giannopoulos 9bc6a2e8d1 bug fix 2024-05-16 10:39:08 +03:00
Alexandros Mandilaras c7661e8a2c Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-05-16 09:59:48 +03:00
Alexandros Mandilaras d34d186792 update zenodo and docx on deployment 2024-05-16 09:59:09 +03:00
Efstratios Giannopoulos 6529e801c2 builder changes 2024-05-16 09:55:55 +03:00
Diamantis Tziotzios 41de3292af added an all option for section field of plan invite 2024-05-15 20:29:21 +03:00
amentis 6bdc6d5c09 fix dmp version flow 2024-05-15 18:31:30 +03:00
Efstratios Giannopoulos 811a1dde01 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-15 17:56:21 +03:00
Efstratios Giannopoulos 1fd4314b56 no message 2024-05-15 17:56:03 +03:00
Sofia Papacharalampous 0cbdc1bb52 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-15 17:22:56 +03:00
Sofia Papacharalampous 1df3e3cd2b added toggle discriptions mechanism on dmp-clone and dmp-new-version dialogs 2024-05-15 17:22:37 +03:00
Efstratios Giannopoulos d7759fe4bd add maxInMemorySizeInBytes 2024-05-15 16:40:49 +03:00
amentis 09067c11dd add url validation in free text 2024-05-15 16:29:11 +03:00
Sofia Papacharalampous 16fcd26c04 styling fixes 2024-05-15 16:20:20 +03:00
Sofia Papacharalampous d16caf6b9f styling fixes 2024-05-15 15:16:35 +03:00
Sofia Papacharalampous 54c7a8f43f styling fixes 2024-05-15 14:51:37 +03:00
Sofia Papacharalampous d400c0e71d styling changes 2024-05-15 14:35:40 +03:00
Sofia Papacharalampous 5748876312 fixed bug on description template editor when reordering the inputs 2024-05-15 14:14:04 +03:00
Sofia Papacharalampous 02d4a1e9d0 fixed bug on description template editor when reordering the inputs 2024-05-15 14:03:37 +03:00
Sofia Papacharalampous c4a757ba36 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-15 13:56:35 +03:00
Sofia Papacharalampous f82569f5ee styling changes 2024-05-15 13:56:18 +03:00
Efstratios Giannopoulos f2ad93603c dmp clone fix 2024-05-15 13:49:59 +03:00
Thomas Georgios Giannos 1ea7f03afd Adding short descriptions displaying on doc card links, small fixes 2024-05-15 13:26:07 +03:00
amentis 87d6158647 user profile reload page after save 2024-05-15 13:22:17 +03:00
Sofia Papacharalampous 64151ea05b styling changes 2024-05-15 13:05:20 +03:00
amentis bd86747278 disable add description in dmp editor when description templates is not selected 2024-05-15 12:56:18 +03:00
amentis e5abbe9aae disable add description in dmp editor when description templates is not selected 2024-05-15 12:55:47 +03:00
amentis 91bef6f7f0 description ui fixes with description contributor role 2024-05-15 11:28:27 +03:00
amentis 3cbbc38370 plan overview show user roles with section 2024-05-15 10:46:50 +03:00
Thomas Georgios Giannos bb6f57d7f8 Finished first pass of supplementary services docs 2024-05-15 10:12:22 +03:00
Sofia Papacharalampous 449d1d6229 minor ui change 2024-05-14 17:45:00 +03:00
Sofia Papacharalampous 1c65bd8dbe styling changes 2024-05-14 17:32:21 +03:00
Sofia Papacharalampous 19fb21b490 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-14 17:23:52 +03:00
Sofia Papacharalampous 039ce68221 styling changes 2024-05-14 17:23:38 +03:00
Alexandros Mandilaras 2fbd41c9d8 Deployment optimizations and fixes 2024-05-14 16:37:57 +03:00
Sofia Papacharalampous 38abef185c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-14 16:04:38 +03:00
Sofia Papacharalampous 7d0a733de6 fixed bug on description toc error indicator 2024-05-14 16:04:23 +03:00
Thomas Georgios Giannos e01fc75a02 Added basic docs on services 2024-05-14 16:00:25 +03:00
Sofia Papacharalampous 0955c52da9 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-14 15:38:51 +03:00
Sofia Papacharalampous c23868af0f fixed editable contacts on finalized dmp 2024-05-14 15:38:12 +03:00
amentis cbbf70d3f6 add dmp delete dialog where dmp has descriptions 2024-05-14 15:13:00 +03:00
Alexandros Mandilaras 9cdbf46ba7 fix user for keycloak 2024-05-14 15:03:55 +03:00
Efstratios Giannopoulos 36e15fe2e5 bug fix 2024-05-14 15:02:51 +03:00
Efstratios Giannopoulos a243427b4b config changes 2024-05-14 14:57:20 +03:00
Efstratios Giannopoulos bd06df58c5 fix notification 2024-05-14 14:36:45 +03:00
Sofia Papacharalampous ee611ed7e0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-14 14:32:50 +03:00
Sofia Papacharalampous 7cb6651401 fix description-template toc 2024-05-14 14:32:35 +03:00
Sofia Papacharalampous 6de01df4ca reverse commit 2024-05-14 13:50:33 +03:00
amentis 37a5c49cc8 fix update other plan version status while deleting one plan 2024-05-14 13:39:57 +03:00
Sofia Papacharalampous fb0a8b07be Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-14 12:53:00 +03:00
Sofia Papacharalampous 5256d30f32 fix on description-template toc 2024-05-14 12:52:42 +03:00
Thomas Georgios Giannos d62b4f839b Docs homepage fix, small layout adjustments, added services root docs 2024-05-14 12:50:33 +03:00
Alexandros Mandilaras 52129b7877 config updates for dpeloyment 2024-05-14 12:00:49 +03:00
amentis 9f9e6f6db9 external identifier fix for description finalization 2024-05-14 11:49:43 +03:00
Thomas Georgios Giannos b14e20edff Allowing more levels of headings contributing to tables of contents, by default is up to 2 levels 2024-05-14 10:41:37 +03:00
Alexandros Mandilaras d94dfb4cb0 deploy script fix 2024-05-14 09:49:56 +03:00
amentis 7d273458ab description template rich text editors disable case 2024-05-13 18:03:20 +03:00
Alexandros Mandilaras ef28f4753b remove unwanted files 2024-05-13 17:38:36 +03:00
Sofia Papacharalampous f43073f8ef bug fix on dmp-editor save 2024-05-13 17:31:49 +03:00
Sofia Papacharalampous ecc728b24c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 17:28:26 +03:00
Alexandros Mandilaras a62df40c16 more deployment updates 2024-05-13 17:24:08 +03:00
Sofia Papacharalampous 8943dfff87 bug fix on description-editor save 2024-05-13 17:21:58 +03:00
Thomas Georgios Giannos dc0b8ff85c Added index pages, giving the option to add documentation on root paths, like in the administration section 2024-05-13 16:59:11 +03:00
amentis 0a93300624 minor ui change 2024-05-13 16:34:16 +03:00
Alexandros Mandilaras 1456a0d333 Deployment updates 2024-05-13 16:30:25 +03:00
Efstratios Giannopoulos 6b6fb88d75 metrics fixes 2024-05-13 16:14:21 +03:00
Sofia Papacharalampous 4408e7afda minor ui change 2024-05-13 16:09:42 +03:00
Sofia Papacharalampous 76b34721cc Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 16:06:36 +03:00
Sofia Papacharalampous 40396f5937 styling changes on add-account dialog 2024-05-13 16:06:27 +03:00
amentis c73e8b06f5 user culture display fix 2024-05-13 15:28:23 +03:00
Sofia Papacharalampous 953f59aeb3 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 15:24:57 +03:00
Sofia Papacharalampous 81ddaeaed6 styling changes 2024-05-13 15:24:08 +03:00
amentis 8bf2e8a4fd add callback error in user profile save 2024-05-13 15:07:58 +03:00
Thomas Georgios Giannos 0e6c21e9bc Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 15:00:36 +03:00
Thomas Georgios Giannos e8d6d474ac Added docs on conditional questions 2024-05-13 15:00:27 +03:00
Efstratios Giannopoulos f9bdc65405 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 14:59:06 +03:00
Efstratios Giannopoulos a1cb8efe1d migration fixes 2024-05-13 14:58:32 +03:00
Sofia Papacharalampous eff8d887ae styling fixes on dmp blueprint editor 2024-05-13 14:57:52 +03:00
Efstratios Giannopoulos 6583c6d07a bug fix 2024-05-13 14:57:08 +03:00
amentis f4b9ef1f9f add specific reference types ids to config.json 2024-05-13 14:47:24 +03:00
amentis c40a356058 user profile ui changes 2024-05-13 14:43:44 +03:00
Efstratios Giannopoulos 7947df3a3a notification fixes 2024-05-13 14:40:19 +03:00
Efstratios Giannopoulos 035185d7fb Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 14:20:59 +03:00
Efstratios Giannopoulos 5f9732844d fix notification 2024-05-13 14:20:00 +03:00
Sofia Papacharalampous c2f34f0299 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 14:19:11 +03:00
Sofia Papacharalampous af502ea4be fix stepper labels of description-template-editor 2024-05-13 14:19:02 +03:00
Efstratios Giannopoulos b6d6385dc0 no message 2024-05-13 14:06:05 +03:00
Efstratios Giannopoulos 9ffa86f3cb add on error callback 2024-05-13 14:04:24 +03:00
Sofia Papacharalampous b0a156ce17 fixed bug 2024-05-13 13:59:57 +03:00
Sofia Papacharalampous 66f2637884 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 13:52:00 +03:00
Sofia Papacharalampous 3e10d92bec styling fixes on description table-view field 2024-05-13 13:51:53 +03:00
Sofia Papacharalampous 26b4e895e1 styling fixes on form-fieldset-editor-dialog 2024-05-13 13:26:51 +03:00
Sofia Papacharalampous 18c4a1d3c2 styling fixes on faq dialog 2024-05-13 13:00:44 +03:00
Thomas Georgios Giannos 146ae4dcc1 Typo fix 2024-05-13 12:26:39 +03:00
Thomas Georgios Giannos 307fbd1174 Added docs for prefilling configurations 2024-05-13 12:23:22 +03:00
Sofia Papacharalampous 0f1b6ea4fb pre select all descriptions on dmp-clone and dmp-new-versions 2024-05-13 11:53:58 +03:00
Sofia Papacharalampous a8a1e77138 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-13 11:36:12 +03:00
Sofia Papacharalampous b5b8829f81 fixed navigation form breadcrumbs 2024-05-13 11:35:48 +03:00
Efstratios Giannopoulos 4c9f331d04 bug fix 2024-05-13 10:53:49 +03:00
amentis 63c43fa422 plan invitation existing user notification preference change 2024-05-10 18:27:25 +03:00
amentis 830e06df31 user profile ui changes 2024-05-10 18:19:28 +03:00
Sofia Papacharalampous f383ef520f fixed validation error message 2024-05-10 17:56:02 +03:00
Sofia Papacharalampous 8e899db021 order fields and sections by ordinal on dmp-editor blueprint step 2024-05-10 17:02:30 +03:00
Sofia Papacharalampous 2b1bc2a5ce Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-10 15:19:23 +03:00
Sofia Papacharalampous eaff979b4b changed description template stepper labels 2024-05-10 15:17:29 +03:00
amentis 402897fabc switch plan versions in overview 2024-05-10 14:57:21 +03:00
Thomas Georgios Giannos d024212985 Added docs for tenant configurtions, small fix on en.json about app colors 2024-05-10 14:39:25 +03:00
Efstratios Giannopoulos 6ed11c2cdd logging changes 2024-05-10 14:28:08 +03:00
Efstratios Giannopoulos 5c422fb847 http logger changes 2024-05-10 13:20:49 +03:00
Sofia Papacharalampous 07ef69ac2d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-10 12:46:17 +03:00
Sofia Papacharalampous cadb0fedb4 sumarize description text on listings 2024-05-10 12:46:06 +03:00
amentis be6af23940 description template type editor always navigate to listing after save 2024-05-10 12:18:32 +03:00
Sofia Papacharalampous eda508a65c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-10 11:57:41 +03:00
Sofia Papacharalampous c2c493d896 fixed error indication for fields under nested sections 2024-05-10 11:57:07 +03:00
Thomas Georgios Giannos bfaa8f8a53 Improving tenants doc page 2024-05-10 11:49:36 +03:00
amentis 6767226b46 add status filter on description template type autocomplete lookup 2024-05-10 11:24:03 +03:00
amentis ab1e025a75 adding docs for plans and descriptions (not finished) 2024-05-09 18:09:36 +03:00
Thomas Georgios Giannos 0bb5d236dd Adding docs for prefilling configurations (not complete) and template types 2024-05-09 18:02:15 +03:00
Alexandros Mandilaras f39ce3f93c deployment update 2024-05-09 17:55:24 +03:00
Sofia Papacharalampous 1f271c9428 fixed multiplicity range issue on dmp blueprint editor 2024-05-09 16:13:43 +03:00
Sofia Papacharalampous d2cb6342ef fixed disabled state after finalizing on rich text editor 2024-05-09 15:53:27 +03:00
Sofia Papacharalampous 716a930c02 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-09 15:09:47 +03:00
Sofia Papacharalampous d07bc41c75 fixed scroll after save on description-template-editor 2024-05-09 15:09:28 +03:00
Efstratios Giannopoulos 5243de1e0b Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-09 15:01:24 +03:00
Efstratios Giannopoulos a6f43b4482 bug fix 2024-05-09 14:27:54 +03:00
Sofia Papacharalampous cae551ecc3 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-09 14:26:49 +03:00
Sofia Papacharalampous fa970bc0d8 styling changes on description overview authors 2024-05-09 14:26:33 +03:00
Sofia Papacharalampous 30a50db52e added role information for description-overview authors 2024-05-09 14:13:05 +03:00
Efstratios Giannopoulos 4b32d5f548 bug fixes 2024-05-09 12:38:55 +03:00
amentis 40df26c560 description template build default value fix issue 2024-05-09 11:09:51 +03:00
amentis 0dc9a5e856 dmp ui contact ui fix 2024-05-09 10:52:36 +03:00
Diamantis Tziotzios 33c7676464 small fixes 2024-05-09 10:47:34 +03:00
Efstratios Giannopoulos 31b4e8fd39 maintenance changes 2024-05-09 09:50:34 +03:00
Efstratios Giannopoulos accb6fc772 add annotation events 2024-05-08 17:55:37 +03:00
Sofia Papacharalampous ebb35ad41c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 17:46:06 +03:00
Sofia Papacharalampous c263ab1564 removed breadcrumbs from dmp and description editor 2024-05-08 17:45:50 +03:00
Sofia Papacharalampous 4c0a09c707 changed save functionality on dmp-editor 2024-05-08 17:25:54 +03:00
Sofia Papacharalampous ca4efbeb49 fixed description progress-bar 2024-05-08 17:25:20 +03:00
Efstratios Giannopoulos ef3d54d6a3 tag label change size 2024-05-08 17:20:35 +03:00
Sofia Papacharalampous 7e58bfdc5f changed tab-titles 2024-05-08 16:55:08 +03:00
Sofia Papacharalampous 472eacc50a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 16:34:44 +03:00
Efstratios Giannopoulos e4ac550684 package rename 2024-05-08 16:14:15 +03:00
Efstratios Giannopoulos fe65ddab39 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 16:08:34 +03:00
Efstratios Giannopoulos 0fa3b1ef72 migration fixes 2024-05-08 16:08:19 +03:00
Sofia Papacharalampous 1a64ca7409 clean up 2024-05-08 16:07:41 +03:00
Sofia Papacharalampous 556e593cbe Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 15:01:46 +03:00
Sofia Papacharalampous bded2d4d23 fix on breadcrumbs text 2024-05-08 15:01:09 +03:00
amentis b82b48de25 description validate boolean value fix 2024-05-08 14:39:35 +03:00
Sofia Papacharalampous 12c990de7f changed tab name on plan-blueprint and description-template editors 2024-05-08 14:38:40 +03:00
Sofia Papacharalampous fc6e12fb70 added descriptin breadcrumbs 2024-05-08 14:19:59 +03:00
Sofia Papacharalampous 331e843cc1 fixed validation issue of radio box 2024-05-08 14:18:34 +03:00
Sofia Papacharalampous 49dd156e20 fixed validation issue of boolean decision 2024-05-08 14:11:09 +03:00
Sofia Papacharalampous ab5fc150a4 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 12:47:00 +03:00
Sofia Papacharalampous 768fca8608 added dmp editor breadcrumbs 2024-05-08 12:46:48 +03:00
amentis 12b49fe68f check available prefilling sources with blueprint prefilling sources 2024-05-08 12:26:55 +03:00
Sofia Papacharalampous 908a284d57 fixes on navigation text 2024-05-08 12:22:14 +03:00
Sofia Papacharalampous d57fed927a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 12:06:25 +03:00
Efstratios Giannopoulos a7efe9c80e no message 2024-05-08 12:06:02 +03:00
Sofia Papacharalampous a88001bc72 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-08 11:42:55 +03:00
Sofia Papacharalampous 5b93fb521c added breadcrumbs on dmp listing and editor 2024-05-08 11:42:38 +03:00
Efstratios Giannopoulos bf764018b3 add no tracking find 2024-05-08 11:41:17 +03:00
Efstratios Giannopoulos 03c5c7b8c2 add disable tracking to services 2024-05-08 11:26:50 +03:00
amentis 243ea14ec3 update currencies name 2024-05-08 10:48:50 +03:00
Efstratios Giannopoulos 3c3a83bb58 migration changes 2024-05-08 10:25:44 +03:00
Efstratios Giannopoulos 62db01e4cf update pom 2024-05-03 18:33:26 +03:00
Efstratios Giannopoulos b734606141 add no tracking 2024-05-03 18:33:03 +03:00
Efstratios Giannopoulos 86aff14a64 refactor namespaces 2024-05-03 16:41:08 +03:00
Efstratios Giannopoulos 5a181fe786 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-05-03 15:19:01 +03:00
Efstratios Giannopoulos c02d108331 ui fix 2024-05-03 15:18:34 +03:00
Thomas Georgios Giannos e5a6dee348 Added docs for descryption templates, improved docs structure on some cases 2024-05-03 15:13:53 +03:00
Efstratios Giannopoulos 08d29aac5b fix elastic recent search 2024-05-03 15:00:44 +03:00
Efstratios Giannopoulos 7158fdb6c3 update common model 2024-05-03 11:50:06 +03:00
Efstratios Giannopoulos b7bd6dc449 Remove description template numbering 2024-05-02 18:13:35 +03:00
Efstratios Giannopoulos 8efd17a4a1 Remove description template numbering 2024-05-02 18:10:41 +03:00
Efstratios Giannopoulos 6928b436ee remove section default visibility 2024-05-02 17:52:10 +03:00
Efstratios Giannopoulos 8426d49157 bug fixes 2024-05-02 17:37:17 +03:00
Efstratios Giannopoulos a3fba92999 remove multi value support from rules and default values 2024-05-02 17:13:59 +03:00
Efstratios Giannopoulos 528fbcd758 remove unused rules 2024-05-02 16:29:50 +03:00
Efstratios Giannopoulos c7c7255e19 no message 2024-05-02 16:04:32 +03:00
Efstratios Giannopoulos dd9461bc7a default value implementation 2024-05-02 15:57:19 +03:00
Efstratios Giannopoulos 6eb01fbd1c revert tenant filter disable 2024-05-02 12:38:36 +03:00
Efstratios Giannopoulos 2d2750c44c add boolean value to description 2024-05-02 10:46:36 +03:00
Efstratios Giannopoulos 5f796edc62 table of contents visibility fix 2024-05-02 10:43:34 +03:00
amentis dcf2f89b22 remove default checked description for dmp clone, new version dialogs 2024-05-01 18:10:49 +03:00
Sofia Papacharalampous 53dc4c179f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-01 17:23:09 +03:00
Sofia Papacharalampous 0d0e23d240 fixed description template type editor on finalized status 2024-05-01 17:22:57 +03:00
amentis ac3e1cfcfe blueprint ui changes 2024-05-01 17:22:01 +03:00
Sofia Papacharalampous 3af2642583 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-01 16:57:37 +03:00
Sofia Papacharalampous 5f36ebe3ca fixed validation issue on rich text editor 2024-05-01 16:57:21 +03:00
amentis e470cf5807 rename description template field type label to placeholder 2024-05-01 16:44:54 +03:00
amentis 95c075cd24 update references types with first() logic and prefilling sources changes 2024-05-01 16:31:40 +03:00
Efstratios Giannopoulos adf37777d9 language fixes 2024-05-01 15:45:47 +03:00
Sofia Papacharalampous 803e63dd41 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-01 15:00:37 +03:00
Sofia Papacharalampous f8592ef945 styling changes 2024-05-01 15:00:22 +03:00
Efstratios Giannopoulos 1888711fe9 tenant fixes 2024-05-01 14:57:49 +03:00
Sofia Papacharalampous d955f999ff notification dialog styling changes 2024-05-01 14:48:26 +03:00
Sofia Papacharalampous f6ea1e2b04 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-01 14:28:28 +03:00
Sofia Papacharalampous 2dc1f2b12c styling changes on description template editor numbering 2024-05-01 14:28:15 +03:00
amentis 3c72b741c5 remove descriptionTemplateNewVersion users required validator and default user logic 2024-05-01 13:53:22 +03:00
Efstratios Giannopoulos a591c66875 code styles 2024-05-01 13:47:23 +03:00
Efstratios Giannopoulos 1474eda8b9 external fetcher fixes add first logic 2024-05-01 13:46:57 +03:00
Efstratios Giannopoulos 81156955dc migration fix 2024-05-01 13:45:57 +03:00
Efstratios Giannopoulos fc9a4134e7 fix table view 2024-05-01 13:45:27 +03:00
Sofia Papacharalampous 5c4292d735 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-05-01 11:52:37 +03:00
Sofia Papacharalampous 17a431d97c fixed dmp blueprint editor on new version 2024-05-01 11:52:05 +03:00
amentis a50a1e8bc1 remove EXTERNAL_DATASETS enum field type value from UI 2024-05-01 11:32:55 +03:00
Efstratios Giannopoulos ac9a377eb4 update reference types 2024-04-30 18:08:06 +03:00
Efstratios Giannopoulos a3c92bb087 table view fixes 2024-04-30 17:53:00 +03:00
Sofia Papacharalampous e5af155b31 fixed single autocomplete panel behavior 2024-04-30 17:43:10 +03:00
Sofia Papacharalampous 49d8df1894 disable dmp blueprint form after finalized new version 2024-04-30 17:22:49 +03:00
amentis 115892875e ui can create new version if dmp version status is current 2024-04-30 16:06:06 +03:00
amentis 96894f4ca4 ui can create new version if dmp version status is current 2024-04-30 15:59:26 +03:00
amentis 67ed7db89d small fix 2024-04-30 15:24:33 +03:00
Sofia Papacharalampous 95e78705df Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-30 15:19:24 +03:00
Sofia Papacharalampous 97449226fe fixed dmp blueprint saving 2024-04-30 15:19:09 +03:00
amentis ea752d9cec prefilling sources update sql script 2024-04-30 15:12:53 +03:00
amentis e41c7f8abc prefill tags changes 2024-04-30 15:04:55 +03:00
Efstratios Giannopoulos 500503ad37 dmp authz changes 2024-04-30 14:55:53 +03:00
Sofia Papacharalampous 1a3aa18d35 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-30 14:26:19 +03:00
Sofia Papacharalampous efeea398da fixed toc drag and drop on description template type editor 2024-04-30 14:25:54 +03:00
Efstratios Giannopoulos da8efe5130 description authz changes 2024-04-30 14:06:24 +03:00
Sofia Papacharalampous 965af355d8 styling changes 2024-04-30 13:17:37 +03:00
Sofia Papacharalampous 555261dadf Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-30 13:06:45 +03:00
Sofia Papacharalampous 27291e24be styling changes 2024-04-30 13:06:21 +03:00
amentis a8500ebf69 description template save with close small fix 2024-04-30 13:03:23 +03:00
Sofia Papacharalampous f2cf61938d added finalize function for description template type 2024-04-30 13:00:53 +03:00
Efstratios Giannopoulos 7ed9a59595 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-30 12:54:39 +03:00
Efstratios Giannopoulos a8c1736e83 elastic fixes 2024-04-30 12:54:26 +03:00
amentis f0f4319721 insert manually reference changes 2024-04-30 12:39:01 +03:00
Sofia Papacharalampous 683552707f hide annotations for new descriptions and description template previews 2024-04-30 11:52:50 +03:00
Sofia Papacharalampous bb206125a6 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-30 11:06:45 +03:00
Sofia Papacharalampous 4fe02698b1 styling fixes 2024-04-30 11:06:31 +03:00
Efstratios Giannopoulos 33196e28cd fix description storage file 2024-04-30 11:01:39 +03:00
Efstratios Giannopoulos 787aa31d53 change queue interval 2024-04-30 10:21:57 +03:00
Sofia Papacharalampous d1492e0a93 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-29 18:32:34 +03:00
Sofia Papacharalampous 7022de0bc8 fixed multiple autocomplete panel behavior 2024-04-29 18:31:50 +03:00
Alexandros Mandilaras 3f69ab0fc0 finalize elasticsearch deployment. Update app configurations 2024-04-29 17:55:53 +03:00
Efstratios Giannopoulos e8f40b852a Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-29 17:43:00 +03:00
Efstratios Giannopoulos 418188546a export xml changes 2024-04-29 17:42:44 +03:00
amentis 7056678bbb description small fiexes 2024-04-29 17:25:59 +03:00
Efstratios Giannopoulos 85b2258e19 Description export 2024-04-29 17:08:24 +03:00
Sofia Papacharalampous 30d338bbbd used label as the title on dmp and description editor 2024-04-29 16:40:11 +03:00
Sofia Papacharalampous 8a16098fc1 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-29 15:18:59 +03:00
Sofia Papacharalampous 204d593363 styling fixes on reference component 2024-04-29 15:18:11 +03:00
Efstratios Giannopoulos 21457bd9b0 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-29 14:56:48 +03:00
Efstratios Giannopoulos e8be226a0b dmp export 2024-04-29 14:56:32 +03:00
amentis e871068443 new version small fix 2024-04-29 14:35:11 +03:00
Thomas Georgios Giannos ebbc92b908 Adding docs for field types and semantics, site name fix 2024-04-29 14:30:56 +03:00
Sofia Papacharalampous a0e5c3931f description editor styling change 2024-04-29 14:26:37 +03:00
Sofia Papacharalampous aa5235e950 clean up description editor progress bar 2024-04-29 14:24:12 +03:00
Sofia Papacharalampous b9f1805bb2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-29 13:42:08 +03:00
Sofia Papacharalampous 88ba79c406 clean up description editor progress bar 2024-04-29 13:41:01 +03:00
amentis bac8fa197e checkbox fix visible state 2024-04-29 13:39:50 +03:00
Sofia Papacharalampous 2180bebc7f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-29 13:26:54 +03:00
Sofia Papacharalampous 7e3cebd299 added description editor progress bar 2024-04-29 13:26:41 +03:00
amentis c396e6a305 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-29 11:48:58 +03:00
amentis 80e6ffb07a licences fix filter type 2024-04-29 11:48:02 +03:00
Sofia Papacharalampous e9e06fa51f description editor change > do not validate form on save 2024-04-29 11:46:16 +03:00
Sofia Papacharalampous 9bcc486c1c dmp progrss bar styling changes 2024-04-29 11:45:33 +03:00
Sofia Papacharalampous 0c54b11923 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-26 18:38:07 +03:00
Efstratios Giannopoulos f89074b695 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-26 18:25:27 +03:00
Efstratios Giannopoulos 0aae469583 remove Annotation Tenant Configuration 2024-04-26 18:25:09 +03:00
Sofia Papacharalampous 57cbc1d8e4 revert changes on "description editor > added option to skip form-refresh on save" 2024-04-26 18:21:55 +03:00
amentis 7bda4a6b22 clone add new to label 2024-04-26 18:11:46 +03:00
Efstratios Giannopoulos e073fc718c Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-26 18:10:31 +03:00
Efstratios Giannopoulos b267f2f30c UserNotificationPreference changes 2024-04-26 18:10:10 +03:00
amentis 429d4a35ea add sActive description tags filter and fix dmp clone 2024-04-26 18:03:34 +03:00
Sofia Papacharalampous c91a2408a3 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-26 17:18:01 +03:00
Sofia Papacharalampous 1cdd77e73a progress bar styling changes 2024-04-26 17:17:50 +03:00
Efstratios Giannopoulos b58dd531ff rename to OpenCDMP 2024-04-26 17:12:29 +03:00
Efstratios Giannopoulos 00ca67d5fc rename to OpenCDMP 2024-04-26 16:35:32 +03:00
Sofia Papacharalampous 627ea6f5c0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-26 16:06:18 +03:00
Sofia Papacharalampous 2f75ec8757 description editor > added option to skip form-refresh on save.3 2024-04-26 16:05:40 +03:00
Sofia Papacharalampous 9a8ddfa7ea fixed bug on toc error indicator, on nested sections 2024-04-26 16:05:05 +03:00
Sofia Papacharalampous 6e73dd66df description editor > added option to skip form-refresh on save.2 2024-04-26 16:04:28 +03:00
Sofia Papacharalampous e7bc0406d6 description editor > added option to skip form-refresh on save 2024-04-26 16:03:49 +03:00
amentis 73ed35ca33 show user role to home page and description save and close fix 2024-04-26 15:55:18 +03:00
Efstratios Giannopoulos 96f160476a rename to OpenCDMP 2024-04-26 14:33:42 +03:00
Efstratios Giannopoulos 3bdace15bb backend rename to OpenCDMP 2024-04-26 13:50:56 +03:00
Alexandros Mandilaras b18f8ccf9a remove certificates & user and https configurations. Fix keycloak import realm names and urls 2024-04-26 13:42:55 +03:00
Efstratios Giannopoulos 8722e15750 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-26 12:19:57 +03:00
Efstratios Giannopoulos 8d20ff57e9 tenant configuration changes 2024-04-26 12:19:24 +03:00
amentis d30613b061 reference type routing fix 2024-04-26 12:14:46 +03:00
Thomas Georgios Giannos db80cb1c34 Fixes and preparing for field types and prefilling docs 2024-04-26 11:04:17 +03:00
Diamantis Tziotzios de03e4776b single autocomplete fix 2024-04-26 10:17:57 +03:00
Alexandros Mandilaras 9c2f8ecf4e Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-25 18:01:15 +03:00
Alexandros Mandilaras f1c1503b1c Finalize deployment for keycloak, rabbitmq, and gotenberg 2024-04-25 17:59:42 +03:00
Efstratios Giannopoulos 7ea32faa94 TenantDefaultLocale queue event 2024-04-25 17:59:36 +03:00
Sofia Papacharalampous 52799fdd7d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-25 17:15:48 +03:00
Sofia Papacharalampous 945aa9ee30 fix autocomplete selection from laptop touchpad 2024-04-25 17:15:30 +03:00
amentis 514621c252 update currency sql script 2024-04-25 16:52:29 +03:00
amentis ea3b1a762d query static reference 2024-04-25 15:00:32 +03:00
Thomas Georgios Giannos a1c95f35fd Added root docs for blueprints, added sections on existing pages for navigation info 2024-04-25 14:57:51 +03:00
Efstratios Giannopoulos bc073574c1 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-25 14:53:23 +03:00
Efstratios Giannopoulos 4ae62076f8 tenant configuration changes 2024-04-25 14:53:07 +03:00
Alexandros Mandilaras 9fd28bbbf1 Finish Postgres initialization and deployment 2024-04-25 14:38:36 +03:00
amentis 21de37e980 fix buildPersist for description validate 2024-04-25 14:23:09 +03:00
Sofia Papacharalampous 5ff5825f00 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-25 14:08:11 +03:00
Sofia Papacharalampous 279ae95b5a description editor ui fixes 2024-04-25 14:07:58 +03:00
Efstratios Giannopoulos 7bcf66900d migration changes 2024-04-25 13:13:44 +03:00
Efstratios Giannopoulos 10a8e93803 update common models 2024-04-25 12:21:02 +03:00
Sofia Papacharalampous 2c98acb185 show generic backend error status 400 on save of dmp-description 2024-04-25 12:02:13 +03:00
Alexandros Mandilaras f2a1ce4f0f init microservice deployment commit 2024-04-25 11:48:25 +03:00
Efstratios Giannopoulos ed9a4ab2c8 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-25 11:35:27 +03:00
Efstratios Giannopoulos 33d9bab4bf migration fixes 2024-04-25 11:35:08 +03:00
amentis 99ae216cf3 change description validator with visibility service 2024-04-25 10:48:13 +03:00
Sofia Papacharalampous e9fa56f5c9 description-editor > description-template >bug fix on 2024-04-25 10:41:40 +03:00
Efstratios Giannopoulos c27e98acd8 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptionproperties/PropertyDefinitionFieldSetPersist.java
2024-04-25 10:27:06 +03:00
Efstratios Giannopoulos c243da1b9e migration fixes 2024-04-24 18:28:13 +03:00
Efstratios Giannopoulos ae7366c3ff scrip changes 2024-04-24 18:23:44 +03:00
Diamantis Tziotzios 23d656c401 more brand changes 2024-04-24 17:35:47 +03:00
Diamantis Tziotzios 259e38fa71 script name fixes 2024-04-24 17:23:47 +03:00
amentis a6f0996fa1 update insert sql script 2024-04-24 17:20:06 +03:00
Diamantis Tziotzios 4b321778fa brand change 2024-04-24 17:12:09 +03:00
Sofia Papacharalampous 8ee64a502b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-24 16:58:53 +03:00
Sofia Papacharalampous eee9d65ee8 fix bug on dmp editor > on description delete 2024-04-24 16:58:39 +03:00
amentis 76743539da description copy fix 2024-04-24 16:33:58 +03:00
Sofia Papacharalampous 64698bbe21 sidebar active route fix 2024-04-24 15:54:49 +03:00
amentis dadd536539 description upload fix issue 2024-04-24 15:09:45 +03:00
Sofia Papacharalampous f8e6cb6462 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-24 15:07:18 +03:00
Sofia Papacharalampous a4c75c291d dmp-editor ui fixes 2024-04-24 15:07:02 +03:00
amentis 5a618168dd description validation small fixes 2024-04-24 14:28:12 +03:00
Efstratios Giannopoulos e5e1f23811 add Description template hasMultiplicity 2024-04-24 14:07:51 +03:00
Efstratios Giannopoulos cd8545590e sql script updates 2024-04-24 14:06:10 +03:00
amentis 6eca4c4628 description validation add if field is rule target 2024-04-24 13:58:07 +03:00
Sofia Papacharalampous 0f2e974556 minor ui changes 2024-04-24 13:20:32 +03:00
Sofia Papacharalampous 7d9a8b3aa1 fix on table-of-content validation - on table-of-content-internal initialization 2024-04-24 12:14:21 +03:00
Sofia Papacharalampous 7f352004ed Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-24 12:05:02 +03:00
Sofia Papacharalampous 649e08a755 fix on table-of-content validation - trigger on finalization 2024-04-24 12:04:46 +03:00
Thomas Georgios Giannos de3a352e39 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-24 12:04:27 +03:00
Thomas Georgios Giannos e7112ccfab Added docs for reference types 2024-04-24 12:03:56 +03:00
amentis 9a7b209290 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-24 12:02:56 +03:00
amentis a6118f44e3 fix dmp, description, home title tabs 2024-04-24 12:02:01 +03:00
Sofia Papacharalampous 434a207ac3 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-24 12:01:46 +03:00
Sofia Papacharalampous 18365de1d4 fix on table-of-content validation trigger 2024-04-24 12:01:29 +03:00
Sofia Papacharalampous 850eed05d0 minor ui fixes 2024-04-24 12:00:13 +03:00
Diamantis Tziotzios a7c49ca4af canRemoveItem logic added to multiple auto complete and Teamplates control @ DmpEditor 2024-04-24 11:35:23 +03:00
amentis efe6a9616f Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-24 11:19:47 +03:00
amentis b78de951ce remove check box required condition 2024-04-24 11:19:25 +03:00
Sofia Papacharalampous 2dfa34db40 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-24 11:07:03 +03:00
Sofia Papacharalampous ad49a4b86e minor ui changes 2024-04-24 11:06:46 +03:00
Diamantis Tziotzios 6a221671fc minor fixes 2024-04-24 11:03:24 +03:00
amentis a3350b2f2c fix description checkBox bug and add hash conflict to callback errors 2024-04-23 18:52:41 +03:00
Efstratios Giannopoulos f5b0af516a tenant configuration changes 2024-04-23 18:09:31 +03:00
amentis e7a500e3ec description validation changes 2024-04-23 17:59:42 +03:00
Alexandros Mandilaras c57d5793f2 uncomment certificate commands 2024-04-23 16:41:37 +03:00
Alexandros Mandilaras bdc50c41da revert to using sonar-scanner plugin 2024-04-23 16:31:31 +03:00
Alexandros Mandilaras 1dd578fe4d add sonar-scanner command to package json 2024-04-23 15:41:41 +03:00
Sofia Papacharalampous 8e139eb0c2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-23 15:20:36 +03:00
Sofia Papacharalampous 4935ec14f5 description editor > table-of-content base-info > error indication bug fix 2024-04-23 15:18:44 +03:00
Alexandros Mandilaras d320f3e94b no message 2024-04-23 15:13:18 +03:00
Sofia Papacharalampous 3c94f1eae0 apply name varibles on en.json 2024-04-23 15:01:09 +03:00
Alexandros Mandilaras 56d3152478 dont look for package-lock when scanning 2024-04-23 14:55:07 +03:00
Alexandros Mandilaras 1563641515 no message 2024-04-23 14:53:18 +03:00
amentis 5bfe76f5c6 add description save validation error dialog 2024-04-23 14:51:52 +03:00
Alexandros Mandilaras 7cb559bf31 apply the same to the other api dockerfiles too 2024-04-23 14:40:37 +03:00
Alexandros Mandilaras 019aa3055b add all env variables to sonar scanner command 2024-04-23 14:37:12 +03:00
Sofia Papacharalampous da7397e811 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-23 14:27:20 +03:00
Sofia Papacharalampous 30d552265b description editor > table-of-content > error indication bug fix 2024-04-23 14:26:13 +03:00
Alexandros Mandilaras a1263c57a1 one more path fix 2024-04-23 14:20:17 +03:00
Alexandros Mandilaras 88d211e6f9 fix copy paths 2024-04-23 14:16:20 +03:00
Efstratios Giannopoulos 5b59bfe195 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-23 14:10:45 +03:00
Efstratios Giannopoulos dcbcc951b6 fix ui ordinal 2024-04-23 14:10:08 +03:00
Alexandros Mandilaras b1cea088f7 split Sonar dockerfile into one for each service for pipeline optimization 2024-04-23 14:02:06 +03:00
Efstratios Giannopoulos 0d2db89f1c tenant configuration changes 2024-04-23 13:20:17 +03:00
Efstratios Giannopoulos 61ccefa9f7 tenant configuration changes 2024-04-23 11:57:16 +03:00
Thomas Georgios Giannos 480814ae30 Docs for managing notification templates, supportive material and languages 2024-04-23 11:49:02 +03:00
Alexandros Mandilaras 1bcdd24f13 update annotation build profile && update Dockerfile.Sonar with frontend 2024-04-23 11:38:57 +03:00
Alexandros Mandilaras e038a6fdf0 annotation dockerfile fix 2024-04-23 11:19:41 +03:00
Alexandros Mandilaras f2af35a9aa add sonar dockerfile & update notification service build profile 2024-04-23 11:08:47 +03:00
amentis 1e2eb7545d add can remove description template logic in dmp editor 2024-04-23 10:09:35 +03:00
Efstratios Giannopoulos db90097c16 tenant configuration changes 2024-04-22 18:36:35 +03:00
Sofia Papacharalampous 73701b206c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-22 17:28:57 +03:00
Sofia Papacharalampous d65eca136d ui changes (language editor) 2024-04-22 17:27:55 +03:00
amentis 8ef952ec80 upload access denied fix 2024-04-22 17:25:44 +03:00
Sofia Papacharalampous 9a1515f479 ui changes (prefilling-sources) 2024-04-22 17:24:39 +03:00
Sofia Papacharalampous 42a302f77f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-22 16:55:47 +03:00
Sofia Papacharalampous 2c181bc460 added error indication on dmp editor 2024-04-22 16:55:20 +03:00
Efstratios Giannopoulos ddbf83479d tenant configuration changes 2024-04-22 16:47:40 +03:00
amentis e6309a8885 description ui changes (add next button) 2024-04-22 16:02:51 +03:00
Sofia Papacharalampous 218fab4fd1 description editor > added error indicator for base infos 2024-04-22 14:11:02 +03:00
Sofia Papacharalampous fbbefdb59e Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-22 13:50:28 +03:00
Sofia Papacharalampous b772a97d00 description editor ui changes 2024-04-22 13:50:15 +03:00
amentis 88054462c6 small fix 2024-04-22 13:39:10 +03:00
Sofia Papacharalampous 3f1d5205ac Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-22 13:37:25 +03:00
Sofia Papacharalampous 1f7bcc52ea description error indicator bug fix on nested sections 2024-04-22 13:37:10 +03:00
Efstratios Giannopoulos 4b38b990fc tenant configuration changes 2024-04-22 12:13:23 +03:00
amentis 1b78203d27 dmp, description autocomplete config changes 2024-04-22 11:51:45 +03:00
Efstratios Giannopoulos e90e49b4f1 tenant configuration changes 2024-04-22 11:42:07 +03:00
Diamantis Tziotzios 378f3c957b mat-autocomplete change 2024-04-22 10:32:24 +03:00
Efstratios Giannopoulos ada4dcfe99 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-22 10:00:31 +03:00
Efstratios Giannopoulos c523bda52b fix tenant scope 2024-04-22 10:00:04 +03:00
Thomas Georgios Giannos cb3ff760e5 Adding documentation on users and tenants 2024-04-22 09:44:48 +03:00
Sofia Papacharalampous 65660b9537 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-19 18:52:02 +03:00
Sofia Papacharalampous 8ae7f61bf4 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/description/editor/description-editor.component.ts
#	dmp-frontend/src/app/ui/description/editor/description-editor.model.ts
2024-04-19 18:41:55 +03:00
Efstratios Giannopoulos 2be94e39ff tenant configuration changes 2024-04-19 18:39:51 +03:00
Sofia Papacharalampous 79817e63e0 table of contents error indicator 2024-04-19 18:37:06 +03:00
amentis 0a26968462 fix languages 2024-04-19 17:32:48 +03:00
amentis 92a3b64286 Revert "fix languages"
This reverts commit 04e5292a0a.
2024-04-19 17:22:56 +03:00
amentis 04e5292a0a fix languages 2024-04-19 17:16:57 +03:00
Efstratios Giannopoulos 4d0b71db20 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-19 15:34:25 +03:00
Efstratios Giannopoulos 26bdabe03b add tenant configuration 2024-04-19 15:34:07 +03:00
amentis 943e7bc23e change build dmp persist for validation with reference single option 2024-04-19 15:01:14 +03:00
amentis a1437fd314 small fixes 2024-04-19 13:50:11 +03:00
amentis 8e9fee55aa add ui dmp remove template validation 2024-04-19 12:29:21 +03:00
Efstratios Giannopoulos 0db2f12b1d remove unused code 2024-04-19 12:26:37 +03:00
Efstratios Giannopoulos 8f45c14a51 remove unused code 2024-04-19 12:10:19 +03:00
Efstratios Giannopoulos 5c06d1ee44 dmp blueprint reference add multiple 2024-04-19 11:46:23 +03:00
Efstratios Giannopoulos 57e0755da6 update script 2024-04-19 11:16:21 +03:00
Efstratios Giannopoulos eb38e1d948 dmp blueprint reference add multiple 2024-04-19 11:10:51 +03:00
Diamantis Tziotzios 7daafdae2e minor fix 2024-04-19 10:53:27 +03:00
Diamantis Tziotzios eb146b21c7 no message 2024-04-19 10:13:02 +03:00
amentis 6fe74c2218 prefill description pop up clean up 2024-04-19 10:00:57 +03:00
Efstratios Giannopoulos 804ba2d537 prefilling changes 2024-04-18 17:12:41 +03:00
Thomas Georgios Giannos d268d9b435 Adding docs full structure and all pages, keeping built-in docusaurus tutorials temporarily (on separate category) 2024-04-18 16:57:12 +03:00
Efstratios Giannopoulos 5e6b231a0f prefilling fixes 2024-04-18 14:15:03 +03:00
Diamantis Tziotzios 7cc067125a added docs project 2024-04-18 13:08:56 +03:00
Efstratios Giannopoulos b1a17faa40 fix prefiling without get 2024-04-18 12:34:46 +03:00
Efstratios Giannopoulos c762613509 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-18 12:20:20 +03:00
Efstratios Giannopoulos ef016f5419 dependency field fix 2024-04-18 12:20:05 +03:00
Thomas Georgios Giannos 4d363938fc Fixes on dmp template metrics queries 2024-04-18 11:45:25 +03:00
Efstratios Giannopoulos ed96403d25 update file formatters to use exportEntityTypes importEntityTypes 2024-04-18 10:08:46 +03:00
amentis 3ec12fdf59 description template has conflict bug fix 2024-04-17 18:29:22 +03:00
Efstratios Giannopoulos aaac7dfdf4 reference type editor bug fix 2024-04-17 17:41:15 +03:00
Efstratios Giannopoulos c28c700eff Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-17 17:18:01 +03:00
Efstratios Giannopoulos 0eb78b5107 grant reference fix 2024-04-17 17:17:36 +03:00
amentis d6e447eb53 dmp discard fix 2024-04-17 17:13:36 +03:00
amentis 1961973971 prefill popup small fix 2024-04-17 15:40:49 +03:00
amentis b6ee298ba4 prefill popup small fix 2024-04-17 15:39:30 +03:00
Efstratios Giannopoulos 2f0056c62b config changes 2024-04-17 13:54:00 +03:00
amentis 3d8ba6ea7e description ui fix finalized issue and remove save and add button 2024-04-17 13:48:40 +03:00
amentis 95e3fd859b admin browse users temp fix 2024-04-17 13:40:47 +03:00
Efstratios Giannopoulos ec7e2a6ea3 fix researchers reference fetcher 2024-04-17 13:01:43 +03:00
Diamantis Tziotzios 0757713e63 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-17 11:44:36 +03:00
Diamantis Tziotzios 47dfc6162e minor ui fixes 2024-04-17 11:44:25 +03:00
Efstratios Giannopoulos cc1be4f194 fix reference authz 2024-04-17 11:27:25 +03:00
Efstratios Giannopoulos a158e78101 get value by patter for reference 2024-04-17 10:23:56 +03:00
amentis 56efe184c9 description discard button fix 2024-04-16 18:37:27 +03:00
Diamantis Tziotzios be1b6df610 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 18:21:13 +03:00
Diamantis Tziotzios 04da845f49 minor fixes 2024-04-16 18:20:43 +03:00
Sofia Papacharalampous 7305fe7afa Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 18:04:17 +03:00
Sofia Papacharalampous 1421dcf009 editor-screens spacing changes 2024-04-16 18:03:59 +03:00
Diamantis Tziotzios b7774759f6 minor fixes 2024-04-16 16:57:20 +03:00
Diamantis Tziotzios 0fa4c58363 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 16:21:51 +03:00
Diamantis Tziotzios b9b5e36e93 minor lang changes 2024-04-16 16:21:30 +03:00
Sofia Papacharalampous 6bb091868c notification template ui changes 2024-04-16 16:06:28 +03:00
Efstratios Giannopoulos 0598067608 tenant scope fix 2024-04-16 15:35:44 +03:00
Sofia Papacharalampous 0672a60494 ui fix 2024-04-16 15:32:08 +03:00
Sofia Papacharalampous 1642a4f4f2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 15:26:35 +03:00
Sofia Papacharalampous af52c4aa8d ui and guided tour fixes 2024-04-16 15:25:10 +03:00
Efstratios Giannopoulos 36bb96f9d6 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 14:22:06 +03:00
Efstratios Giannopoulos 3c9844abb6 fix script 2024-04-16 14:21:52 +03:00
Efstratios Giannopoulos 235512efc0 keycloak changes 2024-04-16 14:21:37 +03:00
Diamantis Tziotzios 40f847c96f updated oidc-authn to 2.2.2 2024-04-16 14:15:07 +03:00
Sofia Papacharalampous 733dad05cd description-overview ui fix 2024-04-16 13:43:48 +03:00
Sofia Papacharalampous cf9a65ae53 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 13:29:50 +03:00
Sofia Papacharalampous c2d6e7b61b dmp-overview ui fix 2024-04-16 13:29:34 +03:00
Thomas Georgios Giannos 1b156ca78e Calculating doied datasets and used description templates query 2024-04-16 13:21:05 +03:00
Efstratios Giannopoulos 2e083df185 auto create keycloak tenant groups 2024-04-16 13:17:58 +03:00
Efstratios Giannopoulos 3e4316a627 fix tenant scope 2024-04-16 13:17:06 +03:00
Efstratios Giannopoulos d9a59b5570 fix script 2024-04-16 13:16:39 +03:00
Sofia Papacharalampous 7314bee9d2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 12:27:48 +03:00
Sofia Papacharalampous 6b0aea671f tour dialog fixes 2024-04-16 12:27:27 +03:00
amentis ec2a93f8c6 show recent in app notifications fix 2024-04-16 12:17:40 +03:00
Sofia Papacharalampous 2f6dcb7300 ui fix on autocomple options 2024-04-16 11:45:56 +03:00
Sofia Papacharalampous dcbaf92128 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-16 11:37:23 +03:00
Sofia Papacharalampous 730011a83b ui fixes on autocomplete of add-description-dialog 2024-04-16 11:37:09 +03:00
Efstratios Giannopoulos 48352f0461 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/core/common/enum/app-role.ts
#	dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts
#	dmp-frontend/src/app/ui/admin/user/listing/role-editor/user-role-editor.component.html
#	dmp-frontend/src/app/ui/admin/user/listing/role-editor/user-role-editor.component.scss
#	dmp-frontend/src/assets/i18n/en.json
2024-04-16 11:12:49 +03:00
Efstratios Giannopoulos f3282c7fc6 user role page changes 2024-04-16 11:02:17 +03:00
Thomas Georgios Giannos 39ad49241e Metrics fix on calculating doied dmps query 2024-04-16 10:48:53 +03:00
amentis 3a0203e942 small fix 2024-04-16 10:30:58 +03:00
amentis 50881d059e notification service changes 2024-04-15 18:36:55 +03:00
Diamantis Tziotzios be9b8df468 added progress indication at DMP Editor. 2024-04-15 18:19:56 +03:00
Sofia Papacharalampous f05d629c14 minor ui changes 2024-04-15 17:50:16 +03:00
Sofia Papacharalampous 9ad0c59b9e ui fixes on dmp tour 2024-04-15 17:07:20 +03:00
Sofia Papacharalampous 1f90266057 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-15 15:48:47 +03:00
Sofia Papacharalampous 2905feca07 ui fixes on users listing > role editor 2024-04-15 15:48:21 +03:00
amentis fc5932f56a main app notify event changes 2024-04-15 15:11:35 +03:00
Sofia Papacharalampous e7d6615fbc ui fixes on dashboard (unauthorized) 2024-04-15 14:50:05 +03:00
Sofia Papacharalampous 44a75e5ffd ui fixes on dashboard (unauthorized) 2024-04-15 14:08:44 +03:00
Sofia Papacharalampous 8c89ffe50e minor ui fixes 2024-04-15 13:22:54 +03:00
Sofia Papacharalampous 3ad70e521a minor ui fixes 2024-04-15 13:07:18 +03:00
Sofia Papacharalampous 94151966ec Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-15 13:02:14 +03:00
Sofia Papacharalampous 5268051a0d ui fixes on listing screens > filters 2024-04-15 13:01:58 +03:00
Thomas Georgios Giannos 48e21f5cb9 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-15 12:26:25 +03:00
Thomas Georgios Giannos 249cc24be4 Metrics config cleanup and bug fix 2024-04-15 12:26:16 +03:00
amentis 8942784d49 notification enum utils fix 2024-04-15 12:22:23 +03:00
Thomas Georgios Giannos 0cf61944dc Small fix on metrics config 2024-04-15 12:00:48 +03:00
Sofia Papacharalampous e43327a86c minor ui change on notifcation dialog 2024-04-15 11:37:17 +03:00
Sofia Papacharalampous 19ed0bfabb minor ui change on tour dialog 2024-04-15 11:36:50 +03:00
Thomas Georgios Giannos 0b62822f64 Small fix on metrics 2024-04-15 11:29:00 +03:00
Thomas Georgios Giannos e2aab3e523 Small fixes on metrics 2024-04-15 11:26:18 +03:00
Diamantis Tziotzios af5a9c269e minor ui fixes 2024-04-15 10:47:30 +03:00
Sofia Papacharalampous 5118e696d0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-12 18:30:34 +03:00
Sofia Papacharalampous e9596a8cc1 ui fixes on dmp-blueprints>filters 2024-04-12 18:30:11 +03:00
Diamantis Tziotzios c19fc7276b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-12 18:16:43 +03:00
Diamantis Tziotzios a425902b24 email template cleanup 2024-04-12 18:16:32 +03:00
Efstratios Giannopoulos 5b56e24ffc Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-12 18:16:21 +03:00
Efstratios Giannopoulos e072dc17a5 config clean up 2024-04-12 18:15:59 +03:00
Sofia Papacharalampous b570a6f0fa Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-12 18:11:01 +03:00
Sofia Papacharalampous 05a063a0a5 ui fixes on mine-inapp-notification>filters 2024-04-12 18:10:08 +03:00
Efstratios Giannopoulos 254a289e2a sidebar fix 2024-04-12 18:02:54 +03:00
Efstratios Giannopoulos fab39a3776 config changes 2024-04-12 17:44:13 +03:00
Sofia Papacharalampous 9c8d1aa1dc Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-12 17:37:50 +03:00
Sofia Papacharalampous 1d465955be moved notification services and components under the "src\notification-service" 2024-04-12 17:37:37 +03:00
Thomas Georgios Giannos c477eb5460 Adding back metrics for users, languages, installations, dmps with grants for prometheus 2024-04-12 16:51:44 +03:00
Efstratios Giannopoulos 5257e41109 update GlobalExceptionHandler 2024-04-12 14:06:57 +03:00
Thomas Georgios Giannos d5e43e12bf Adding back metrics for dmps, datasets, dataset templates and references for prometheus 2024-04-12 13:49:13 +03:00
Sofia Papacharalampous 1f2408d15d navbar ui fix 2024-04-12 12:08:20 +03:00
Sofia Papacharalampous ce07fb0894 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-12 11:47:06 +03:00
Sofia Papacharalampous 87ffbfb880 ui fixes on dmp and description listing 2024-04-12 11:46:53 +03:00
amentis 8fc4f939b9 full name upload file display 2024-04-12 11:11:16 +03:00
Sofia Papacharalampous 25d8503f26 navbar ui fix 2024-04-12 10:59:31 +03:00
Efstratios Giannopoulos f12ddd7090 typo fix 2024-04-11 18:22:33 +03:00
Efstratios Giannopoulos 94cc0b87cd bug fixes 2024-04-11 18:09:47 +03:00
Sofia Papacharalampous 928babb9d5 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-11 17:46:58 +03:00
Sofia Papacharalampous 4e791e78af ui fixes (description template editor) 2024-04-11 17:46:45 +03:00
amentis e0317e95b8 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-11 17:31:42 +03:00
amentis 15b4c7fbc6 description template upload changes, dmp description tag field type fix 2024-04-11 17:30:55 +03:00
Efstratios Giannopoulos f98742f577 metrics impl 2024-04-11 17:26:04 +03:00
Sofia Papacharalampous f75d9ba777 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-11 16:43:28 +03:00
Sofia Papacharalampous d772365b23 added user notification preferences 2024-04-11 16:43:10 +03:00
Diamantis Tziotzios 5f8121e687 cleanup 2024-04-11 16:29:39 +03:00
amentis c11966f658 description template preview select button fix 2024-04-11 14:20:06 +03:00
Efstratios Giannopoulos 39ea1b6c88 add authn only permissions to me 2024-04-11 12:36:00 +03:00
Efstratios Giannopoulos 0ceadf2ab1 bug fix 2024-04-11 11:25:34 +03:00
Efstratios Giannopoulos 1e568bb2dd no message 2024-04-11 11:14:26 +03:00
Alexandros Mandilaras 0e0e40afeb more path fixing 2024-04-11 10:22:46 +03:00
Alexandros Mandilaras 2bb5369a00 change request mapping to match proxy setup 2024-04-11 10:00:30 +03:00
Alexandros Mandilaras 1f43bac181 Revert "try changing path"
This reverts commit dea932ca95.
2024-04-10 22:33:14 +03:00
Alexandros Mandilaras dea932ca95 try changing path 2024-04-10 22:09:25 +03:00
Efstratios Giannopoulos 0fa6f4dc83 no message 2024-04-10 18:24:14 +03:00
Efstratios Giannopoulos f9c89e4f92 bug fix 2024-04-10 18:17:47 +03:00
amentis cf5333c788 add file storage to ui 2024-04-10 17:38:39 +03:00
Efstratios Giannopoulos 906cee7621 db script changes 2024-04-10 16:48:12 +03:00
Efstratios Giannopoulos 871c3bc166 notification remove tenant from contact and cred 2024-04-10 16:40:26 +03:00
Efstratios Giannopoulos a5160d3ecd code clean up 2024-04-10 15:16:15 +03:00
Efstratios Giannopoulos 5a6ab32768 maintenance changes 2024-04-10 15:10:16 +03:00
Efstratios Giannopoulos 1c5c699195 update common models 2024-04-10 13:36:21 +03:00
Efstratios Giannopoulos 53a04ba970 migration changes 2024-04-10 12:10:35 +03:00
amentis e3479eb313 blueprint disabled required button fix 2024-04-10 11:21:13 +03:00
Diamantis Tziotzios 8c24740382 minor ui fixes 2024-04-10 11:03:53 +03:00
Diamantis Tziotzios 6068878cd4 upload small fix 2024-04-10 10:47:05 +03:00
Diamantis Tziotzios abd4f0e5e2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-10 10:04:23 +03:00
Diamantis Tziotzios 6b75bcb06c description editor fix 2024-04-10 10:01:27 +03:00
Sofia Papacharalampous 1d68d217bd code clean up 2024-04-10 09:35:25 +03:00
Diamantis Tziotzios 29e0d032ca dmp blueprint fixes 2024-04-09 18:35:53 +03:00
amentis 6b7a33c0b4 remove currency from description template field type enum 2024-04-09 18:28:07 +03:00
Efstratios Giannopoulos 6ecd52dd2f remove allowNullTenant 2024-04-09 18:19:10 +03:00
Efstratios Giannopoulos a84332001e migration currency changes 2024-04-09 18:14:16 +03:00
amentis c27ba6ee6a search static reference fix 2024-04-09 17:21:00 +03:00
amentis 9bd50f379f update sql insert script 2024-04-09 17:13:40 +03:00
amentis 43c958b2b1 update sql currency script 2024-04-09 16:44:22 +03:00
amentis cdae5b2bd3 no message 2024-04-09 16:30:05 +03:00
amentis 02c3ed7563 create list of static external fetcher items 2024-04-09 16:15:15 +03:00
Efstratios Giannopoulos 125b0aa408 persist external reference to type tenant 2024-04-09 14:48:04 +03:00
Efstratios Giannopoulos 74526f7927 bug fix 2024-04-09 13:46:15 +03:00
Sofia Papacharalampous 29836cf362 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-09 13:19:46 +03:00
Sofia Papacharalampous 5523ca2fe1 description template update 2024-04-09 13:19:32 +03:00
amentis 19cb076b03 more dmp validation changes 2024-04-09 11:48:20 +03:00
Diamantis Tziotzios ab010026a7 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-08 18:59:48 +03:00
Diamantis Tziotzios 02fc5b7bea description fixes 2024-04-08 18:59:42 +03:00
Efstratios Giannopoulos 0569e8bd6d updateDescriptionTemplate changes 2024-04-08 18:07:47 +03:00
Sofia Papacharalampous a556aef2cd stlyling fixes on dashboard > activity cards 2024-04-08 18:03:26 +03:00
amentis a6b1a371a1 add currency reference-type sql script 2024-04-08 16:30:21 +03:00
Diamantis Tziotzios 29d38630e1 update angular to v17. 2024-04-08 16:22:56 +03:00
Sofia Papacharalampous bf868d306a 1. dmp editor > new dmp > removed extra (*) from description field
2. dashboard styling changes
2024-04-08 15:10:12 +03:00
Sofia Papacharalampous d2816b9454 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-08 14:58:49 +03:00
Sofia Papacharalampous 658b5d948d dmp editor > initialize next step when dmp is not new 2024-04-08 14:58:08 +03:00
Diamantis Tziotzios ed55841164 build fix 2024-04-08 14:56:10 +03:00
Diamantis Tziotzios 060bfbed20 Dockerfile update 2024-04-08 14:22:14 +03:00
Diamantis Tziotzios d59676d6dc annotation fixes 2024-04-08 14:19:42 +03:00
Alexandros Mandilaras fad3448e3e dont copy package-lock 2024-04-08 14:09:18 +03:00
Alexandros Mandilaras 48e9ca17b1 remove legacy peer deps 2024-04-08 14:08:10 +03:00
Alexandros Mandilaras 6b57cdd20b use production configuration in frontend dockerfile 2024-04-08 14:03:29 +03:00
Alexandros Mandilaras 7a168c2024 legacy-peer-deps 2024-04-08 13:53:32 +03:00
amentis fe6bbca30b add validation dmp 2024-04-08 13:47:00 +03:00
Alexandros Mandilaras a71b85bb6b update frontend dockerfile 2024-04-08 13:38:28 +03:00
Diamantis Tziotzios a5099d8d5d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/Dockerfile
#	dmp-backend/Dockerfile.CI
2024-04-08 13:34:36 +03:00
Diamantis Tziotzios 03067fe6f6 Dockerfile changes 2024-04-08 13:31:46 +03:00
Alexandros Mandilaras e1b09c9250 no message 2024-04-08 12:58:55 +03:00
Alexandros Mandilaras a11e2c300d dockerfile fixes 2024-04-08 12:43:07 +03:00
Alexandros Mandilaras c898227035 revert that also 2024-04-08 12:23:19 +03:00
Alexandros Mandilaras 40d9850727 try different groupID 2024-04-08 12:14:28 +03:00
Alexandros Mandilaras c63f8cf928 remove unused profile in annotation-service 2024-04-08 11:36:34 +03:00
Efstratios Giannopoulos 399e8e2f2a Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-08 11:22:15 +03:00
Efstratios Giannopoulos abc60aa11e bug fix 2024-04-08 11:21:51 +03:00
Alexandros Mandilaras ffd521f4dc remove packaging type from core 2024-04-08 11:21:49 +03:00
Sofia Papacharalampous 325356a2ae config 2024-04-08 11:02:44 +03:00
Sofia Papacharalampous 8d2d936a73 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-08 11:00:55 +03:00
Sofia Papacharalampous 6013cb5225 dmp editor > select default blueprint 2024-04-08 10:59:26 +03:00
Alexandros Mandilaras bdfcb8cdf6 update Dockerfiles 2024-04-08 10:59:10 +03:00
Alexandros Mandilaras 79431f0865 revert devProfulURL change 2024-04-08 10:52:22 +03:00
amentis f2e6189fac Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-08 10:48:36 +03:00
Alexandros Mandilaras 9ce9632c37 remove devProfileURL from dockerfile 2024-04-08 10:47:48 +03:00
amentis 51d941b0f7 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-08 10:46:41 +03:00
amentis e89bfdf0f4 remove description template section multiplicity property 2024-04-08 10:45:32 +03:00
Alexandros Mandilaras c1a241e4a8 try not use revision variable 2024-04-08 10:34:21 +03:00
Alexandros Mandilaras c0ac0bb728 correct path 2024-04-08 10:29:05 +03:00
Alexandros Mandilaras ef5125bb04 rm -devel configs 2024-04-08 10:21:56 +03:00
Alexandros Mandilaras 8833905325 Dockerfile updates 2024-04-08 10:09:19 +03:00
Alexandros Mandilaras 565e8a3b1e uncomment the groupID 2024-04-08 09:52:49 +03:00
Alexandros Mandilaras b676bafdab try more fixes 2024-04-08 09:50:16 +03:00
Alexandros Mandilaras 6ffc0a0a10 add groupID when building backend core 2024-04-08 09:39:17 +03:00
Alexandros Mandilaras 83855540d2 revert that change 2024-04-08 09:35:31 +03:00
Alexandros Mandilaras 3e8cb9b17e try possible fix for backend web build 2024-04-08 09:25:06 +03:00
Efstratios Giannopoulos a4252a6157 updateDescriptionTemplate backend 2024-04-05 18:33:23 +03:00
Efstratios Giannopoulos c8809ee457 updateDescriptionTemplate backend 2024-04-05 18:32:49 +03:00
Efstratios Giannopoulos 17b787c142 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 18:04:20 +03:00
Efstratios Giannopoulos 45e3426969 fix delete callback 2024-04-05 18:03:26 +03:00
Alexandros Mandilaras ad069b5568 remove duplicate properties 2024-04-05 17:55:19 +03:00
Alexandros Mandilaras 1f142c672f possible fixes for Docker build 2024-04-05 17:52:20 +03:00
Efstratios Giannopoulos 7ebe22a45f Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/description/listing/description-listing.component.ts
#	dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts
2024-04-05 17:50:07 +03:00
Efstratios Giannopoulos 5176916ce7 add belongsToCurrentTenant to ui 2024-04-05 17:49:20 +03:00
amentis 4503bc0bcf description field fixes 2024-04-05 17:25:25 +03:00
Sofia Papacharalampous 405bf0c9b2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 17:18:17 +03:00
Sofia Papacharalampous 9ba20bdd17 added finalized date on dmp and description listing screens 2024-04-05 17:17:33 +03:00
Alexandros Mandilaras 328ac3b1f6 Dockerfile changes 2024-04-05 16:57:00 +03:00
Efstratios Giannopoulos 4963d8ffc3 add belongsToCurrentTenant to ui 2024-04-05 15:20:03 +03:00
Efstratios Giannopoulos 6a89feb31b Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 14:13:42 +03:00
Efstratios Giannopoulos 028b1e0c94 description template new version tenant validation 2024-04-05 14:13:30 +03:00
Efstratios Giannopoulos efb816c627 pom changes 2024-04-05 14:12:15 +03:00
Alexandros Mandilaras 2cc9d2bee0 revert 2024-04-05 14:11:15 +03:00
Alexandros Mandilaras 9f99f622ef try remove revision 2024-04-05 13:35:13 +03:00
Alexandros Mandilaras 42af117718 update Dockerfile 2024-04-05 13:32:07 +03:00
amentis b6138da7ab multiplicity on description template fix bug 2024-04-05 13:16:22 +03:00
Efstratios Giannopoulos bf08b6abb7 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 12:43:48 +03:00
Efstratios Giannopoulos e61f06c192 use ilike 2024-04-05 12:43:33 +03:00
Sofia Papacharalampous 3f69f4ebe2 description-editor> update template if obsolete and emit refresh data 2024-04-05 11:54:11 +03:00
Sofia Papacharalampous f82501344c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 11:39:57 +03:00
Sofia Papacharalampous 0c197ffcd4 description-editor> prefill> added version information to the description label 2024-04-05 11:39:39 +03:00
Efstratios Giannopoulos ff722b1d97 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 11:35:51 +03:00
Efstratios Giannopoulos c35fb3ad3c migration fixes 2024-04-05 11:35:37 +03:00
Efstratios Giannopoulos 0d3e72028f fix cache to use tenant 2024-04-05 11:34:30 +03:00
Sofia Papacharalampous 4ffbafc85f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 11:34:04 +03:00
Sofia Papacharalampous 023c0dd7b6 styling fixes on language and tenant menu 2024-04-05 11:33:49 +03:00
amentis 139ee2d259 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-05 11:12:26 +03:00
amentis fea69ff087 update custom blueprint system validator 2024-04-05 11:11:52 +03:00
Sofia Papacharalampous f0ec8b5fae Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-05 11:11:49 +03:00
Sofia Papacharalampous 5519c6890f fixed dmp editor first step validation.3 2024-04-05 11:11:31 +03:00
Diamantis Tziotzios 76a355891f added tenantcode to dashboard statistics cacahe key 2024-04-05 10:07:38 +03:00
amentis 0ded82e5cb description multiplicity ui changes 2024-04-05 09:44:26 +03:00
amentis b4f54bc330 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-04 18:36:05 +03:00
amentis 2b2e04012d fix validators to description template and dmp blueprint 2024-04-04 18:35:24 +03:00
Sofia Papacharalampous dc5928cf49 fixed dmp editor first step validation.2 2024-04-04 18:31:16 +03:00
Sofia Papacharalampous 192018051d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-04 18:28:19 +03:00
Sofia Papacharalampous 3e86a43fb0 fixed dmp editor first step validation 2024-04-04 18:27:59 +03:00
Efstratios Giannopoulos f7aaa04c0c fix sql script order 2024-04-04 18:27:18 +03:00
Efstratios Giannopoulos 399efde673 config changes 2024-04-04 17:47:01 +03:00
amentis 805702459f Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-04-04 17:08:27 +03:00
amentis 4de68e34b2 description template fixes 2024-04-04 17:07:04 +03:00
Sofia Papacharalampous d94759ff5d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-04 17:03:03 +03:00
Sofia Papacharalampous c71d0e96c3 added option to update a description template if it is obsolete 2024-04-04 17:02:43 +03:00
Sofia Papacharalampous ef6970ffe6 styling fixes 2024-04-04 17:01:04 +03:00
Efstratios Giannopoulos ab993c43af multitenant changes 2024-04-04 16:39:40 +03:00
Thomas Georgios Giannos 5ec8417f4e Bug fix on maintenance.service.ts 2024-04-04 16:16:45 +03:00
Thomas Georgios Giannos cfd508ccc5 Bug fix on maintenance.service.ts 2024-04-04 16:15:37 +03:00
Thomas Georgios Giannos fcda984d7e Added removal events when the entities (users / tenants) are found inactive on event maintenance tasks controller 2024-04-04 14:33:04 +03:00
Thomas Georgios Giannos 6eed99c1cc Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-04 13:54:05 +03:00
Thomas Georgios Giannos f9839b14ed Added new maintenance tasks in the UI. Old indexes management component merged with the new one viewed on /maintenance-tasks 2024-04-04 13:52:13 +03:00
Sofia Papacharalampous 93c90ddcef Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-04 13:51:04 +03:00
Sofia Papacharalampous 5decf6f4b1 login with the default tenant 2024-04-04 13:50:51 +03:00
amentis 1aec9d4eff description editor submit fix 2024-04-04 13:43:58 +03:00
Sofia Papacharalampous 8cec0c3552 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-04 13:21:38 +03:00
Sofia Papacharalampous 527130cb02 added tenant switch on navbar 2024-04-04 13:21:26 +03:00
amentis e7f140cb51 add response error code enum, belongsToTenant field, fix description template new version issue 2024-04-04 12:56:23 +03:00
Efstratios Giannopoulos 3fe87a024a script changes 2024-04-04 12:25:43 +03:00
Efstratios Giannopoulos c1a3ac89d6 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/integrationevent/outbox/tenanttouched/TenantTouchedIntegrationEventHandlerImpl.java
2024-04-04 12:22:35 +03:00
Efstratios Giannopoulos bbe2d91830 multi tenant changes 2024-04-04 12:21:12 +03:00
Thomas Georgios Giannos bc44887675 Added maintenance tasks for sending touch events (users and tenants) 2024-04-04 11:43:04 +03:00
Sofia Papacharalampous 199ffef673 fix public descriptions page when logged-out 2024-04-04 10:53:24 +03:00
Efstratios Giannopoulos ea6ea25116 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-03 18:35:52 +03:00
Efstratios Giannopoulos 671f8f75ba multitenant integration changes 2024-04-03 18:35:37 +03:00
amentis 330231f217 add maximum multiplicity message 2024-04-03 18:22:55 +03:00
Sofia Papacharalampous 7c83fd0e67 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-03 17:55:31 +03:00
Sofia Papacharalampous 5a5e190534 added translations 2024-04-03 17:55:10 +03:00
amentis 26cbe562ad add multiplicity validation ui 2024-04-03 17:50:47 +03:00
Sofia Papacharalampous 6f7ed58523 user-profile > added "switch tenant" option 2024-04-03 15:55:22 +03:00
Sofia Papacharalampous ca4e7e6feb ui fixes
*reference dialog
2024-04-03 15:54:43 +03:00
Efstratios Giannopoulos 424d18526b Add belongsToCurrentTenant to builders 2024-04-03 13:22:22 +03:00
Sofia Papacharalampous 87bd9e5b24 ui fixes on description and dmp overview 2024-04-03 13:21:17 +03:00
Sofia Papacharalampous 5e5bd8aab0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-03 12:59:12 +03:00
Sofia Papacharalampous 519870efce minor ui changes 2024-04-03 12:58:49 +03:00
Sofia Papacharalampous da0633e4c0 ui fixes on dmp and description overview 2024-04-03 12:46:21 +03:00
Efstratios Giannopoulos f47c049b8c elastic apply tenant logic 2024-04-03 12:22:43 +03:00
Efstratios Giannopoulos b3db6f1085 remove tenant from UserContactInfo UserCredential 2024-04-03 11:36:31 +03:00
Efstratios Giannopoulos a5e69fe777 bug fix 2024-04-03 10:24:51 +03:00
Efstratios Giannopoulos a5f31ab880 add cache to tenant interceptor 2024-04-03 10:15:28 +03:00
Diamantis Tziotzios fcc3dd7609 minor ui changes 2024-04-02 21:23:59 +03:00
Sofia Papacharalampous 2bad85019b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-02 19:09:21 +03:00
Sofia Papacharalampous 7fe36b1505 styling changes in progress
*dmp overview
2024-04-02 19:08:46 +03:00
Efstratios Giannopoulos 3e37c91035 multi tenant changes 2024-04-02 18:39:46 +03:00
Efstratios Giannopoulos 83b5ec5a80 multitenant changes 2024-04-02 17:18:07 +03:00
amentis 27e6677a21 add multiplicity validation to description persist 2024-04-02 15:46:17 +03:00
Sofia Papacharalampous bc16f8a2c4 styling changes
1. description template > fixed import dialog
2. description template editor > fixed autocomplete input for editors on screen resize
2024-04-02 14:46:25 +03:00
Sofia Papacharalampous 340692a3b5 styling changes
*more changes on description overview
2024-04-02 14:43:49 +03:00
Sofia Papacharalampous 9d5d891701 styling changes
*description-overview
2024-04-02 14:02:54 +03:00
Efstratios Giannopoulos 9fad0abf73 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-02 13:07:28 +03:00
Efstratios Giannopoulos cc407c202a support default tenant as null 2024-04-02 13:07:00 +03:00
amentis ea97f8ca88 add reference id exist condition in reference-editor-dialog 2024-04-02 11:15:07 +03:00
Efstratios Giannopoulos 77d2dcdc39 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-01 18:36:19 +03:00
Efstratios Giannopoulos 9acc26667b tenant scope implementation 2024-04-01 18:36:03 +03:00
amentis ec65f0d76d description template small validation fixes 2024-04-01 18:13:50 +03:00
Sofia Papacharalampous 950b7ae918 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-01 16:16:04 +03:00
Sofia Papacharalampous 91ab347f40 styling changes
*close navbar dialogs on screen resize
2024-04-01 16:05:57 +03:00
amentis cbc3990cdf add reference dialog pop up 2024-04-01 16:05:28 +03:00
Sofia Papacharalampous 34fe15eb2f minor ui fixes 2024-04-01 16:04:33 +03:00
Sofia Papacharalampous cc68ed5188 styling changes
*annotations-dialog>user image
2024-04-01 14:11:21 +03:00
Sofia Papacharalampous 72c9137d8b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-04-01 12:14:27 +03:00
Sofia Papacharalampous 69b71ee253 styling fixes
*ngx-datatable header issue
2024-04-01 12:13:34 +03:00
amentis f4bf80aeb5 final description template preview changes 2024-04-01 12:10:29 +03:00
Efstratios Giannopoulos 621ddd0aee Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-04-01 11:34:03 +03:00
Efstratios Giannopoulos c5aac53ec8 pom clean up 2024-04-01 11:33:46 +03:00
Efstratios Giannopoulos 20f6ae27ed move configuration 2024-04-01 11:16:19 +03:00
Sofia Papacharalampous 52aaa9c213 styling changes
*reverse sizing changes for plans and descriptions listings
2024-04-01 10:23:54 +03:00
amentis b642ec52bc final description template preview changes 2024-03-29 18:41:27 +02:00
Sofia Papacharalampous 2e9d1366e9 styling changes
*annotations dialog
2024-03-29 18:09:26 +02:00
Sofia Papacharalampous 7e84ed0138 styling changes
*annotations dialog
2024-03-29 18:08:43 +02:00
Sofia Papacharalampous 5edcb24983 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-29 17:42:43 +02:00
Sofia Papacharalampous 8550d95128 styling changes
*deposit dialog buttons
2024-03-29 17:42:29 +02:00
amentis 7a3bdedb8c fix description template preview dialog 2024-03-29 17:37:08 +02:00
amentis c1509baf38 remove profile pom.xml 2024-03-29 17:11:45 +02:00
Efstratios Giannopoulos eba8bc9cb6 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-29 16:54:03 +02:00
Efstratios Giannopoulos c0aa671337 visibility changes 2024-03-29 16:53:47 +02:00
Sofia Papacharalampous 1a74939321 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-29 16:31:36 +02:00
Efstratios Giannopoulos aa6768e67d remove integration event descriptiontouched integration event 2024-03-29 16:27:27 +02:00
Sofia Papacharalampous 0b8f2e2fa7 styling changes
*annotations
2024-03-29 16:26:48 +02:00
amentis 2339b51c24 description template final preview changes (in progress) 2024-03-29 16:22:31 +02:00
Diamantis Tziotzios ba26a1bd67 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/description/editor/description-form/description-form-annotation.service.ts
2024-03-29 15:47:43 +02:00
Diamantis Tziotzios 0778842f38 small fixes 2024-03-29 15:46:19 +02:00
Sofia Papacharalampous f8b7bfc96c styling changes
*changed sizing for editors and listings
2024-03-29 14:41:19 +02:00
Efstratios Giannopoulos 102141aa0d update queues to use smallint enums 2024-03-29 14:32:47 +02:00
Efstratios Giannopoulos 21e6015f89 annotation authz changes 2024-03-29 11:47:27 +02:00
amentis 7d42777aa0 add Public Entity Doi 2024-03-29 11:06:47 +02:00
amentis 76d1d50850 description template fixes 2024-03-28 18:41:28 +02:00
Sofia Papacharalampous db68644eff styling changes
*annotations > added annotations count
2024-03-28 17:58:48 +02:00
Sofia Papacharalampous 2673857d74 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-28 17:01:47 +02:00
Sofia Papacharalampous 9af7cd64f1 styling changes
*annotations
2024-03-28 17:00:58 +02:00
Diamantis Tziotzios cf17c87a09 ui fix 2024-03-28 16:58:23 +02:00
Efstratios Giannopoulos 0c2d2e2f6a update configurations 2024-03-28 14:57:51 +02:00
Thomas Georgios Giannos adfc2f5dac Updating cache.yml and pom version 2024-03-28 14:46:36 +02:00
Efstratios Giannopoulos 198158a2c3 upgrade cache 2024-03-28 13:16:38 +02:00
amentis 2e7606a497 apply authz flags to dashboard 2024-03-28 13:10:51 +02:00
amentis 6d96e56ec8 apply entity doi active filter 2024-03-28 11:51:26 +02:00
Efstratios Giannopoulos 3e155de0d4 web client throw error on failed 2024-03-28 11:43:12 +02:00
Sofia Papacharalampous ccf3fa3111 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-28 10:56:42 +02:00
Efstratios Giannopoulos fc0cb21e57 deposit fixes 2024-03-28 10:52:27 +02:00
Sofia Papacharalampous ba7d690e39 styling changes
*plans>overview>deposit
2024-03-28 10:50:51 +02:00
Sofia Papacharalampous 662afe9827 styling changes
*plans > doi provider
2024-03-28 10:14:00 +02:00
Diamantis Tziotzios f4cbc3742c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-27 20:08:00 +02:00
Diamantis Tziotzios 04efb9c0b1 annotation counts added 2024-03-27 20:07:49 +02:00
amentis 993406e3f0 field builder fix 2024-03-27 19:02:14 +02:00
Diamantis Tziotzios 4d50aefacd Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-27 18:49:03 +02:00
Diamantis Tziotzios 7fcada8839 various ui changes 2024-03-27 18:48:58 +02:00
Efstratios Giannopoulos 308f1364af visibly performance improvements 2024-03-27 18:43:52 +02:00
Efstratios Giannopoulos 09c428bd99 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-27 18:21:05 +02:00
Efstratios Giannopoulos eb770ed65e visibility changes 2024-03-27 18:20:49 +02:00
Efstratios Giannopoulos d0ad9a8be0 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-27 18:13:16 +02:00
amentis d8ba1a00c7 small ui fix 2024-03-27 17:21:28 +02:00
Efstratios Giannopoulos 21fb68128d visibility rule changes 2024-03-27 17:09:10 +02:00
amentis 49e6e9ac9f small ui fix 2024-03-27 16:13:50 +02:00
amentis 839f74868e remove dmp fkey from Entity Doi table script 2024-03-27 16:03:50 +02:00
amentis 62f1946279 authz fixes 2024-03-27 14:57:02 +02:00
Diamantis Tziotzios d086e3128e added second zenodo deposit plugin for testing 2024-03-27 13:37:25 +02:00
amentis 833abddea2 multiple choice dialog small fix 2024-03-27 13:22:16 +02:00
amentis c6a38efd83 add file transformer service to description editor 2024-03-27 12:22:33 +02:00
amentis c5b1c89a7e add single reference description editor build form 2024-03-27 11:39:41 +02:00
Diamantis Tziotzios 1d5403fc25 no message 2024-03-27 10:55:49 +02:00
Diamantis Tziotzios 55361e6a60 no message 2024-03-27 10:44:35 +02:00
Diamantis Tziotzios d884f577f4 no message 2024-03-27 10:42:00 +02:00
Diamantis Tziotzios 1408cc0a59 no message 2024-03-27 09:54:04 +02:00
amentis 7ec9c0b3c6 make description reference persist and ui fixes 2024-03-26 18:44:59 +02:00
Sofia Papacharalampous 8206602387 styling changes
*annotations
2024-03-26 17:46:13 +02:00
Sofia Papacharalampous fe323d9b6a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-26 16:55:05 +02:00
Sofia Papacharalampous 7615e135e9 styling changes
*annotations
2024-03-26 16:54:49 +02:00
Efstratios Giannopoulos 9b30fb60d7 common model changes 2024-03-26 16:30:13 +02:00
Sofia Papacharalampous 8be851763b user-profile > unlink account 2024-03-26 15:57:59 +02:00
Sofia Papacharalampous dff8785e7b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-26 13:24:41 +02:00
Sofia Papacharalampous 5387a2c3df 1. added merge-account-confirm page 2. fixed config for google-auth-provider 2024-03-26 13:23:56 +02:00
amentis 12bf3aca8f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-26 11:29:48 +02:00
amentis 34189c5dcd insert values sql script 2024-03-26 11:28:07 +02:00
Sofia Papacharalampous e4516ef0ed dmp-editor ui
*contacts > toggle drag_handler icon on hover
2024-03-26 10:34:51 +02:00
Diamantis Tziotzios 2a515f095b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 18:37:48 +02:00
Diamantis Tziotzios 9176e68e33 languge en fixes 2024-03-22 18:37:10 +02:00
Efstratios Giannopoulos 30e3bbf9de Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 18:33:26 +02:00
Sofia Papacharalampous f7289126d0 styling changes 2024-03-22 18:07:40 +02:00
Sofia Papacharalampous a55128543a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 17:26:42 +02:00
Sofia Papacharalampous d310e24d7c minor styling changes and cleanup 2024-03-22 17:26:26 +02:00
amentis d69b30df49 ui fixes 2024-03-22 17:22:12 +02:00
Sofia Papacharalampous 5e1cbc94a0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 16:27:19 +02:00
Sofia Papacharalampous 190317a413 add-account functionality from my-profile and styling changes 2024-03-22 16:27:01 +02:00
amentis d4d06a9d47 lock and description template fixes 2024-03-22 15:18:51 +02:00
Sofia Papacharalampous 49164dac9b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 14:15:12 +02:00
Sofia Papacharalampous c2c42297e5 my-profile, added configuration for auth-provider icons 2024-03-22 14:15:01 +02:00
Efstratios Giannopoulos a90a4e1180 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 13:49:47 +02:00
Efstratios Giannopoulos 704c9f2018 file transformer changes 2024-03-22 13:49:26 +02:00
Diamantis Tziotzios 15cc2d16ca small ui fixes 2024-03-22 13:06:10 +02:00
Sofia Papacharalampous e6b4cd7786 styling changes
*dmp-editor>description-templates
2024-03-22 12:08:22 +02:00
Sofia Papacharalampous aed0f9de8e fixed sortable field
*dmp-blueprint-editor>description-template
2024-03-22 12:04:43 +02:00
Sofia Papacharalampous 0d40d56484 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-22 11:49:08 +02:00
Sofia Papacharalampous 0d9f6ec3c4 styling changes
*dmp-description
2024-03-22 11:48:54 +02:00
amentis ffb5d5ee7e fix lock bug 2024-03-22 11:45:31 +02:00
Sofia Papacharalampous b0cd53d74b styling changes
*dmp-user fields and semantics
2024-03-22 11:04:11 +02:00
amentis 4e61353f77 remove section selection from add description pop up and fix dashboard home page sizes 2024-03-22 09:41:35 +02:00
Diamantis Tziotzios 76e251c14d en language cleanup 2024-03-21 20:57:51 +02:00
Sofia Papacharalampous 9d1088d3a8 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-21 18:49:28 +02:00
Sofia Papacharalampous 923872d3b8 styling changes
*dmp-user-field > fit internal/external option
2024-03-21 18:49:11 +02:00
Efstratios Giannopoulos 598e27bf74 dmp user changes 2024-03-21 18:44:19 +02:00
Sofia Papacharalampous efd6f5df47 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-21 18:01:34 +02:00
Sofia Papacharalampous 6ca7b792e7 1. renamed user-field->dmp-user-field, 2. fixed sorting issue, 3. styling changes 2024-03-21 18:01:17 +02:00
amentis af329498cd small fix 2024-03-21 17:36:55 +02:00
Efstratios Giannopoulos 37e128ec15 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-21 15:37:06 +02:00
Efstratios Giannopoulos 67240affcf migration changes 2024-03-21 15:36:48 +02:00
Sofia Papacharalampous abb7aca6da Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-21 13:57:45 +02:00
Sofia Papacharalampous f1f67b9790 styling changes
*add-description popup and fixed dashboard button
2024-03-21 13:57:26 +02:00
amentis efc0db5500 ui changes for lock 2024-03-21 13:06:59 +02:00
Sofia Papacharalampous 0dbd652cf3 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-21 12:49:41 +02:00
Sofia Papacharalampous 279a7f97d2 styling changes
*dmp-blueprint-editor
2024-03-21 12:48:36 +02:00
Efstratios Giannopoulos e61f1afaf5 dmp version add not finalized 2024-03-21 12:12:12 +02:00
Diamantis Tziotzios 0dffbec480 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-21 10:33:12 +02:00
Diamantis Tziotzios 11911bd16e ui changes 2024-03-21 10:32:59 +02:00
Efstratios Giannopoulos f663fc24b7 add visibility to models 2024-03-21 10:17:39 +02:00
Efstratios Giannopoulos 709fecf1f1 add visibility to models 2024-03-21 10:16:55 +02:00
amentis ba33b29e41 fix lock and add entity locks admin page 2024-03-21 09:46:18 +02:00
Efstratios Giannopoulos 48a310e561 visibility changes 2024-03-20 18:40:34 +02:00
Efstratios Giannopoulos 2f283ae594 migration fixes 2024-03-20 18:39:47 +02:00
Diamantis Tziotzios 8719b56920 style changes 2024-03-20 18:06:05 +02:00
Sofia Papacharalampous 09351701ab styling changes
*dmp blueprint editor > sections
2024-03-20 17:06:26 +02:00
Sofia Papacharalampous 8e5c6e3579 styling changes
*finalize dmp dialog
2024-03-20 13:18:37 +02:00
Sofia Papacharalampous 15824ab952 styling changes
*descriptions>add description dialog
2024-03-20 13:15:11 +02:00
Sofia Papacharalampous a85c8a32ba clean up 2024-03-20 13:07:56 +02:00
Sofia Papacharalampous 3e4302bfe2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-20 13:07:03 +02:00
Sofia Papacharalampous 024680c0e6 styling changes
*mine-notification-listing dialog
2024-03-20 13:06:39 +02:00
Diamantis Tziotzios cdd753a5d8 no message 2024-03-20 12:36:51 +02:00
Diamantis Tziotzios 674ce60a29 ui fixes 2024-03-20 12:35:55 +02:00
amentis b66932b413 fix start new description dialog 2024-03-19 18:27:30 +02:00
Sofia Papacharalampous c425da9a5f styling changes
*mine-notifications
2024-03-19 17:59:47 +02:00
Sofia Papacharalampous 031e07b6e4 styling changes
*user-dialog
2024-03-19 17:45:54 +02:00
Sofia Papacharalampous 28ae763eb8 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-19 17:26:08 +02:00
Sofia Papacharalampous 558e1331f2 styling changes
*notification popup
2024-03-19 17:25:37 +02:00
Efstratios Giannopoulos 5801818a69 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-19 17:22:10 +02:00
Efstratios Giannopoulos c480e8e508 authz changes 2024-03-19 17:21:50 +02:00
Sofia Papacharalampous 551249af33 styling changes
*user-profile
2024-03-19 17:12:36 +02:00
Sofia Papacharalampous 5f52e646a5 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-19 14:01:26 +02:00
Sofia Papacharalampous ff40bee420 styling changes
*my profile
2024-03-19 13:57:30 +02:00
amentis ed3f3ebb27 build description persist model for validate endpoint 2024-03-19 13:54:23 +02:00
Efstratios Giannopoulos b49975931b authz changes 2024-03-19 12:48:17 +02:00
Efstratios Giannopoulos f19ac6c45e fix elastic configuration 2024-03-19 12:11:01 +02:00
Sofia Papacharalampous 553fd05040 styling changes
*warning popup (on my-descriptions>edit>finalize) and save-expandable-button (on my-descriptions>edit)
2024-03-19 11:13:32 +02:00
Sofia Papacharalampous 6444575de3 styling changes
*dmp editor
2024-03-19 10:50:33 +02:00
Sofia Papacharalampous 7bfff54d30 styling changes
*dmp editor
2024-03-19 10:47:50 +02:00
amentis 9a99c0c300 add validate description 2024-03-19 09:50:29 +02:00
amentis 54e194e078 view descriptions from dmp editor ui 2024-03-15 18:28:39 +02:00
Sofia Papacharalampous 030f59ac06 styling changes
*dmp-bluprint-editor header, dmp sections (in progress)
2024-03-15 18:05:00 +02:00
Sofia Papacharalampous c0aaa00eb5 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-15 15:50:35 +02:00
Sofia Papacharalampous 765440b509 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-15 15:49:44 +02:00
Sofia Papacharalampous 66bfbe24d8 styling changes
*faq
2024-03-15 15:49:18 +02:00
amentis 119ddebbcc small fix 2024-03-15 15:49:10 +02:00
amentis f71bc64ce5 change pop up description finalize dialog 2024-03-15 15:48:32 +02:00
Sofia Papacharalampous 327991c473 styling changes
*upload-file
2024-03-15 15:44:54 +02:00
amentis 65d62b2849 fix description authz 2024-03-15 15:16:20 +02:00
Efstratios Giannopoulos 388857cdce Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-15 14:14:27 +02:00
Efstratios Giannopoulos 266c05ee80 description authz 2024-03-15 14:13:55 +02:00
amentis b618bc8612 fix dashboard ui filters 2024-03-15 13:58:34 +02:00
Sofia Papacharalampous c479d86ee4 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-15 13:01:56 +02:00
Sofia Papacharalampous c0b197b645 styling changes
*faq dialog, user-fields, dmp-upload dialog in progress
2024-03-15 13:01:42 +02:00
amentis 498ffca73d dmp finalize changes 2024-03-15 11:39:01 +02:00
Thomas Georgios Giannos 5d24a38472 ui language update 2024-03-15 09:51:45 +02:00
amentis 3045130b27 add dmp finalize 2024-03-15 09:39:36 +02:00
Sofia Papacharalampous 5b23cc0aa6 styling changes
*invite user dialog
2024-03-14 18:15:25 +02:00
Sofia Papacharalampous 025933ee61 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-14 14:03:16 +02:00
Sofia Papacharalampous e20b992128 styling changes
*user profile dialog
2024-03-14 14:03:02 +02:00
Thomas Georgios Giannos c62a945a6a Updating annotation and notification services paths 2024-03-14 12:57:17 +02:00
Thomas Georgios Giannos 00815b4b80 Sending replies and new messages using the annotation dialog is now possible, displayed hierarchically as message threads, layout tweaks 2024-03-14 12:10:23 +02:00
Efstratios Giannopoulos 1bdafbc9e6 dmp authz changes 2024-03-14 11:41:32 +02:00
Efstratios Giannopoulos dadda72a09 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts
2024-03-14 11:26:21 +02:00
Efstratios Giannopoulos cef1e295f7 dmp authz changes 2024-03-14 11:23:46 +02:00
Diamantis Tziotzios f1a2c9f4c0 no message 2024-03-14 10:03:04 +02:00
Diamantis Tziotzios 4b585bc8c4 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-14 09:54:51 +02:00
Diamantis Tziotzios f1c70325a3 no message 2024-03-14 09:54:46 +02:00
amentis 9d6fbcd3ee dashboard changes and add finalize description 2024-03-14 09:36:07 +02:00
Alexandros Mandilaras f1290a1e56 Revert "try removing allow-credentials"
This reverts commit 2c4a0efe9c.
2024-03-13 19:47:07 +02:00
Alexandros Mandilaras 2c4a0efe9c try removing allow-credentials 2024-03-13 19:30:10 +02:00
Diamantis Tziotzios dfd2f3eeff dmp finalizatiion popup 2024-03-13 19:24:01 +02:00
Sofia Papacharalampous ea3b1b1558 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-13 18:00:09 +02:00
Sofia Papacharalampous 17071f9114 styling changes 2024-03-13 17:59:54 +02:00
Efstratios Giannopoulos e9cbf27295 authz changes 2024-03-13 17:45:25 +02:00
Sofia Papacharalampous 9aaaf226bb Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/assets/i18n/en.json
2024-03-13 17:30:51 +02:00
Sofia Papacharalampous cf1cc0a4fb styling changes 2024-03-13 17:26:47 +02:00
Efstratios Giannopoulos db68cd32e1 migration fixes 2024-03-13 17:04:42 +02:00
Efstratios Giannopoulos cbfe4ec4f2 authz changes 2024-03-13 17:04:17 +02:00
Thomas Georgios Giannos cf5acb2656 Annotation dialog ui update 2024-03-13 15:01:56 +02:00
Thomas Georgios Giannos 1b7ecf201e Getting annotation authors on query responses, ui update 2024-03-13 13:24:21 +02:00
Sofia Papacharalampous 99a870ff84 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-13 11:48:30 +02:00
Efstratios Giannopoulos dcb112f843 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-13 11:48:04 +02:00
Efstratios Giannopoulos ae56e2dbf2 fix counter backend 2024-03-13 11:47:48 +02:00
Diamantis Tziotzios 27aa7163e8 no message 2024-03-13 11:47:24 +02:00
Sofia Papacharalampous 162f680062 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-13 10:54:43 +02:00
Diamantis Tziotzios 83565a0e52 annotation popup changes 2024-03-13 10:45:22 +02:00
Sofia Papacharalampous 4e80c5cd5d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-03-13 10:05:33 +02:00
Efstratios Giannopoulos 5f88e835b7 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-13 10:02:25 +02:00
Efstratios Giannopoulos 52e1c42cd2 reference autz fix 2024-03-13 10:02:04 +02:00
Sofia Papacharalampous e7cb7f44d3 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/assets/i18n/en.json
2024-03-13 09:47:38 +02:00
Sofia Papacharalampous f754dbe661 no message 2024-03-13 09:46:16 +02:00
amentis a45dec7a5f fix backend dmp user and dashboard ui fixes 2024-03-12 18:47:57 +02:00
Efstratios Giannopoulos cfbd3233ec authz changes 2024-03-12 18:27:16 +02:00
Efstratios Giannopoulos a0554724a8 migration changes 2024-03-12 16:28:07 +02:00
amentis b8f14e957e add remove backend validators, fix public dmp/descriptions 2024-03-12 14:07:47 +02:00
Thomas Georgios Giannos 2cbb6297cb Fixing issues on annotation service 2024-03-12 13:10:37 +02:00
Efstratios Giannopoulos e3ac2394c2 common models changes 2024-03-12 11:07:47 +02:00
Efstratios Giannopoulos c592226e77 migration fix 2024-03-11 18:32:21 +02:00
Efstratios Giannopoulos a399b183f6 remove old files 2024-03-11 18:32:06 +02:00
Thomas Georgios Giannos 3fc805ab85 Sending annotation users event on dmp persist 2024-03-11 16:02:09 +02:00
Thomas Georgios Giannos 7347fbbd5a Adding annotation entity touch event 2024-03-11 15:55:52 +02:00
amentis 06e6ee406b fixes 2024-03-11 15:20:09 +02:00
Efstratios Giannopoulos 097d2832be Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
2024-03-11 15:03:04 +02:00
Efstratios Giannopoulos 403e618d04 deposit changes 2024-03-11 15:01:56 +02:00
Diamantis Tziotzios 60899bfea3 minor ui changes 2024-03-11 13:26:58 +02:00
amentis 83ee9a7e45 fixes 2024-03-11 09:47:03 +02:00
Efstratios Giannopoulos a73eef6529 migration fix 2024-03-08 18:36:37 +02:00
Efstratios Giannopoulos 49f3da1314 file transformer changes 2024-03-08 18:36:16 +02:00
Thomas Georgios Giannos d844d35392 Solving issues with Annotation persist 2024-03-08 17:38:03 +02:00
Thomas Georgios Giannos f37407063f Updating queue configurations 2024-03-08 11:47:37 +02:00
amentis 2c8982bfef fixes 2024-03-07 17:14:39 +02:00
Thomas Georgios Giannos 8141d40ecf Updating Annotation persist and validator 2024-03-07 14:22:29 +02:00
Thomas Georgios Giannos 50dd06b3f1 Updating annotation-web pom cite dependencies 2024-03-07 13:38:11 +02:00
Thomas Georgios Giannos 9d706c6e11 Adding new columns on Annotation entity 2024-03-07 13:36:27 +02:00
Thomas Georgios Giannos fa97c55862 Updating db script 00.01.058, adding 00.01.059 2024-03-07 13:34:56 +02:00
amentis bb6037afba ui fixes 2024-03-06 18:41:26 +02:00
Efstratios Giannopoulos f92f3c1a4d Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-06 18:18:24 +02:00
Efstratios Giannopoulos 535c07a1ad common models changes 2024-03-06 18:18:10 +02:00
Diamantis Tziotzios 69a1ea5584 no message 2024-03-06 14:39:10 +02:00
amentis 5851c2ff26 ui fixes and add dmpBlueprintVersionStatus lookup field 2024-03-06 11:53:40 +02:00
amentis 043d4d2e96 fix description template ui field types 2024-03-05 17:37:01 +02:00
amentis 6c82fcf8b0 builder component bean conflict fix 2024-03-05 13:59:53 +02:00
amentis 4ebabd68ab prefilling source changes 2024-03-05 13:41:58 +02:00
Efstratios Giannopoulos 0530373c83 change to common models for Deposit 2024-03-04 16:36:15 +02:00
amentis 5fc7241dc2 dmp fixes 2024-03-04 12:42:14 +02:00
amentis b84cd93ce6 dmp ui fixes 2024-03-01 18:50:46 +02:00
amentis f0c076fe4f prefilling source changes 2024-03-01 18:45:32 +02:00
amentis a5c194ac95 prefilling small changes 2024-03-01 11:14:27 +02:00
Efstratios Giannopoulos b1ebc6b35a Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-03-01 10:55:09 +02:00
Efstratios Giannopoulos 25adaf23e2 prefiling changes 2024-03-01 10:54:52 +02:00
Diamantis Tziotzios 806f763e2b dmp listing small changes 2024-03-01 10:54:02 +02:00
amentis 5da3c4f9b9 refactor tenant, notification-template ui editors 2024-03-01 09:38:11 +02:00
Efstratios Giannopoulos 46862e06cc Prefilling changes 2024-02-29 17:51:20 +02:00
amentis 96696f1a14 UI separate prefilling sources fixed Value fields 2024-02-29 15:18:55 +02:00
Efstratios Giannopoulos 656afc2045 migration changes 2024-02-29 12:38:57 +02:00
amentis b8c5edf4fb separate prefilling sources fixed Value fields 2024-02-29 11:46:59 +02:00
Efstratios Giannopoulos 1a8180c64e merge fix 2024-02-28 18:51:16 +02:00
Efstratios Giannopoulos ef50193175 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-02-28 18:49:24 +02:00
Efstratios Giannopoulos 8237e7936d migration changes 2024-02-28 18:48:46 +02:00
amentis fd77a44039 remove ExternalUrlConfigProvider 2024-02-28 17:37:56 +02:00
Diamantis Tziotzios 067e81207f prefill popup refactor 2024-02-28 15:41:36 +02:00
amentis be796bc68f prefilling sources ui changes 2024-02-28 13:30:12 +02:00
amentis 9989f5ca69 prefilling sources ui changes 2024-02-28 13:29:53 +02:00
amentis dad32207e3 add dmp blueprint prefilling source and validation prefilling source fixes 2024-02-27 16:27:26 +02:00
Thomas Georgios Giannos 141d6346fb Small fixes on annotation service client 2024-02-27 13:44:50 +02:00
Diamantis Tziotzios 90bcc40dde no message 2024-02-27 10:01:45 +02:00
amentis 57908f342b refactor reference type enums to prefilling source and ui code clean up 2024-02-26 19:47:20 +02:00
amentis 69b00a7a26 add prefilling source frontend 2024-02-26 19:40:31 +02:00
Efstratios Giannopoulos 0e7813cded migration changes 2024-02-26 10:53:11 +02:00
Efstratios Giannopoulos e0deaef950 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-02-23 18:55:51 +02:00
Efstratios Giannopoulos 098b80b3f4 migration changes 2024-02-23 18:55:35 +02:00
amentis adcf169b17 make referenceType api config independent and add PrefillingSource definition 2024-02-23 14:30:05 +02:00
Efstratios Giannopoulos dabbbf3fa4 remove external dataset field 2024-02-23 11:40:40 +02:00
Diamantis Tziotzios 3f8716ab0a prefilling source defintion classes 2024-02-23 10:32:18 +02:00
amentis fdf8e13af9 Add Prefilling Source Entity backend stack 2024-02-22 19:01:23 +02:00
Efstratios Giannopoulos a28323dcaf migration changes 2024-02-22 18:33:52 +02:00
Thomas Georgios Giannos 6ebbb885fb Adding anchors list on annotation entity lookup / query 2024-02-22 17:47:01 +02:00
amentis 40f56986b4 small dmp overview fixes 2024-02-22 15:05:09 +02:00
amentis 9f42381992 delete old DmpUserInviteType 2024-02-22 14:03:27 +02:00
amentis a387349aad create common dmpUser component for dmp ui and dmp overview popup invite 2024-02-22 13:57:42 +02:00
Thomas Georgios Giannos add1bb582f Adding annotation service config entry on config.json 2024-02-22 12:21:54 +02:00
Thomas Georgios Giannos 9982f89767 Adding annotation service to the UI client 2024-02-22 12:16:05 +02:00
Alexandros Mandilaras 3e5ea407e4 revert duplicate 2024-02-22 11:55:34 +02:00
Alexandros Mandilaras ec4cf780eb add revision propery 2024-02-22 11:52:47 +02:00
Alexandros Mandilaras b8cd2e3757 set version and groupid for core 2024-02-22 10:56:46 +02:00
Alexandros Mandilaras 63bc7f3685 typo fix 2024-02-22 10:26:33 +02:00
Alexandros Mandilaras 3d2018f59a copy core in Dockerfile also 2024-02-22 10:01:08 +02:00
Alexandros Mandilaras d7c480f0ee add dev profile 2024-02-22 09:40:50 +02:00
Alexandros Mandilaras a95ed902d5 comment dirs that dont exist in this branch 2024-02-22 09:34:49 +02:00
Alexandros Mandilaras 530623b931 build as name change 2024-02-22 09:32:38 +02:00
Alexandros Mandilaras 5bb31d0a59 upgrade argos Dockerfiles 2024-02-22 09:30:30 +02:00
Efstratios Giannopoulos f7babf1f0b migration changes 2024-02-21 18:38:28 +02:00
Efstratios Giannopoulos bc5f394ece Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-02-21 18:37:53 +02:00
Efstratios Giannopoulos 1bd8a9f09d reorder sql scripts 2024-02-21 18:37:24 +02:00
Thomas Georgios Giannos 14f5f689f9 Small migration scripts fixes 2024-02-21 18:00:25 +02:00
Thomas Georgios Giannos 5c1f6a096b Resolving migration scripts issues for annotation service tables regarding queue messages 2024-02-21 17:53:28 +02:00
Diamantis Tziotzios 446268719d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-21 17:52:59 +02:00
Diamantis Tziotzios c9c0ea614b reference types @ description editor 2024-02-21 17:52:50 +02:00
Thomas Georgios Giannos c6c3ed4a5f Adding migration scripts for annotation service tables 2024-02-21 17:48:03 +02:00
Thomas Georgios Giannos 0634324151 Adding dmp and description touched integration events 2024-02-21 17:45:48 +02:00
Diamantis Tziotzios 443ce153ee description editor fix 2024-02-21 17:21:17 +02:00
amentis cc6359e0fc add dmpUser section ui 2024-02-21 15:18:41 +02:00
amentis 38eef575d0 add dmp user type 2024-02-21 13:10:18 +02:00
amentis 4738a92f6e add section id to DmpUser 2024-02-21 12:46:24 +02:00
amentis a1394e6629 fix dmp save and view references 2024-02-21 11:03:11 +02:00
Alexandros Mandilaras 347ed854ae use revision env on notification 2024-02-21 10:57:54 +02:00
Alexandros Mandilaras c1c12ded5c apply same changes to notification-web 2024-02-21 10:49:06 +02:00
Alexandros Mandilaras eac744bd95 fix build name 2024-02-21 10:30:29 +02:00
Alexandros Mandilaras b0124d3800 even more pom fixes 2024-02-21 10:18:20 +02:00
Alexandros Mandilaras 7e7229424a more pom fixes 2024-02-21 10:14:30 +02:00
Alexandros Mandilaras d19fdc0898 add revision propery on pom 2024-02-21 10:08:46 +02:00
Efstratios Giannopoulos 07cdb91b9e renames 2024-02-21 09:55:29 +02:00
Alexandros Mandilaras d6cd18729f expose port on run stage 2024-02-20 17:47:29 +02:00
amentis be672aab57 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-20 17:00:29 +02:00
amentis 0cbcae3afe add dmpUser ui 2024-02-20 17:00:20 +02:00
Alexandros Mandilaras ece652e828 revert one change 2024-02-20 16:58:11 +02:00
Alexandros Mandilaras 6e1f1d110a annotation web pom fixes 2024-02-20 16:54:16 +02:00
Alexandros Mandilaras 26eb185ce9 fix jar names on dockerfile 2024-02-20 16:41:29 +02:00
Alexandros Mandilaras 2fb3332390 add revision env when copying from build-stage 2024-02-20 16:18:42 +02:00
Alexandros Mandilaras ece54563d0 fix annotation service Dockerfile 2024-02-20 16:01:31 +02:00
Alexandros Mandilaras 6f1f14a058 use java 21 2024-02-20 15:59:01 +02:00
Alexandros Mandilaras 16b53ba11d more Dockerfile fixes 2024-02-20 15:47:55 +02:00
Alexandros Mandilaras 6f2c8101f2 leave only dev server 2024-02-20 15:46:08 +02:00
Alexandros Mandilaras fcf6ee4087 Dockerfile fixes 2024-02-20 15:35:56 +02:00
Alexandros Mandilaras 2bbb2c35f6 bind cite maven arguments to xml environments 2024-02-20 15:21:09 +02:00
amentis c55f160d9b add semantics controller 2024-02-20 14:58:16 +02:00
amentis b009829d6f add semantics lookup 2024-02-20 11:39:58 +02:00
amentis d3659aad24 add semantics to dmp blueprint 2024-02-20 11:37:09 +02:00
Efstratios Giannopoulos 61560ec8ad reference changes 2024-02-20 11:28:33 +02:00
Efstratios Giannopoulos d50613f416 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-02-20 10:12:38 +02:00
Efstratios Giannopoulos eb228fa329 reference type changes 2024-02-20 10:11:49 +02:00
amentis 057f444ff1 description template semantics small fix 2024-02-20 09:38:32 +02:00
Efstratios Giannopoulos 9f36710276 update remote fetcher 2024-02-19 18:10:34 +02:00
Efstratios Giannopoulos a44fe43cf3 fix supportive materials to use config 2024-02-19 17:28:46 +02:00
amentis fd30b89f93 fetcher, ui small changes 2024-02-19 15:50:01 +02:00
amentis b343b76c9e reference type small changes 2024-02-16 17:42:01 +02:00
Diamantis Tziotzios 4f5b3cf647 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-16 11:49:04 +02:00
Diamantis Tziotzios bc8da3676a no message 2024-02-16 11:48:56 +02:00
amentis 720e5f96f3 reference type small changes 2024-02-16 11:24:28 +02:00
Diamantis Tziotzios 244c8f2afd reference type ui fixes 2024-02-15 18:36:46 +02:00
amentis aabcdd8c65 reference type changes 2024-02-15 16:43:12 +02:00
Thomas Georgios Giannos 20498001b3 Updating annotation entity, adding migration scripts (not all) 2024-02-13 18:31:01 +02:00
amentis 6e443c69fa small changes 2024-02-13 18:26:26 +02:00
Efstratios Giannopoulos 384b9883a8 more reference type changes 2024-02-13 18:16:59 +02:00
Efstratios Giannopoulos f826c2297b reference type changes 2024-02-13 15:54:28 +02:00
Thomas Georgios Giannos bd436e55b1 Adding annotation controller with persist / delete / query / lookup on annotation service, implementing annotation query 2024-02-13 12:48:55 +02:00
Efstratios Giannopoulos 40316781a2 RemoteFetcherService changes 2024-02-13 12:22:11 +02:00
Efstratios Giannopoulos 28d08d99e8 clean up code 2024-02-13 09:53:33 +02:00
Diamantis Tziotzios 8b267ef5ff Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-12 18:33:26 +02:00
Diamantis Tziotzios 366dcf6e01 Merge branch 'reference-type-refactor' into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/admin/description-template/editor/components/field/description-template-editor-field.component.html
#	dmp-frontend/src/app/ui/description/editor/description-form/components/form-field/form-field.component.html
#	dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.html
#	dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.ts
2024-02-12 18:33:21 +02:00
Thomas Georgios Giannos 30870c690f Adding annotation entity on annotation service 2024-02-12 18:00:50 +02:00
Efstratios Giannopoulos fef2df6014 Merge branch 'reference-type-refactor' of code-repo.d4science.org:MaDgiK-CITE/argos into reference-type-refactor
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ReferenceController.java
2024-02-12 17:44:46 +02:00
Efstratios Giannopoulos 957c1fad58 reference fetcher changes 2024-02-12 17:43:41 +02:00
Thomas Georgios Giannos 1eef4bfb1c Renaming packages on annotation service not to interfere with notification service 2024-02-12 11:49:37 +02:00
Diamantis Tziotzios 9f5002802b some frontend changes for reference type refactor 2024-02-09 22:46:05 +02:00
Thomas Georgios Giannos 5c98648e56 Adding new annotation service 2024-02-09 18:50:34 +02:00
amentis 075573ffaf small reapply validator fix 2024-02-09 16:16:46 +02:00
amentis 1a6e776b41 description template validation changes 2024-02-09 15:07:15 +02:00
Thomas Georgios Giannos 80096e9164 Refactoring public api dependencies from 'to be deleted' data and queryable modules 2024-02-09 13:24:23 +02:00
Thomas Georgios Giannos 510ec954fa Adding versions on description template query 2024-02-09 11:45:17 +02:00
Diamantis Tziotzios 174e57f62b more description editor changes 2024-02-08 19:48:14 +02:00
amentis 313f5e3b3c description template validation changes 2024-02-08 18:47:19 +02:00
Efstratios Giannopoulos 87dd56ff2c reference type refactor 2024-02-08 18:27:54 +02:00
Efstratios Giannopoulos 4f1b05ab20 reference-type-refactor 2024-02-08 18:12:47 +02:00
Diamantis Tziotzios e5946f90cd no message 2024-02-08 17:48:44 +02:00
Diamantis Tziotzios 0f4a80ef1e Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/description/editor/description-form/components/form-section/form-section.component.ts
2024-02-08 17:38:22 +02:00
Diamantis Tziotzios 6f74689d3f no message 2024-02-08 17:37:39 +02:00
amentis 2574cb424e Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/description/editor/description-editor.model.ts
2024-02-08 17:28:07 +02:00
amentis bd8a67f6bb description editor validation changes 2024-02-08 17:23:03 +02:00
Diamantis Tziotzios f6151b085f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-08 17:14:29 +02:00
Diamantis Tziotzios 98d6636855 description template ui changes 2024-02-08 17:14:25 +02:00
Thomas Georgios Giannos 45c8eb9768 Removing default value on version column on description template migration script (00.01.010) 2024-02-08 17:10:56 +02:00
Thomas Georgios Giannos 5d0c8d97e5 Removing new version from file option for description templates 2024-02-08 16:53:20 +02:00
Thomas Georgios Giannos fbf5f65318 Adding all versions listing and new version form for description templates 2024-02-08 16:48:50 +02:00
Thomas Georgios Giannos f255f61ee6 Adding all versions listing and new version form for description templates 2024-02-08 16:48:29 +02:00
Efstratios Giannopoulos 9d4e814d1c Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java
2024-02-08 11:07:37 +02:00
Efstratios Giannopoulos ab653e4f94 code clean up 2024-02-08 11:04:38 +02:00
amentis 2204119503 description template field type validation fix 2024-02-08 10:46:30 +02:00
Diamantis Tziotzios 0c2fb8cbef Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-08 09:40:24 +02:00
Diamantis Tziotzios 3a514af843 more description editor changes 2024-02-08 09:40:16 +02:00
amentis 305729eb48 description template validation changes 2024-02-07 18:44:17 +02:00
amentis 0a473bfd04 fix reference-field label bug 2024-02-07 18:32:16 +02:00
Thomas Georgios Giannos ce1cb02d43 Fixed issue with paths on dmp blueprint listing actions 2024-02-07 17:59:11 +02:00
Efstratios Giannopoulos f8251aaf43 bug fix 2024-02-07 17:23:47 +02:00
Thomas Georgios Giannos 6e767f1e5e Added all versions listing on dmp blueprints, actions menu on that listing not yet functional 2024-02-07 17:13:13 +02:00
amentis 02cd51b751 description template backend validator changes 2024-02-07 16:27:14 +02:00
amentis 3deb17dbea remove dmp blueprint editor old code 2024-02-07 16:03:45 +02:00
Diamantis Tziotzios 8bf262693f more description editor changes 2024-02-07 14:15:25 +02:00
Efstratios Giannopoulos 2b436be2cd description properties changes 2024-02-07 13:53:01 +02:00
Thomas Georgios Giannos 176d13d443 Removed new version from file on dmp blueprint listing options, added version column, fixed header and save button disabled conditions on dmp blueprint editor 2024-02-07 13:03:47 +02:00
amentis bc9691fa5d description templates validation small changes 2024-02-07 10:15:06 +02:00
Thomas Georgios Giannos 5802c2149d Fixed issue on dmp blueprint fields form, integrated new version endpoint 2024-02-06 20:41:57 +02:00
George Kalampokis ed2a29d14b Update file transformer base version 2024-02-06 18:05:39 +02:00
Efstratios Giannopoulos a52a3758d5 remove old logic 2024-02-06 16:38:18 +02:00
George Kalampokis fbe9683842 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-02-06 16:20:45 +02:00
Efstratios Giannopoulos 51285f722b remove old logic 2024-02-06 16:20:37 +02:00
George Kalampokis a22644be56 Merge remote-tracking branch 'origin/dmp-refactor-desc-templates' into dmp-refactoring 2024-02-06 16:18:58 +02:00
amentis b4ccd71f85 description templates fix reapply validation 2024-02-06 16:00:52 +02:00
Efstratios Giannopoulos f7dc3e5a32 description use storage file 2024-02-06 15:03:49 +02:00
Efstratios Giannopoulos fd974d3ee4 change description properties definition 2024-02-06 12:27:47 +02:00
George Kalampokis 3ac4ed1237 Apply minor file transformer fixes 2024-02-06 09:40:28 +02:00
amentis fc756a1780 description templates validation fixes (in progress) 2024-02-05 17:59:11 +02:00
amentis 8bf1e0c4d6 small fix 2024-02-05 10:26:41 +02:00
Diamantis Tziotzios 70e3c9fabc more description editor changes 2024-02-02 18:43:24 +02:00
Thomas Georgios Giannos 3de2c8cbbe Added versioning migration script for DmpBlueprintEntity 2024-02-02 15:10:02 +02:00
Thomas Georgios Giannos e4c1efe98c Added versioning fields on DmpBlueprintEntity and stack 2024-02-02 14:59:11 +02:00
Diamantis Tziotzios acc754823f description editor frontend changes 2024-02-02 10:29:38 +02:00
George Kalampokis 02a1437a91 Update File Transformer Builder 2024-02-01 18:15:06 +02:00
Efstratios Giannopoulos 5f6eab6e11 remove old code 2024-02-01 17:46:28 +02:00
Efstratios Giannopoulos 55fb0f3e00 remove old code 2024-02-01 17:29:04 +02:00
Diamantis Tziotzios fde91b6677 more description template changes 2024-02-01 17:14:03 +02:00
Efstratios Giannopoulos cba0741149 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-02-01 16:58:26 +02:00
Efstratios Giannopoulos 8524213d14 remove old code 2024-02-01 16:58:05 +02:00
Diamantis Tziotzios 8d5b399dba ui changes for description template editor 2024-02-01 16:57:40 +02:00
Efstratios Giannopoulos 46c19f61a1 update description properties json format 2024-02-01 16:40:11 +02:00
Thomas Georgios Giannos 1fc4e8add5 Added integration events and handlers on the main app outbox queue for tenants 2024-02-01 16:05:21 +02:00
Diamantis Tziotzios bef333ebc9 description templates editor ui fixes. 2024-02-01 15:41:05 +02:00
amentis da62f79a73 dmp editor add dmp associated user and placeholders 2024-02-01 14:42:23 +02:00
Thomas Georgios Giannos 20ffacad0d Fixing user deleter not deleting contact info and credentials 2024-02-01 13:30:47 +02:00
Thomas Georgios Giannos 30abd31974 Added data field on AssociatedProfilePublicModel on public api 2024-02-01 12:53:02 +02:00
Diamantis Tziotzios bd2a935606 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-02-01 11:37:12 +02:00
Diamantis Tziotzios 30902bbab8 ui fixes 2024-02-01 11:36:55 +02:00
Efstratios Giannopoulos 4a3f002672 move public api classes 2024-02-01 11:13:07 +02:00
Thomas Georgios Giannos 23c19888ca Added missing mapping for AssociatedProfilePublicModel on public api 2024-02-01 10:24:39 +02:00
Diamantis Tziotzios 5373e2d867 fixes 2024-01-31 21:25:15 +02:00
Diamantis Tziotzios 8b5a54814d description template changes in frontend 2024-01-31 21:16:39 +02:00
amentis 3c32e57aad reference type editor changes 2024-01-31 18:39:18 +02:00
Efstratios Giannopoulos b4f55a721c Merge branch 'dmp-refactor-desc-templates' into dmp-refactoring 2024-01-31 17:49:56 +02:00
Efstratios Giannopoulos bcd42d66b7 refactor description template xml 2024-01-31 17:48:59 +02:00
amentis 6eea7d8088 dmp editor small changes 2024-01-31 17:07:16 +02:00
Thomas Georgios Giannos 8f7a3cf768 Resolving issues with notification service user integration (on user creation) 2024-01-31 15:23:41 +02:00
Efstratios Giannopoulos 7e63abca50 refactor description template xml 2024-01-31 14:44:20 +02:00
Efstratios Giannopoulos 6a0d1a7c8b refactor description template xml 2024-01-31 14:33:24 +02:00
Diamantis Tziotzios 2ba9e146e5 more ui changes 2024-01-31 12:53:30 +02:00
Diamantis Tziotzios 078ca9e0cb minor ui fixes 2024-01-31 12:30:21 +02:00
amentis f604eac172 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-01-31 11:42:03 +02:00
amentis 59e70de4f8 small fix 2024-01-31 11:41:11 +02:00
Diamantis Tziotzios 95568c5f7c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts
#	dmp-frontend/src/assets/i18n/en.json
2024-01-31 11:37:28 +02:00
Diamantis Tziotzios 4c1372257a more ui changes 2024-01-31 11:36:12 +02:00
amentis 285978fb58 add contacts dmp editor ui 2024-01-31 11:27:36 +02:00
Diamantis Tziotzios 59c425a240 no message 2024-01-31 10:44:48 +02:00
Diamantis Tziotzios 5377b1db18 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-01-30 19:28:09 +02:00
Diamantis Tziotzios f296bc44f9 description template frontend changes 2024-01-30 19:27:55 +02:00
Efstratios Giannopoulos 4d1d712215 xml serializer changes 2024-01-30 18:34:22 +02:00
Efstratios Giannopoulos 16222fc02c bug fix 2024-01-30 17:23:18 +02:00
Efstratios Giannopoulos 268b82eb49 update description template xml 2024-01-30 16:31:03 +02:00
amentis 7d66c1e857 fix dmp contact builders 2024-01-30 15:24:15 +02:00
Efstratios Giannopoulos 2f48b3bae2 remove old code 2024-01-29 18:26:58 +02:00
Efstratios Giannopoulos aebc6056f9 UserRemovalIntegrationEvent changes 2024-01-29 18:10:55 +02:00
Thomas Georgios Giannos 80a3aa5616 Setting outbox calls on user updates / creations, removing not needed inbox events 2024-01-29 16:51:29 +02:00
Diamantis Tziotzios 953fa2710e ui fixes 2024-01-29 15:25:59 +02:00
Diamantis Tziotzios 4542189a26 autocomplete changes 2024-01-29 14:39:20 +02:00
amentis 8fb3556acb dmp blueprint editor fixes 2024-01-29 13:13:30 +02:00
Diamantis Tziotzios 37d349fa9b ui fixes 2024-01-29 11:47:12 +02:00
amentis ea6e2765ea add integration event component names 2024-01-29 09:37:25 +02:00
Efstratios Giannopoulos d89d8d4aa8 DescriptionTemplate version status fixes 2024-01-26 18:18:05 +02:00
Thomas Georgios Giannos a55d7c3692 Adding outbox events for users on the main app 2024-01-26 17:42:45 +02:00
Efstratios Giannopoulos f58832e3e9 migration changes 2024-01-26 14:41:19 +02:00
George Kalampokis ac932ffb05 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-01-26 12:55:08 +02:00
George Kalampokis c9121ebb1a Fix error if one of the file transformer clients doesn't respond 2024-01-26 12:54:55 +02:00
Efstratios Giannopoulos 2726d232dd upgrade blueprint xml 2024-01-26 12:42:46 +02:00
amentis 962840d738 change frontend blueprint description template group id 2024-01-26 12:17:01 +02:00
Efstratios Giannopoulos c05ccef28e change blueprint to user description template group id 2024-01-26 11:41:20 +02:00
Efstratios Giannopoulos 447059530d migration bug fix 2024-01-26 10:30:06 +02:00
Diamantis Tziotzios 4644d24874 various UI updates 2024-01-25 20:55:42 +02:00
Diamantis Tziotzios ae543324a4 dmp blueprint editor changes 2024-01-25 18:08:47 +02:00
amentis b6a85e151d add xml type to dmp blueprint entity 2024-01-25 15:50:52 +02:00
amentis f8fa4e519b fix dmp blueprint system fields ui 2024-01-25 15:49:34 +02:00
Thomas Georgios Giannos ecb82f5812 Removing certificate from repo 2024-01-25 13:15:15 +02:00
Thomas Georgios Giannos a369d36677 Fixing relative paths on notification service poms, changes not needed anymore since the project moved to a folder on its own 2024-01-25 13:12:25 +02:00
Thomas Georgios Giannos 39982aa264 Moving notification service to root folder 2024-01-25 13:01:23 +02:00
Thomas Georgios Giannos b6231feacd Adding configurable prefix for database table names, adding missing updated_at and is_active columns, updating db scripts 2024-01-25 12:28:21 +02:00
amentis 9b27d38026 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-01-24 17:51:09 +02:00
amentis 8828be7dfa fix dmp blueprint create and blueprint description template validators 2024-01-24 17:50:34 +02:00
Thomas Georgios Giannos bca0144111 Adding notification related user table scripts, altering existing foreign keys, aligning more entities 2024-01-24 17:49:50 +02:00
amentis 0faa5f731a remove notification from main app 2024-01-24 14:54:33 +02:00
Thomas Georgios Giannos 7a318da46a Fixing build issue 2024-01-24 14:26:08 +02:00
Thomas Georgios Giannos ca4a9db3f8 Started aligning notification service entities with the database, code cleanup 2024-01-24 14:24:58 +02:00
amentis 7d38ab742d update validators with list null or empty 2024-01-24 13:55:28 +02:00
amentis d0faa6713d update validators with list null or empty 2024-01-24 13:54:26 +02:00
amentis b5c31590d3 add description template editor validator (in progress) 2024-01-24 11:40:32 +02:00
Efstratios Giannopoulos c30f499f30 change notification interceptor 2024-01-24 10:29:44 +02:00
Efstratios Giannopoulos d5292f5cec reference migration changes 2024-01-23 17:20:46 +02:00
amentis f49f6d1c04 add dmp editor re apply validators 2024-01-23 14:12:50 +02:00
Thomas Georgios Giannos 6502221343 Setting userId from userScope on NotifyEvent in contact support service 2024-01-23 11:53:49 +02:00
amentis 470de047d8 add description template re apply validators and small changes 2024-01-22 18:16:45 +02:00
Thomas Georgios Giannos 21b5201bf2 Fixes on notification service NotifyIntegrationEventHandler 2024-01-22 18:03:34 +02:00
amentis 101a0aace9 add notification template editor validators 2024-01-22 11:35:40 +02:00
amentis c26c472ea8 add notification service persist validators 2024-01-22 11:27:24 +02:00
amentis dcf5a5d690 update notification service poms 2024-01-22 11:06:59 +02:00
Diamantis Tziotzios ef02fa806e various fixes 2024-01-19 18:28:53 +02:00
amentis d60ecc4f1c fix update form validators 2024-01-19 16:23:34 +02:00
Thomas Georgios Giannos 53062a879f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-01-19 15:12:44 +02:00
Thomas Georgios Giannos a56a9075b1 Fixes on notification service and core 2024-01-19 15:12:33 +02:00
Efstratios Giannopoulos 698c27747d change DmpPropertiesPersist to use map 2024-01-19 15:12:03 +02:00
Diamantis Tziotzios d4739ed1d0 small validation fix 2024-01-19 15:00:46 +02:00
Efstratios Giannopoulos 409b96f518 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-19 14:55:38 +02:00
Efstratios Giannopoulos c94d57f3a0 upgrade validations 2024-01-19 14:52:39 +02:00
Diamantis Tziotzios c4dac0e7d0 various ui fixes 2024-01-19 14:28:31 +02:00
amentis 9356352e7d fix reference type editor validators 2024-01-18 14:40:51 +02:00
Diamantis Tziotzios 5e32f1e74d Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-01-18 14:23:46 +02:00
Diamantis Tziotzios 7ad8077bc8 changes on the dmp editor frontend 2024-01-18 14:23:20 +02:00
amentis ace6ce1119 fix dmp blueprint editor validators 2024-01-18 11:59:42 +02:00
George Kalampokis 17dc3e47f1 Minor change 2024-01-18 10:31:46 +02:00
George Kalampokis 3f436846f6 Fix some merge issues 2024-01-18 10:28:16 +02:00
George Kalampokis e39d8d25b6 Merge branch 'dmp-refactoring-file-transformer-builder' into dmp-refactoring 2024-01-18 10:11:29 +02:00
George Kalampokis 3749365e87 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2024-01-18 10:10:23 +02:00
George Kalampokis cd696bf55a Yet another fix and set proper file transformer base version 2024-01-18 10:08:46 +02:00
amentis 3bd60509e7 fix persist validators 2024-01-17 18:20:39 +02:00
Thomas Georgios Giannos d0df9c7e79 Fixing missing parts on notification service migration 2024-01-17 17:36:22 +02:00
George Kalampokis 01d78cd491 Fix Front End's File Export UI 2024-01-17 14:47:32 +02:00
George Kalampokis aa75b3e3ab Update file transformer Service and add xml transformer config 2024-01-17 14:31:31 +02:00
Efstratios Giannopoulos 70c94c5bdc update validator package 2024-01-17 12:04:33 +02:00
Efstratios Giannopoulos b76a158824 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-17 11:20:33 +02:00
Efstratios Giannopoulos 200948d962 update validator package 2024-01-17 11:20:02 +02:00
Diamantis Tziotzios 85e299a4b8 backend dynamic field cleanup 2024-01-17 10:42:46 +02:00
Thomas Georgios Giannos aab7571763 Notification service upgrade to Spring Boot 3, fixing startup and dependency issues 2024-01-16 19:13:07 +02:00
George Kalampokis 7b963858f2 Finalize File Transformer Builder 2024-01-16 18:07:13 +02:00
Efstratios Giannopoulos b04c0aebab confirmRemoveCredential changes 2024-01-16 12:56:48 +02:00
Efstratios Giannopoulos 37aa6061a4 add locale config 2024-01-16 12:51:38 +02:00
Efstratios Giannopoulos 1828e28485 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-16 12:28:36 +02:00
Efstratios Giannopoulos d1cad30fcb add CredentialData 2024-01-16 12:26:29 +02:00
amentis 412c778d8c add backend validation in language, references, tenant,supportive material editor forms. 2024-01-16 11:55:46 +02:00
Diamantis Tziotzios d760209d20 more dmp editor frontend changes 2024-01-15 18:47:34 +02:00
Efstratios Giannopoulos 04381aec20 user credential changes 2024-01-15 18:03:12 +02:00
Efstratios Giannopoulos f6b7b6e00d add dmp properties models 2024-01-15 15:06:50 +02:00
Efstratios Giannopoulos 9b079e4d4d old code cleanup 2024-01-15 14:16:20 +02:00
Efstratios Giannopoulos 4da8c2a6a9 merge remove credential changes 2024-01-15 13:57:33 +02:00
Diamantis Tziotzios 0e61925f8d validators remove logic 2024-01-15 13:33:49 +02:00
amentis 0d65c38668 add in app notification fallback from db 2024-01-12 18:32:27 +02:00
Diamantis Tziotzios c7a3b58019 validator fixes 2024-01-12 18:22:06 +02:00
amentis 951f34e0cc fix notification, inapp notification permissions 2024-01-12 15:57:38 +02:00
Efstratios Giannopoulos 141ef488e5 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-12 15:00:58 +02:00
Efstratios Giannopoulos 4b9b5cc056 dmp reference changes 2024-01-12 15:00:34 +02:00
amentis 9e413d77f2 add user field in notification listing and small changes in other UI listings 2024-01-12 14:01:59 +02:00
Thomas Georgios Giannos a2edcd6a04 Notification service config update 2024-01-12 13:56:22 +02:00
Thomas Georgios Giannos 93ce7ecd6d Notification service config update 2024-01-12 13:55:50 +02:00
Thomas Georgios Giannos 2fb387825d Notification service inbox event handlers 2024-01-12 09:47:31 +02:00
Efstratios Giannopoulos df7a43d2de Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-11 18:23:39 +02:00
Efstratios Giannopoulos 4d60698327 public contact send changes 2024-01-11 18:23:21 +02:00
George Kalampokis 3d5be3a00a Add more missing field on File Transformer Builder 2024-01-11 18:02:38 +02:00
amentis 479159ff86 add notifications listing ui 2024-01-11 17:59:27 +02:00
Efstratios Giannopoulos ab8ad0be51 role editor bug fix 2024-01-11 16:40:53 +02:00
amentis 46ba3dcb62 mine in app notification listing changes 2024-01-11 12:16:50 +02:00
amentis cb7d5b342f fix read all inapp notifications query 2024-01-11 10:47:57 +02:00
amentis b2e2fc593f small change 2024-01-10 17:54:30 +02:00
amentis 17d97bb3b3 add inapp notification events in main app 2024-01-10 17:46:45 +02:00
amentis 708fa69c53 add more in app notification templates 2024-01-10 15:59:46 +02:00
amentis 29bea9f246 add inapp notification listing like filter and read all sql query 2024-01-10 15:12:26 +02:00
amentis c7ea2ce2db change in app notification listing 2024-01-10 14:24:32 +02:00
Efstratios Giannopoulos d0157fa0e5 bug fixes 2024-01-09 18:28:04 +02:00
Efstratios Giannopoulos e123338a2c Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-09 16:02:47 +02:00
Efstratios Giannopoulos 59aae92a0e elastic changes 2024-01-09 16:02:12 +02:00
amentis da657b667b add in app notification navbar 2024-01-09 15:52:07 +02:00
Efstratios Giannopoulos 1f92872158 elastic changes 2024-01-09 14:53:48 +02:00
amentis 3f85f1c9af add inapp notification ui 2024-01-08 18:32:07 +02:00
amentis c36aff22e8 inapp notification changes 2024-01-08 18:29:23 +02:00
George Kalampokis 742fa49a7c Fix File Transformer builder issues and add support for the File Storage Service 2024-01-08 17:54:30 +02:00
Efstratios Giannopoulos 3fc04a1e3a simplify description template fielddata 2024-01-08 16:10:29 +02:00
Efstratios Giannopoulos 371dcd5a61 elastic changes 2024-01-08 13:25:56 +02:00
Efstratios Giannopoulos 614fa9314a prefiling service refactor 2024-01-08 12:58:00 +02:00
Efstratios Giannopoulos 658310d8ce prefiling service refactor 2024-01-05 18:32:24 +02:00
George Kalampokis 71746419fc Add FileTransformer Builders 2024-01-05 18:06:16 +02:00
amentis 043b43b9be notification template UI small changes 2024-01-05 18:02:06 +02:00
Thomas Georgios Giannos e8553b1605 Resolving some validations applying based on status 'Finalized' 2024-01-05 17:10:13 +02:00
amentis 34df0b640c fix query available languages by ordinal 2024-01-05 16:27:37 +02:00
amentis 8807d42121 fix supportive material error 2024-01-05 15:55:18 +02:00
amentis a5f88db680 fix dmp invitation dialog 2024-01-05 15:33:27 +02:00
Thomas Georgios Giannos 9dd0405dc8 Resolving validation service implementation not available after cleanup of old code 2024-01-05 15:18:28 +02:00
Thomas Georgios Giannos b7d1424e0c Code cleanup 2024-01-05 14:02:22 +02:00
Thomas Georgios Giannos 897d099c2c Resolving issues with validators, removing old validation methods 2024-01-05 13:32:38 +02:00
amentis 7ba374d844 small fix 2024-01-05 11:41:57 +02:00
amentis a3fb03b41b fix contact support UI 2024-01-05 11:34:21 +02:00
Efstratios Giannopoulos c9640bcb54 add dmp associated user query 2024-01-05 11:05:40 +02:00
Efstratios Giannopoulos 1a567c9a81 authz changes 2024-01-04 18:09:09 +02:00
amentis 6a077d2b09 add more UI notification types 2024-01-04 16:58:10 +02:00
Efstratios Giannopoulos f8e1b4ab8b add contact support 2024-01-04 16:25:07 +02:00
amentis 065cd249c9 add notification type UI dropdown 2024-01-04 15:17:56 +02:00
Thomas Georgios Giannos 0e1a9c88b1 Implementing validators for Deposit request models (completed) 2024-01-04 13:31:14 +02:00
Efstratios Giannopoulos c056e04a89 remove old notification 2024-01-04 13:23:16 +02:00
Efstratios Giannopoulos a53396e38a remove content 2024-01-04 13:19:00 +02:00
Efstratios Giannopoulos 26ab1fb612 remove old notification 2024-01-04 13:11:13 +02:00
Efstratios Giannopoulos 5b18809da0 remove old lock 2024-01-04 13:05:06 +02:00
Efstratios Giannopoulos 73b0272672 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-04 12:56:23 +02:00
Efstratios Giannopoulos f253fd965c remove old refence classes 2024-01-04 12:55:42 +02:00
Thomas Georgios Giannos 29022ee1cd Implementing validators for User persist models (completed) 2024-01-04 12:39:31 +02:00
Thomas Georgios Giannos 18a4684859 Implementing validators for Tenant and other persist models (completed) 2024-01-04 11:51:56 +02:00
Efstratios Giannopoulos ccd7d069cb reference refactor 2024-01-04 11:23:13 +02:00
Thomas Georgios Giannos eb2b5d4df3 Implementing validators for Reference persist models (completed) 2024-01-04 10:15:29 +02:00
amentis 659c213360 fix notification template tiny editor plugins 2024-01-03 18:28:43 +02:00
Efstratios Giannopoulos 503fe2c3dc Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2024-01-03 18:22:41 +02:00
Efstratios Giannopoulos a4ced2be21 reference refactor 2024-01-03 18:22:24 +02:00
Thomas Georgios Giannos c4ec41bec1 Implementing validators for Reference persist models (not completed) 2024-01-03 18:09:14 +02:00
amentis 8bccb9a224 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2024-01-03 16:49:05 +02:00
amentis 438333786b fix formatting notification template UI 2024-01-03 16:46:57 +02:00
Thomas Georgios Giannos e5410f39fc Implementing validators for Reference persist models (not completed) 2024-01-03 16:45:57 +02:00
Efstratios Giannopoulos b87612c783 code cleanup 2024-01-03 16:21:39 +02:00
Efstratios Giannopoulos 71343c51e5 Add excludedTags, bug fixes 2024-01-03 14:06:26 +02:00
amentis 88b4bb0d2f add fallback notification template 2024-01-03 10:14:03 +02:00
Thomas Georgios Giannos 8d5b3d0426 Implementing validators for Dmp persist models (completed) 2024-01-02 17:39:50 +02:00
Thomas Georgios Giannos 3f554554fd Implementing validators for Dmp blueprint persist models (completed) 2024-01-02 14:10:35 +02:00
Thomas Georgios Giannos 1462b9944d Implementing validators for Description template related persist models (completed) 2024-01-02 11:50:32 +02:00
amentis 28238c7a6d change idpclaims.yml and add user interceptor 2024-01-02 11:06:10 +02:00
George Kalampokis 1fb516c8ef Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/core/model/file/file-format.model.ts
2024-01-02 09:52:47 +02:00
George Kalampokis e6278bff41 Add missing file format model 2024-01-02 09:52:03 +02:00
Diamantis Tziotzios de67f17603 more frontend changes 2023-12-29 18:36:02 +02:00
Diamantis Tziotzios 7b28f499a8 frontend cleanup 2023-12-29 17:04:16 +02:00
Diamantis Tziotzios 244e0e83a2 more frontend changes 2023-12-28 17:18:49 +02:00
Diamantis Tziotzios 2d377f6003 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-22 19:21:28 +02:00
Thomas Georgios Giannos 2a6b047327 Implementing validators for Description template related persist models (not completed) 2023-12-22 19:00:53 +02:00
Thomas Georgios Giannos 63ffeabe62 Implementing validators for Description related persist models, action confirmation and dmp clone persist (in progress) 2023-12-21 18:45:49 +02:00
Diamantis Tziotzios 17150126cb Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-21 09:46:12 +02:00
amentis 62970ebd35 add notification service to config.json 2023-12-20 18:08:28 +02:00
amentis a8ee89fbc4 notification template ui changes 2023-12-20 18:02:55 +02:00
Diamantis Tziotzios 4178e2c619 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-20 17:58:38 +02:00
George Kalampokis ea371cb1a1 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-12-20 10:49:56 +02:00
George Kalampokis acc4557836 Update file-transformer-base version 2023-12-20 10:49:42 +02:00
Thomas Georgios Giannos 306053acba Updating definitions info on migrated licenses 2023-12-20 10:21:44 +02:00
George Kalampokis 8d7f6582ee Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-12-20 09:35:25 +02:00
Diamantis Tziotzios 128fc3d29e Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-20 09:20:42 +02:00
Diamantis Tziotzios c6508a0082 description editor refactor - WIP 2023-12-20 09:20:38 +02:00
amentis b3b619d354 add UI Notification Template 2023-12-19 19:08:17 +02:00
amentis 35b0d58ec9 small changes in Notification Template 2023-12-19 19:05:19 +02:00
George Kalampokis 3b12e89ac2 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-12-19 18:09:15 +02:00
George Kalampokis 8f6d0cc33d Made File export menus dynamic and based on the available file transformers (no POM) 2023-12-19 18:09:09 +02:00
Thomas Georgios Giannos aa648cda1d Adding definitions info on migrated licenses 2023-12-19 16:37:54 +02:00
Thomas Georgios Giannos f9a47f2de7 Refactoring license migration 2023-12-19 15:57:13 +02:00
Efstratios Giannopoulos f09e031e0c move old validation logic 2023-12-19 15:46:31 +02:00
Efstratios Giannopoulos 4fa4cdc671 DescriptionTemplateTypePersist remove old validators 2023-12-19 15:11:22 +02:00
Efstratios Giannopoulos 68c56d70a4 new logic of validations 2023-12-19 14:54:17 +02:00
Thomas Georgios Giannos 3e97d0fdd1 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-19 10:38:54 +02:00
Thomas Georgios Giannos 6e0821f703 Updating file-transformer-base version to 0.0.1 2023-12-19 10:38:29 +02:00
Thomas Georgios Giannos 54a83e98ac Updating repositorydepositbase version to 0.0.1 2023-12-19 10:36:05 +02:00
Efstratios Giannopoulos bd64566e8c new validation logic 2023-12-18 18:23:37 +02:00
amentis ab68a0bd4d fix enums with database enum short logic 2023-12-18 14:22:48 +02:00
amentis 18a1d43f01 add notification template entity 2023-12-18 13:13:29 +02:00
George Kalampokis f06d3de1ec Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-12-18 12:57:21 +02:00
George Kalampokis 625a322467 Add File transformer integration 2023-12-18 12:55:19 +02:00
amentis 6a6840fc79 add custom required one field validator 2023-12-18 10:30:37 +02:00
Thomas Georgios Giannos 0fd552f29c Updating repositorydepositbase 1.0.4 -> 2.0.0 to resolve dependency clash between old and new core modules on the migration tool 2023-12-15 16:52:45 +02:00
Thomas Georgios Giannos 25e9f2a5c7 Updating repositorydepositbase 1.0.4 -> 2.0.0 to resolve dependency clash between old and new core modules on the migration tool 2023-12-15 16:52:26 +02:00
amentis 653991a066 change dmpInvitationExisting User template 2023-12-15 16:06:30 +02:00
Thomas Georgios Giannos a9eb2ff8a7 Resolving migration tool startup issues due to core module changes, change on handling of license json objects 2023-12-15 14:47:54 +02:00
amentis fd1d6c9b1a create dmpInvitationExistingUser notification and small changes 2023-12-15 11:51:08 +02:00
amentis bcd42e7ec1 change exception for confirm notifications requests 2023-12-15 10:15:00 +02:00
amentis 3990be182c add notifications to user,description,description-template 2023-12-14 18:19:43 +02:00
Thomas Georgios Giannos a213ca3e84 Migrating tags from elastic service 2023-12-14 17:37:43 +02:00
George Kalampokis f405fdc32a Add Maintenance on the Side bar 2023-12-14 15:02:13 +02:00
George Kalampokis 0b45dd6981 Refactor index-management (maintance refactor) 2023-12-14 14:34:39 +02:00
amentis e2c352bf00 add action confirmation entity and dmp notifications 2023-12-14 14:02:30 +02:00
Thomas Georgios Giannos e4d2cde296 Migrating licenses from dmps extra properties, while avoiding creating duplicates 2023-12-13 17:35:29 +02:00
amentis a72770868e rename notification templated 2023-12-13 12:25:26 +02:00
Efstratios Giannopoulos 8eda8402ab Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-12-13 11:46:02 +02:00
Efstratios Giannopoulos 048980ac39 zenodo model changes 2023-12-13 11:42:59 +02:00
Thomas Georgios Giannos baae057c6a Fixing issues on building migration tool 2023-12-12 18:06:30 +02:00
Thomas Georgios Giannos 9f781853a7 Resolving role naming conflicts 2023-12-12 17:51:40 +02:00
Thomas Georgios Giannos 24bfd69e4d Error handling on user role assignment service 2023-12-12 17:04:01 +02:00
amentis f47f9721fe remove mail service 2023-12-12 16:42:11 +02:00
Thomas Georgios Giannos f46543f1a4 Fix on role naming compatibility 2023-12-12 16:32:37 +02:00
Thomas Georgios Giannos b46c4e19e2 Extracting subject id from user credentials for role mapping on Keycloak Api 2023-12-12 16:17:08 +02:00
amentis a94473be49 small change 2023-12-12 11:49:52 +02:00
amentis 86628a59a7 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-12 10:17:12 +02:00
amentis f6100a8ea2 add inbox, outbox 2023-12-12 10:14:26 +02:00
Thomas Georgios Giannos a42e858f71 Small fix 2023-12-12 09:38:25 +02:00
amentis 2a00fe7ec1 change lock service 2023-12-11 18:55:20 +02:00
amentis 28fad3ccc4 remove mail service 2023-12-11 18:47:35 +02:00
Efstratios Giannopoulos aa8c73b6ed security changes 2023-12-11 15:00:21 +02:00
Thomas Georgios Giannos e70db447c8 Adding and removing users from Keycloak groups on role assignment 2023-12-11 10:56:40 +02:00
amentis 880e8c5aa8 refactor lock entity 2023-12-08 18:05:48 +02:00
Thomas Georgios Giannos 0c34502f08 Fixing issues on Dataset public Api mappers 2023-12-08 17:21:06 +02:00
Thomas Georgios Giannos 038c78fb04 Configuring groups for user roles 2023-12-08 13:27:04 +02:00
Thomas Georgios Giannos e7c7d1f991 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-08 11:48:46 +02:00
Thomas Georgios Giannos 08a5b49d1d Supporting client roles for users on Keycloak API service 2023-12-08 11:48:32 +02:00
amentis 903388c3ce add missing body fields 2023-12-08 11:45:45 +02:00
amentis 0c6e800118 add notification microservice 2023-12-08 11:28:19 +02:00
amentis 5e72a4197b add notification microservice 2023-12-08 11:25:07 +02:00
Diamantis Tziotzios 56bd12a4e3 more ui changes 2023-12-06 23:10:01 +02:00
Efstratios Giannopoulos c1b197ea30 Dmp/Description changes 2023-12-06 18:33:01 +02:00
Thomas Georgios Giannos b9eba9edcb Fix on entity doi query 2023-12-06 18:08:15 +02:00
Thomas Georgios Giannos 8227f60cda Updating EntityDoi db script removing problematic column entity_type and adding a new one with the same name of type smallint in order for the queries to work properly 2023-12-06 18:02:42 +02:00
Thomas Georgios Giannos 9ba8751564 Fixing issues in public API mappers 2023-12-06 17:38:03 +02:00
amentis 5825aa642a add tenant users on User model 2023-12-06 17:07:14 +02:00
Thomas Georgios Giannos 37c170ea54 Adding mappers for description definitions to PagedDatasetProfile model 2023-12-06 16:14:07 +02:00
amentis dd7007128b small fix 2023-12-06 16:12:30 +02:00
amentis 46dccbfbdb add more sql scripts 2023-12-06 14:23:21 +02:00
amentis 908c530922 add tenant to tables 2023-12-06 14:21:25 +02:00
Efstratios Giannopoulos 85bd0de2d5 statistics changes 2023-12-06 14:18:19 +02:00
amentis bee0e9f152 fix update_notification script 2023-12-06 13:08:49 +02:00
amentis 2dac2326ee rename NTF to ntf scripts 2023-12-06 11:34:24 +02:00
amentis ce0075f30a fix update_notification script 2023-12-06 09:41:20 +02:00
Diamantis Tziotzios 9e13eb4d01 frontend dashboard changes 2023-12-05 22:36:00 +02:00
amentis 9685b323e1 add more sql scripts for fixing 2023-12-05 18:51:44 +02:00
Efstratios Giannopoulos dfb4761276 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-12-05 18:14:08 +02:00
Efstratios Giannopoulos c286838a30 add DashboardStatistics 2023-12-05 18:13:40 +02:00
amentis d2d6013389 add more sql scripts for Notification service 2023-12-05 16:57:06 +02:00
Efstratios Giannopoulos 2fb99d2fe7 add getMyRecentActivityItems 2023-12-05 16:05:37 +02:00
Efstratios Giannopoulos 2dee73ce1f support iso dates 2023-12-05 12:52:59 +02:00
amentis 5047d3b154 add sql scripts 2023-12-05 11:56:25 +02:00
Efstratios Giannopoulos bc0d39a72f bug fixes 2023-12-05 11:32:17 +02:00
Diamantis Tziotzios 46e56111f0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-04 19:38:52 +02:00
Diamantis Tziotzios ad1539af59 dmp overview page refactor 2023-12-04 19:37:52 +02:00
Efstratios Giannopoulos 1a76942b5f add Description PersistStatus 2023-12-04 18:38:23 +02:00
Diamantis Tziotzios a72c7001f9 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-04 18:26:31 +02:00
Efstratios Giannopoulos e441fc958c bug fix 2023-12-04 18:19:27 +02:00
Efstratios Giannopoulos 418d36dd67 dmp changes 2023-12-04 18:16:57 +02:00
Diamantis Tziotzios 84726a250f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-04 17:56:35 +02:00
Diamantis Tziotzios 7c9e36341b more ui changes 2023-12-04 17:56:12 +02:00
Efstratios Giannopoulos df87dbf76c use new subquery 2023-12-04 17:27:47 +02:00
Diamantis Tziotzios 567b09a26b Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-12-01 19:18:48 +02:00
Diamantis Tziotzios 6e997b300d refactored DmpListing, DescriptionListing, DescriptionOverview. 2023-12-01 19:18:41 +02:00
amentis 3ea60a4b43 add user roles listing filter 2023-12-01 13:18:20 +02:00
amentis 04d97fc2e2 add reference listing filter 2023-12-01 10:12:09 +02:00
amentis 63e5cde313 fix listing filters 2023-11-30 17:28:05 +02:00
Efstratios Giannopoulos 5965acc4aa migration changes 2023-11-30 14:09:20 +02:00
Efstratios Giannopoulos 3a70b4d700 bug fixes 2023-11-30 13:38:36 +02:00
Efstratios Giannopoulos 2d5c9df855 support xml columns 2023-11-30 13:38:22 +02:00
Efstratios Giannopoulos 2a766dc37f storage file fixes 2023-11-30 13:37:56 +02:00
amentis 4417532935 add checkbox to language editor UI 2023-11-30 10:37:58 +02:00
Diamantis Tziotzios 40ae38e8d9 more ui changes 2023-11-30 10:12:41 +02:00
Efstratios Giannopoulos 17d57dbc7a bug fix 2023-11-29 17:49:00 +02:00
Efstratios Giannopoulos 345c020869 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-29 17:46:19 +02:00
Efstratios Giannopoulos b40134e6a7 user info changes 2023-11-29 17:41:15 +02:00
amentis f1f987a157 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-29 17:17:23 +02:00
amentis 37349d8fca fix sql script 2023-11-29 17:07:40 +02:00
Thomas Georgios Giannos e3d00fb72e Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-29 17:01:07 +02:00
Thomas Georgios Giannos 351e2cb78d Updating pom for keycloak 2023-11-29 17:01:03 +02:00
Efstratios Giannopoulos 0decfb1474 migration fixes 2023-11-29 16:56:25 +02:00
amentis 388af4410d add sql script 2023-11-29 16:41:12 +02:00
Thomas Georgios Giannos baaddb6284 Adding keycloak service and dependency 2023-11-29 16:12:56 +02:00
amentis 10923d4d48 add ordinal in Language Entity 2023-11-29 16:06:40 +02:00
amentis cabb35cf19 add ordinal in Language Entity 2023-11-29 16:05:00 +02:00
amentis 8bcc11d9a1 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-29 15:38:36 +02:00
amentis 63a8820681 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/ui/supportive-material-editor/supportive-material-editor.component.html
2023-11-29 15:32:03 +02:00
Diamantis Tziotzios d436fb4b2c script fix 2023-11-29 15:31:51 +02:00
amentis 2c914ead90 add ordinal in Language Entity 2023-11-29 15:27:27 +02:00
Diamantis Tziotzios b7ff88be3a Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-29 15:26:43 +02:00
Diamantis Tziotzios 7430477903 more frontend changes 2023-11-29 15:26:40 +02:00
Thomas Georgios Giannos bf07fed0f8 Refactoring on Dataset public API 2023-11-29 14:34:37 +02:00
Thomas Georgios Giannos 2fae4f41a7 Dmp on Dataset mapped for public API 2023-11-29 13:45:35 +02:00
Thomas Georgios Giannos f5f5d6345f Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-29 13:10:00 +02:00
Thomas Georgios Giannos b4d7312751 Dataset references mapped for public API 2023-11-29 13:07:46 +02:00
amentis 3dd7a42224 add query available language endpoint 2023-11-29 12:44:43 +02:00
Thomas Georgios Giannos 5b5f547b27 Dataset listing model mapper implemented for public API 2023-11-29 11:57:49 +02:00
Thomas Georgios Giannos c6642a726e Preparing fetching datasets for public API 2023-11-29 11:30:38 +02:00
amentis 439efbd98a small fix 2023-11-29 10:46:49 +02:00
amentis 126d47f9e4 add language file fallback method 2023-11-28 19:10:04 +02:00
amentis 3d5c718d52 change supportive material editor model 2023-11-28 19:06:15 +02:00
Thomas Georgios Giannos 319e1f0dca Preparing fetching of associated dataset profiles for dmps for public API 2023-11-28 18:04:26 +02:00
Thomas Georgios Giannos b3bc801cd4 Fetching dois for dmps for public API 2023-11-28 17:29:25 +02:00
Efstratios Giannopoulos d3d57e8838 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-28 17:24:47 +02:00
Efstratios Giannopoulos 337556265e add storage 2023-11-28 17:23:56 +02:00
Thomas Georgios Giannos e6cba30e4c Fetching funders on grants for dmps for public API 2023-11-28 16:50:00 +02:00
Thomas Georgios Giannos b00b048632 Fetching and building organizations for dmps for public API 2023-11-28 16:20:31 +02:00
Thomas Georgios Giannos 693f1dba7f Fetching and building grants for dmps for public API 2023-11-28 15:52:17 +02:00
Diamantis Tziotzios eb19b9a7d5 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/core/common/enum/permission.enum.ts
2023-11-28 15:16:36 +02:00
Diamantis Tziotzios 00e5c69fac refdactored users listing 2023-11-28 15:15:16 +02:00
Efstratios Giannopoulos 1b92af8762 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-28 15:09:01 +02:00
Efstratios Giannopoulos 75d31cf627 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
2023-11-28 15:07:41 +02:00
Efstratios Giannopoulos c5461dbc62 add storage service 2023-11-28 15:05:58 +02:00
Thomas Georgios Giannos df2086a0a7 Fetching and building researchers for dmps for public API 2023-11-28 15:05:51 +02:00
Thomas Georgios Giannos 92956f6598 Fetching and building users for dmps for public API 2023-11-28 14:25:29 +02:00
Thomas Georgios Giannos 0166bf8ece Refactoring and preparing for dmp and dataset conversion for public API 2023-11-28 12:54:08 +02:00
amentis 61218ed220 add Language entity and UI 2023-11-27 18:22:13 +02:00
Thomas Georgios Giannos 6fb601929a Migrating everything is needed for the public api refactor 2023-11-27 17:33:24 +02:00
amentis 516e639153 small fix 2023-11-27 14:58:29 +02:00
amentis 39802c6e5b add Language.sql 2023-11-27 14:51:44 +02:00
Thomas Georgios Giannos c3bb9b8ffa Entities cleanup 2023-11-27 14:46:30 +02:00
Efstratios Giannopoulos 8dbf275f3a migration changes 2023-11-27 12:20:15 +02:00
amentis 6b4424c634 add reference ui 2023-11-24 19:12:39 +02:00
Diamantis Tziotzios e6b22a5b27 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-24 18:42:32 +02:00
Diamantis Tziotzios 396c6e5b95 more frontend changes 2023-11-24 18:42:23 +02:00
Efstratios Giannopoulos aa0a86b4d1 migration changes 2023-11-24 18:19:22 +02:00
Diamantis Tziotzios 8a20687491 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-24 17:58:25 +02:00
Efstratios Giannopoulos c67e4c8c9f Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpDatasetProfileMigrationService.java
#	dmp-migration-tool/web/src/main/java/eu/old/eudat/publicapi/migration/MigrationController.java
2023-11-24 17:26:18 +02:00
Thomas Georgios Giannos ccd650217b Fix on deleting duplicates from DmpDescriptionTemplates, delete all but one 2023-11-24 17:19:20 +02:00
Efstratios Giannopoulos c6f10b6a29 add user contact migration 2023-11-24 17:18:28 +02:00
Thomas Georgios Giannos 8ee149f094 Fixing duplicate selection from DmpDescriptionTemplates 2023-11-24 16:46:30 +02:00
amentis 3d18ed1fa6 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-24 15:12:26 +02:00
amentis d554e87093 add tenant config 2023-11-24 15:12:02 +02:00
Thomas Georgios Giannos 0934774b86 Adding UserDMP migration 2023-11-24 15:11:43 +02:00
Diamantis Tziotzios 9d37900a86 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-24 13:56:15 +02:00
Thomas Georgios Giannos 58d224b739 Small fix 2023-11-24 12:45:29 +02:00
Efstratios Giannopoulos e698b198e7 add description template to description 2023-11-24 12:39:26 +02:00
Thomas Georgios Giannos c60e90d638 Removing possible duplicate records after DmpDatasetProfile migration 2023-11-24 12:15:57 +02:00
Thomas Georgios Giannos a6d175dcb3 Adding migration for reference middle tables 2023-11-24 11:36:43 +02:00
Diamantis Tziotzios 1914444ff8 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-23 18:33:53 +02:00
Efstratios Giannopoulos e4801f94ed migration service changes 2023-11-23 18:09:17 +02:00
Diamantis Tziotzios 07daf34077 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-23 16:54:47 +02:00
Thomas Georgios Giannos eae9a5f7d3 Refactor DatasetMigrationService 2023-11-23 15:27:02 +02:00
Thomas Georgios Giannos f38febc22b Refactor DatasetMigrationService 2023-11-23 15:23:49 +02:00
Diamantis Tziotzios 3dbfc18fd6 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-23 15:06:16 +02:00
Efstratios Giannopoulos 9433beaaa6 dmp migration changes 2023-11-23 14:40:44 +02:00
Efstratios Giannopoulos e47a370088 reference migrate 2023-11-23 12:36:24 +02:00
Thomas Georgios Giannos 1e92d86356 Cleanup 2023-11-23 10:34:44 +02:00
Thomas Georgios Giannos 2936cbbb7a Adding dataset migration service 2023-11-23 10:26:40 +02:00
Diamantis Tziotzios c779bd00f0 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-23 09:48:21 +02:00
Efstratios Giannopoulos d426711904 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-22 18:35:22 +02:00
Efstratios Giannopoulos be4e723911 detach entities for migration 2023-11-22 18:34:51 +02:00
amentis 18452725bc add Tenant Entity 2023-11-22 18:01:58 +02:00
Efstratios Giannopoulos 93bbde9623 migration changes 2023-11-22 17:52:04 +02:00
Diamantis Tziotzios dbd4e6b549 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-22 17:00:54 +02:00
amentis f2c03c71cb addTenant.sql script 2023-11-22 16:39:14 +02:00
Diamantis Tziotzios 231efd05ac Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts
2023-11-22 15:55:46 +02:00
Diamantis Tziotzios 6b95730280 pull commit 2023-11-22 15:54:14 +02:00
Efstratios Giannopoulos ac91b62d63 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-22 13:32:21 +02:00
Efstratios Giannopoulos 6f2d4f016d fix sql scripts 2023-11-22 13:31:00 +02:00
amentis 4187943654 add reference type auth enabled 2023-11-22 12:56:17 +02:00
amentis 62a5a6fe1d Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-11-22 10:36:01 +02:00
amentis c19920afb2 add reference, referenceType, SupportiveMaterial 2023-11-22 10:29:29 +02:00
Thomas Georgios Giannos ad75ee1238 Small fix 2023-11-22 10:25:05 +02:00
Thomas Georgios Giannos 17b0f9bc06 Dmp migration refactored on DmpMigrationService 2023-11-22 10:24:30 +02:00
Efstratios Giannopoulos db6cb44ff8 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-migration-tool/web/src/main/java/eu/old/eudat/publicapi/migration/MigrationController.java
2023-11-21 18:35:41 +02:00
Efstratios Giannopoulos a7f70568bb migrate organization reference 2023-11-21 18:33:26 +02:00
Thomas Georgios Giannos dc381c197d Adding properties to the migrated dmps 2023-11-21 17:33:54 +02:00
Efstratios Giannopoulos 08ea46f79b migration changes 2023-11-21 17:16:32 +02:00
Efstratios Giannopoulos 8536d8d03a dmp changes 2023-11-21 14:26:14 +02:00
Efstratios Giannopoulos f92b0c238a Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-21 13:16:50 +02:00
Efstratios Giannopoulos 91af36cdcd config updates 2023-11-21 13:16:33 +02:00
Efstratios Giannopoulos c0e57b363d elastic manage service 2023-11-21 13:15:31 +02:00
amentis e1985368aa add dependencies to reference type source base 2023-11-21 12:51:26 +02:00
Efstratios Giannopoulos e62d765796 code clean up 2023-11-21 12:15:29 +02:00
Efstratios Giannopoulos 64d92e864d user clean up 2023-11-21 11:49:15 +02:00
Thomas Georgios Giannos f6a6bab04d Migration controller refactoring 2023-11-21 11:41:11 +02:00
Diamantis Tziotzios 033492a25c Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-21 10:07:50 +02:00
Diamantis Tziotzios 8908936ec6 small fix 2023-11-21 10:07:46 +02:00
Thomas Georgios Giannos 99bf7d29f9 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-21 10:00:25 +02:00
Thomas Georgios Giannos eb9ae3af48 Allignment with core changes 2023-11-21 10:00:18 +02:00
Efstratios Giannopoulos ff93e4e39b user table sql scripts 2023-11-20 17:18:12 +02:00
Thomas Georgios Giannos 4d01463c72 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-20 17:14:54 +02:00
Thomas Georgios Giannos caf7ec09c4 Adding converter for Instants to Dates 2023-11-20 17:11:57 +02:00
Efstratios Giannopoulos 6de7268465 user changes 2023-11-20 17:09:24 +02:00
Efstratios Giannopoulos 3b3dc6fffd sync db tables for description 2023-11-20 17:08:43 +02:00
Thomas Georgios Giannos 3a033a655b Fixing issues, resolving column naming conflicts between old and new entity classes 2023-11-20 16:44:55 +02:00
Thomas Georgios Giannos ea7fa62922 Migrating packages to resolve conflicts with the refactored project (part 2) 2023-11-20 12:29:24 +02:00
Thomas Georgios Giannos ee4636e508 Migrating packages to resolve conflicts with the refactored project 2023-11-20 12:19:02 +02:00
Thomas Georgios Giannos 75471e5587 Resolving conflicts with database changes relating with DMPs entities and the new refactored code 2023-11-20 11:12:45 +02:00
Efstratios Giannopoulos 91f7dbd785 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-17 19:02:02 +02:00
Efstratios Giannopoulos a97976296b user refactor 2023-11-17 19:01:44 +02:00
Diamantis Tziotzios 63f9fead96 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-17 09:37:37 +02:00
Thomas Georgios Giannos 765eff356d Removing 'old' migration tool folder 2023-11-16 17:26:41 +02:00
Thomas Georgios Giannos 6e65d22fce Adding new version of dmp-migration-tool to resolve java version issues, moving previous to 'old' folder to delete later 2023-11-16 17:25:22 +02:00
Diamantis Tziotzios df58a254b2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-16 15:41:01 +02:00
amentis f2ee851bab reference type persist and editor 2023-11-16 15:40:25 +02:00
Diamantis Tziotzios f1d2b9d8d4 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-11-16 15:37:41 +02:00
Diamantis Tziotzios 22bd07451a lang change 2023-11-16 15:37:36 +02:00
Efstratios Giannopoulos dec8f6354c remove old data entities 2023-11-16 14:01:39 +02:00
Efstratios Giannopoulos 7c8b385146 add elastic dev config 2023-11-16 10:43:41 +02:00
Efstratios Giannopoulos 6c49b7e7c2 description persist 2023-11-15 17:06:49 +02:00
amentis e9ae5126f8 fix reference type persist and editor 2023-11-15 16:09:24 +02:00
Thomas Georgios Giannos 9cff8fb762 Adding .gitignore on dmp-migration-tool to ignore build files 2023-11-15 15:35:03 +02:00
Efstratios Giannopoulos 5cfdc4be07 elastic changes 2023-11-15 14:34:48 +02:00
Thomas Georgios Giannos 3aa6cdaf29 Adding new dmp migration tool folder, resolving class conflicts to be able to build the tool 2023-11-15 13:49:00 +02:00
Efstratios Giannopoulos 332ee8c59e add version status to dmp, description template 2023-11-14 18:18:20 +02:00
Efstratios Giannopoulos e103f40763 change queryable dependencies 2023-11-14 16:27:46 +02:00
Efstratios Giannopoulos 0e1408e532 add public description 2023-11-14 16:08:48 +02:00
Efstratios Giannopoulos 1324029804 remove old elastic 2023-11-14 13:41:57 +02:00
Efstratios Giannopoulos f0264eefb9 elastic changes 2023-11-14 12:24:14 +02:00
Thomas Georgios Giannos 34ce4f6928 Adding export on dmp service and controller (existing service not yet wired up) 2023-11-14 11:44:01 +02:00
Thomas Georgios Giannos d50a058296 Small fix 2023-11-13 17:05:25 +02:00
Thomas Georgios Giannos 5edaf1c74e Adding dmp user association, adding finalization status check on persist workflow 2023-11-13 16:46:35 +02:00
Thomas Georgios Giannos ff35ad6aab Renames on 'datas' 2023-11-13 09:39:31 +02:00
Thomas Georgios Giannos 1cee5fb49f Various fixes 2023-11-10 19:11:15 +02:00
Thomas Georgios Giannos 0c4cf467d8 Adding description cloning method on service, adding missing functionality on dmp new-version and cloning, dmp persist fix 2023-11-10 16:13:55 +02:00
amentis c2c1d834cc fix reference type persist and editor 2023-11-10 13:03:08 +02:00
amentis 3ecb1ed982 rename reference type definition fields and fix listing 2023-11-09 18:25:35 +02:00
amentis 33672e5ce8 create UI Reference Type Editor, Listing 2023-11-09 15:43:08 +02:00
Thomas Georgios Giannos 009dad8cba Adding clone dmp persist model, exposing new version and clone methods to the API 2023-11-09 14:10:32 +02:00
Efstratios Giannopoulos 41fc3407eb description refactor 2023-11-09 11:29:42 +02:00
Efstratios Giannopoulos 7ef668eede Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/query/DmpUserQuery.java
2023-11-08 18:45:01 +02:00
Efstratios Giannopoulos c1b9e72c2f query authz first implementation 2023-11-08 18:42:52 +02:00
Thomas Georgios Giannos dab5986688 Adding new version dmp persist model, moving associated users and references to new dmp with new version 2023-11-08 17:13:07 +02:00
Efstratios Giannopoulos 0bbad595f5 update logging, db configurations 2023-11-08 13:37:16 +02:00
Thomas Georgios Giannos e22ba13caf Adding user as owner on new dmp persist 2023-11-08 11:45:33 +02:00
Efstratios Giannopoulos e81e6dd89a Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/model/builder/DmpBuilder.java
2023-11-07 17:08:44 +02:00
Efstratios Giannopoulos 8cd8da6d98 add public models 2023-11-07 17:07:24 +02:00
Thomas Georgios Giannos 24aba556ef Small fix 2023-11-07 16:34:26 +02:00
Thomas Georgios Giannos 3e15749b56 Added dmp users on dmp builder 2023-11-07 16:18:18 +02:00
Thomas Georgios Giannos 4e99fb08e9 merge 2023-11-07 16:12:54 +02:00
Thomas Georgios Giannos 0e6a59ef3d Added dmp users on dmp builder 2023-11-07 16:05:12 +02:00
Efstratios Giannopoulos 0644e61962 description refactor 2023-11-07 14:53:36 +02:00
Thomas Georgios Giannos 4a8c3640de Added dmp user censor 2023-11-07 14:44:26 +02:00
Thomas Georgios Giannos 001cd0828b Added dmp description template deletions on description template deleter 2023-11-07 14:32:37 +02:00
amentis cfb7da7968 fix referenceTypePersist 2023-11-07 14:02:28 +02:00
amentis 5001968da7 fix issue 2023-11-07 13:18:17 +02:00
amentis 88bf760165 create referenceType entity 2023-11-07 13:15:25 +02:00
Efstratios Giannopoulos df5ae4a278 description refactor 2023-11-07 13:11:21 +02:00
Efstratios Giannopoulos ac8d36d1d5 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-07 12:37:02 +02:00
Efstratios Giannopoulos 1469e22185 description refactor 2023-11-07 12:36:36 +02:00
Thomas Georgios Giannos f878601609 Added missing converter annotations on entity enums 2023-11-07 12:28:40 +02:00
Thomas Georgios Giannos ee68224f58 Added DmpUser table and stack 2023-11-07 12:12:14 +02:00
Thomas Georgios Giannos ea58ed2e44 Fix on entity doi entity id, removed reference on Dmps, fix on dmp reference query 2023-11-07 11:09:54 +02:00
Efstratios Giannopoulos 05f73889be Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-11-07 10:32:02 +02:00
Efstratios Giannopoulos 662c5ad7e8 description refactor 2023-11-07 10:29:27 +02:00
Diamantis Tziotzios a9eb2b4513 fix backend build error 2023-11-07 10:02:09 +02:00
George Kalampokis 1ef613c87e Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-11-06 17:43:24 +02:00
George Kalampokis 9e27558df7 Update some of the queries in the new Deposit mapper 2023-11-06 17:43:20 +02:00
Thomas Georgios Giannos d3cd37d57a Fix on dmp persist 2023-11-06 17:43:03 +02:00
Thomas Georgios Giannos a5f46e9328 Adding description templates on dmp persist 2023-11-06 17:42:12 +02:00
George Kalampokis 49e34f9abc Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-11-06 17:25:00 +02:00
George Kalampokis 5ceed08b9c Add missing apply filter 2023-11-06 17:22:36 +02:00
Efstratios Giannopoulos 20873ca13e Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java
2023-11-06 17:17:34 +02:00
Efstratios Giannopoulos 87e22040c5 description template migration 2023-11-06 17:16:55 +02:00
George Kalampokis e42bdcfc0a Code cleanup 2023-11-06 16:58:01 +02:00
George Kalampokis c6cdcc4b15 Apply requested changes to RepositoryDepositService 2023-11-06 16:56:59 +02:00
Efstratios Giannopoulos d8b1211a12 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/controllers/FileController.java
#	dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanOverviewModel.java
2023-11-06 16:19:06 +02:00
Efstratios Giannopoulos 81528dfe55 description refactor 2023-11-06 16:17:57 +02:00
amentis 11bb1a3c8c create Supportive Material query public 2023-11-06 15:25:04 +02:00
Thomas Georgios Giannos 9b9cf0de4d Adding dmp-description-template stack 2023-11-06 13:31:01 +02:00
amentis fda8fcef2c create Supportive Material Entity, (persist in progress) 2023-11-03 18:09:19 +02:00
George Kalampokis c636b3e6b4 Minor query optimization 2023-11-03 18:00:06 +02:00
George Kalampokis 7bb8e850e8 Add first implementation of the new Repository Deposit Service 2023-11-03 17:54:26 +02:00
Thomas Georgios Giannos b389ebf160 Fix on dmp references persisting flow 2023-11-03 16:47:54 +02:00
Thomas Georgios Giannos 2f20675348 Adding reference persisting on dmp persist (work in progress), adding separate persist models for dmp properties 2023-11-03 16:02:47 +02:00
Efstratios Giannopoulos 9cf91aab50 DescriptionTemplate refactor 2023-11-03 15:53:18 +02:00
Efstratios Giannopoulos 08caf64d02 DescriptionTemplate refactor 2023-11-03 14:53:10 +02:00
amentis c37530c022 add supportive material editor to UI 2023-11-03 13:30:11 +02:00
Efstratios Giannopoulos b6278ab1ef DescriptionTemplate refactor 2023-11-03 11:55:26 +02:00
Efstratios Giannopoulos d38f22ccbf DescriptionTemplate refactor 2023-11-02 18:37:12 +02:00
Thomas Georgios Giannos e02237e599 Adding new version service method for Dmps 2023-11-02 18:12:36 +02:00
Thomas Georgios Giannos 02d8132f3d Fix on new DmpDescriptionTemplate table 2023-11-02 17:55:34 +02:00
Thomas Georgios Giannos 281475bb85 Adding sql script for new DmpDescriptionTemplate table 2023-11-02 17:11:34 +02:00
Thomas Georgios Giannos 752935f6e5 Updating Dmp properties persist 2023-11-02 15:55:17 +02:00
Efstratios Giannopoulos 732dfd9bfb DmpBlueprint feractor 2023-11-02 14:13:13 +02:00
Thomas Georgios Giannos c3808b5548 Updating Dmp Entity fields to reflect the database changes (migration script not yet updated) 2023-11-02 13:45:32 +02:00
Efstratios Giannopoulos ac15e33a87 DescriptionTemplate refactor 2023-11-01 18:12:59 +02:00
George Kalampokis 3c799063cc Fix Deposit Configuration's Authentication system 2023-11-01 14:10:35 +02:00
Efstratios Giannopoulos 4e08d9f073 DescriptionTemplate refactor 2023-11-01 12:03:23 +02:00
amentis be9761b103 add more fields to reference-type.yml 2023-10-31 17:57:41 +02:00
Efstratios Giannopoulos 7e391582b5 User DescriptionTemplate refactor 2023-10-31 17:24:03 +02:00
Diamantis Tziotzios c08f05bc04 no message 2023-10-31 11:19:52 +02:00
Efstratios Giannopoulos 2b074f268d DescriptionTemplate refactor 2023-10-30 18:02:20 +02:00
amentis 477e4e498e add frontend reference search lookup 2023-10-30 17:53:30 +02:00
amentis f744573f02 add reference search builders, lookup 2023-10-30 17:15:40 +02:00
Diamantis Tziotzios 557c444bc1 frontend description template listing component 2023-10-30 15:30:46 +02:00
Efstratios Giannopoulos c06253bb20 DescriptionTemplate refactor 2023-10-30 15:07:59 +02:00
amentis 49d400662b add reference definition censor 2023-10-30 10:57:24 +02:00
amentis a0ac8df5ba rename sourceType 2023-10-30 10:43:50 +02:00
Diamantis Tziotzios 36c17b5853 frontend: description template model alignment 2023-10-27 20:10:21 +03:00
Diamantis Tziotzios 9201f265d2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-frontend/src/app/core/model/reference/reference.ts
2023-10-27 18:59:51 +03:00
Diamantis Tziotzios 7214745162 frontend dmp changes 2023-10-27 18:56:19 +03:00
Efstratios Giannopoulos bdcaee004d Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
#	dmp-backend/web/src/main/resources/config/permissions.yml
2023-10-27 18:52:34 +03:00
Efstratios Giannopoulos 57facf98e5 DescriptionTemplate refactor 2023-10-27 18:46:34 +03:00
amentis 9d3cc9e3d2 rename sourceType to referenceSourceType 2023-10-27 18:29:06 +03:00
amentis 92c165e904 add references definition xml,builder, persist 2023-10-27 17:35:35 +03:00
Thomas Georgios Giannos 65e8635c2f Removing unused dataset entity classes 2023-10-27 17:32:07 +03:00
Thomas Georgios Giannos 5d882c7e88 Drop old unused dataset related tables, small fix to migration script 2023-10-27 17:29:22 +03:00
Thomas Georgios Giannos e31970c7ea Adding migration scripts for Dmp, DmpReference, Description and DescriptionReference entities, other fixes / clear up dmp entity 2023-10-27 17:05:48 +03:00
Thomas Georgios Giannos 8d1c988135 Adding DescriptionReference lookup and linking on description entity builder 2023-10-27 13:48:17 +03:00
Thomas Georgios Giannos 60ca51fe00 Adding DescriptionReference entity stack (former Dataset*** entities) 2023-10-27 11:59:37 +03:00
amentis 7508cf8698 add created, updated in DmpReference 2023-10-27 11:41:44 +03:00
Diamantis Tziotzios e4203a3bb4 backend fixes 2023-10-27 09:54:49 +03:00
George Kalampokis d983e1e38e Add Deposit Security 2023-10-26 18:04:55 +03:00
amentis aecac1995d rename External Reference to Reference 2023-10-26 14:38:18 +03:00
amentis f006587f4a Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-10-26 12:09:36 +03:00
amentis 5a55e5d739 rename External Reference to Reference 2023-10-26 12:08:45 +03:00
amentis bbb21fadba rename External Reference to Reference 2023-10-26 12:07:04 +03:00
Diamantis Tziotzios 4eca9b32c9 various backend fixes 2023-10-26 11:21:33 +03:00
Diamantis Tziotzios 129dbd163a minor fixes dmp blueprints and Dmps. 2023-10-25 20:53:47 +03:00
Diamantis Tziotzios 51cc5f4fd9 dmp blueprint frontend cleanup 2023-10-25 18:15:41 +03:00
Diamantis Tziotzios d1bac40f0f more blueprint editor fixes 2023-10-25 17:47:48 +03:00
amentis 45f8f51288 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-25 17:38:21 +03:00
amentis 032b30ed04 add DmpExternalReference to DmpBlueprint 2023-10-25 17:37:37 +03:00
Thomas Georgios Giannos 9a78d98751 Updating permissions.yml for dmps, entity_dois and descriptions 2023-10-25 16:55:10 +03:00
Thomas Georgios Giannos c169a103b7 Updating censors for dmp and description entities 2023-10-25 14:49:37 +03:00
amentis 1b66d19bde rename frontend external reference to fetcher external reference 2023-10-25 13:01:09 +03:00
amentis 7df098a010 add more to external reference controller, service 2023-10-25 12:42:34 +03:00
Thomas Georgios Giannos 079382556f Added controller for description entity (former dataset) 2023-10-25 11:48:19 +03:00
Thomas Georgios Giannos 7ab1313b83 Updated the dmp builder to be able to populate the associated descriptions on the dmps 2023-10-25 11:17:56 +03:00
amentis bf8edfad92 add ExternalReference, DmpExternalReference entities 2023-10-24 18:47:13 +03:00
Efstratios Giannopoulos a68ddd42ce Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/authorization/Permission.java
2023-10-24 18:01:38 +03:00
Efstratios Giannopoulos de566729f1 DmpBlueprint refactor 2023-10-24 18:00:11 +03:00
Thomas Georgios Giannos e149b61b58 Adding 'dmp' query option on 'description' query 2023-10-24 17:24:51 +03:00
Thomas Georgios Giannos 1e733cf704 Connecting 'dmp' entity with 'description' entity (description builder populating dmp data) 2023-10-24 17:07:28 +03:00
Thomas Georgios Giannos 3e7b9ca90b Optimize imports 2023-10-24 15:39:11 +03:00
Thomas Georgios Giannos e27468b596 Adding basic service for 'description' entity 2023-10-24 15:38:15 +03:00
Thomas Georgios Giannos 485f7311cd Adding builder and query for 'description' entity 2023-10-24 13:50:53 +03:00
Thomas Georgios Giannos e3536285aa Adding 'description' entity (former 'dataset' entity) 2023-10-24 12:47:48 +03:00
Efstratios Giannopoulos a68668f07e DmpBlueprint refactor 2023-10-24 12:13:05 +03:00
Thomas Georgios Giannos dc380cdc01 Small fix on dmp entity id definition 2023-10-24 11:35:19 +03:00
Diamantis Tziotzios 2472f6de42 more dmp blueprint frontend changes 2023-10-24 10:40:26 +03:00
Efstratios Giannopoulos 167d3d4a4b DmpBlueprint refactor 2023-10-23 18:13:34 +03:00
amentis 10615c6fa9 fix front enums 2023-10-23 17:58:56 +03:00
Efstratios Giannopoulos 3b9b348d4d update External Refence 2023-10-23 16:53:32 +03:00
Efstratios Giannopoulos fe7d6f59b1 DmpBlueprint refacto 2023-10-23 15:58:33 +03:00
Thomas Georgios Giannos f4d84aa807 Implemented controller for dmp entity, dmp lookup update 2023-10-23 14:45:05 +03:00
Thomas Georgios Giannos 074ca35970 Implemented service for dmp entity 2023-10-23 12:51:11 +03:00
Thomas Georgios Giannos eeaa35fab5 Added censor, deleter and lookup for Dmp entity 2023-10-23 12:23:51 +03:00
Diamantis Tziotzios 172caabcd2 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-23 11:58:32 +03:00
Diamantis Tziotzios 6a8cb2c853 more frontend dmp blueprint listing changes 2023-10-23 11:58:15 +03:00
Alexandros Mandilaras 65e80c9877 fix typos in greek and english translations 2023-10-23 11:57:44 +03:00
Thomas Georgios Giannos 61f2810fcc Renamed DMP -> Dmp to be consistent with the other entities 2023-10-23 11:31:07 +03:00
Diamantis Tziotzios 6d6a4e0341 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-23 11:27:27 +03:00
Diamantis Tziotzios 0c1509a1a1 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
2023-10-23 11:27:03 +03:00
Thomas Georgios Giannos 10df3db7aa Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-23 11:17:23 +03:00
Thomas Georgios Giannos c338a93d71 Implemented builder and query for DMP entity, refactored services package 2023-10-23 11:16:58 +03:00
Efstratios Giannopoulos 6cde8ae2a9 add cross origin config 2023-10-23 11:15:08 +03:00
Efstratios Giannopoulos 3ad7441bb5 DmpBlueprint refactor 2023-10-23 10:21:25 +03:00
Diamantis Tziotzios 3422b147c8 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-22 13:34:12 +03:00
Efstratios Giannopoulos 30bff76163 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java
2023-10-20 19:17:14 +03:00
Efstratios Giannopoulos 88088d64fd DmpBlueprint refactor 2023-10-20 19:13:57 +03:00
Diamantis Tziotzios 9ed94450bd Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-20 18:01:15 +03:00
Diamantis Tziotzios 4d3098860d description template type and dmp blueprint frontend changes 2023-10-20 18:01:09 +03:00
amentis 0bd3ff6898 fix external references enums 2023-10-20 17:44:41 +03:00
Thomas Georgios Giannos a94cce47e8 Added DMP Entity (not integrated) 2023-10-20 16:48:55 +03:00
George Kalampokis 7d4b4c171b Apply some minor fixes 2023-10-20 11:57:25 +03:00
Efstratios Giannopoulos 0b3178177a changes for remote fetcher 2023-10-19 17:56:53 +03:00
Thomas Georgios Giannos 2a4e61f08f Added controller for EntityDoi entity 2023-10-19 17:48:41 +03:00
Thomas Georgios Giannos 727702023f Reverting changes on join DMP <-> EntityDoiEntity for now in order for the app to be able to run 2023-10-19 16:52:41 +03:00
Efstratios Giannopoulos 16604a8a50 bug fixes 2023-10-19 13:01:29 +03:00
Thomas Georgios Giannos 07ff58fbd9 Removing joins from DMP <-> EntityDoiEntity 2023-10-19 12:41:47 +03:00
Efstratios Giannopoulos a235eb98f4 task #9088 Authorization model should be changed to be Permission based 2023-10-19 10:44:20 +03:00
Efstratios Giannopoulos ce8ff28955 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/EntityDoiDao.java
#	dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/EntityDoiDaoImpl.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DepositManager.java
2023-10-18 19:03:35 +03:00
Efstratios Giannopoulos 52e59ac11c task #9088 Authorization model should be changed to be Permission based 2023-10-18 18:52:03 +03:00
George Kalampokis dc752f73ca Partially fix Deposit Logic and add support for upcomming micro-services 2023-10-18 18:15:52 +03:00
George Kalampokis 5885e3ae5c Fix DMP's funder tab 2023-10-18 18:14:02 +03:00
George Kalampokis 093837c395 Fix DMP user ownership error 2023-10-18 18:13:32 +03:00
amentis 7cba7b2346 add external references service 2023-10-18 18:05:39 +03:00
Thomas Georgios Giannos a38342e534 Removed EntityDao logic, added template stack, controller not yet implemented, db script not yet run 2023-10-18 17:58:36 +03:00
Diamantis Tziotzios 8574f33e56 update script 2023-10-18 14:04:43 +03:00
Efstratios Giannopoulos 941f2d69cc Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-10-18 13:54:47 +03:00
Efstratios Giannopoulos 5c17027df2 fix delete user info additional data 2023-10-18 13:54:02 +03:00
amentis 5203ec4b72 fix remote fetcher 2023-10-18 13:53:52 +03:00
amentis b2119abc08 fix issue 2023-10-18 13:48:20 +03:00
Thomas Georgios Giannos b7d22b5b07 Moving existing entities from Data module to Core module 2023-10-18 13:04:53 +03:00
amentis 1cda821d9c fix issue 2023-10-18 13:00:17 +03:00
Diamantis Tziotzios e97479aa03 conf.json cleanup 2023-10-18 12:51:15 +03:00
amentis ad91234fd9 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-10-18 12:28:13 +03:00
amentis 17bb6bd4b0 add Supportive Material 2023-10-18 12:26:57 +03:00
Efstratios Giannopoulos 66c650495f Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-10-18 12:10:50 +03:00
Efstratios Giannopoulos 27bcc31e54 task #9088 Authorization model should be changed to be Permission based 2023-10-18 12:10:24 +03:00
amentis 3dee4857f8 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
 Conflicts:
	dmp-frontend/src/assets/config/config.json
2023-10-18 10:33:59 +03:00
amentis f67ada842e commit 2023-10-18 10:31:57 +03:00
Thomas Georgios Giannos 651319ac5c Excluded .run files from staging at .gitignore 2023-10-18 10:16:46 +03:00
amentis b8affa3033 change pom 2023-10-18 09:58:05 +03:00
Efstratios Giannopoulos 43f77a4497 add status and inactive 2023-10-17 17:48:02 +03:00
Efstratios Giannopoulos b3a73a50aa task #9088 Authorization model should be changed to be Permission based 2023-10-17 17:13:34 +03:00
Diamantis Tziotzios 9fd30b1198 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/core/pom.xml
2023-10-17 15:56:28 +03:00
Diamantis Tziotzios 3eaf326c50 Description Template Types backend refactored to new format. 2023-10-17 15:55:00 +03:00
Efstratios Giannopoulos 7ed111e936 task #9088 Authorization model should be changed to be Permission based 2023-10-17 15:22:05 +03:00
Efstratios Giannopoulos 419c4d64f8 database enum handle implementation 2023-10-17 13:45:59 +03:00
Efstratios Giannopoulos bd2807fbdf remove zenodo from user info 2023-10-17 12:40:47 +03:00
Efstratios Giannopoulos 925f195f5a database enum handle implementation 2023-10-17 12:39:29 +03:00
Efstratios Giannopoulos 6443654343 Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring 2023-10-16 17:39:19 +03:00
Efstratios Giannopoulos 191f887530 database enum handle implementation 2023-10-16 17:38:12 +03:00
Thomas Georgios Giannos b537810406 Removed redundant code that calculated count on queries, already implemented on the data tools package 2023-10-16 12:22:41 +03:00
Thomas Georgios Giannos 234aa359c0 Removed redundant code that calculated count on queries, already implemented on the data tools package 2023-10-16 12:21:58 +03:00
Efstratios Giannopoulos d5c62539c5 task #9086 public urls support 2023-10-13 18:11:46 +03:00
George Kalampokis 5976084473 Fix security on LanguageController 2023-10-13 16:46:38 +03:00
George Kalampokis 959185a6c3 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-10-13 09:53:32 +03:00
George Kalampokis a9a3273f62 Fix compilation errors and fix swagger ui description formatting 2023-10-13 09:50:22 +03:00
Efstratios Giannopoulos 9c8488febb refresh token for api requests (401) 2023-10-12 18:29:27 +03:00
Efstratios Giannopoulos d14107062a task #9045 Refactor authentication mechanism to support using Keycloak 2023-10-12 17:13:04 +03:00
Efstratios Giannopoulos 5009d658ed task #9045 Refactor authentication mechanism to support using Keycloak 2023-10-12 16:16:19 +03:00
Efstratios Giannopoulos 055d29b95f Merge branch 'dmp-refactoring' of code-repo.d4science.org:MaDgiK-CITE/argos into dmp-refactoring
# Conflicts:
#	dmp-backend/web/pom.xml
#	dmp-backend/web/src/main/resources/config/application.yml
2023-10-12 12:04:26 +03:00
Diamantis Tziotzios 958fc468fa Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-12 10:57:52 +03:00
Diamantis Tziotzios 6b2fae03dd no message 2023-10-12 10:57:38 +03:00
George Kalampokis b845450ebd Update Swagger ui 2023-10-12 10:55:48 +03:00
Efstratios Giannopoulos 968f45d5b3 authn refactor 2023-10-11 17:53:12 +03:00
Efstratios Giannopoulos 8b05ee1d0f add cache yml 2023-10-11 10:09:46 +03:00
George Kalampokis de2f5e67fd Fix profile issue 2023-10-11 09:53:24 +03:00
George Kalampokis 755c79b7af Separate configuration to different files 2023-10-10 16:49:48 +03:00
George Kalampokis d45867585f Add missing files 2023-10-09 17:29:02 +03:00
George Kalampokis 166bea73bf Replace the old .properties configuration files with the .yml 2023-10-09 16:02:14 +03:00
Thomas Georgios Giannos 55aecd9c57 Updating description template type controller with apropriate auditing and logging, added censor, refactored query building to conform with other projects workflows 2023-10-09 11:17:16 +03:00
George Kalampokis cab2f1bc64 Add Environment variables 2023-10-09 10:38:46 +03:00
George Kalampokis b5cbe6a3d8 Merge remote-tracking branch 'origin/dmp-refactoring' into dmp-refactoring 2023-10-06 18:11:11 +03:00
George Kalampokis 70308db668 Add Authentication support for the remote fetcher and rework dataset template's autocomplete sources 2023-10-06 18:07:58 +03:00
Thomas Georgios Giannos 51fbbc933a Fixing detached entity error, entity id is auto generated by hibernate 2023-10-06 16:46:44 +03:00
Thomas Georgios Giannos c7778e80b9 Adding missing auditing configuration property 2023-10-06 15:22:38 +03:00
Thomas Georgios Giannos 39163ed6bc Updating cite validation library to 2.1.0 2023-10-06 15:10:58 +03:00
Thomas Georgios Giannos 0bb4c7ca15 Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring 2023-10-06 12:13:18 +03:00
Thomas Georgios Giannos 0b901205ee Adding auditing, naming convention change in API endpoints for description types 2023-10-06 12:13:09 +03:00
Diamantis Tziotzios 922c2110ac angular update fixes 2023-10-06 11:10:53 +03:00
Diamantis Tziotzios 5a46345f15 angular 16 update 2023-10-05 22:42:47 +03:00
Diamantis Tziotzios 96c2940eb0 angular 15 update 2023-10-05 16:58:45 +03:00
Diamantis Tziotzios 203ee4fb29 update to angular 14 2023-10-05 16:39:17 +03:00
George Kalampokis 05a724d757 Fix type definition issues 2023-10-05 15:23:48 +03:00
George Kalampokis 3d612812b0 Fix compile issue 2023-10-05 14:47:25 +03:00
Diamantis Tziotzios 66052f8af6 sync fixes 2023-10-05 14:12:39 +03:00
Bernaldo Mihasi b7f68f1a7e bug fixes
(cherry picked from commit 846405435c)
2023-10-05 14:04:26 +03:00
Bernaldo Mihasi f841c2a2cc update i18n
(cherry picked from commit dfc9e14003)
2023-10-05 14:04:20 +03:00
Bernaldo Mihasi 03f2bc862e 1) update dmp blueprint listing table view, 2) create clone functionality for dmp blueprints, 3) section description is not required in editor, 4) in the deletion of a dmp blueprint check if any dmps are accosiated with it 2023-10-05 14:04:10 +03:00
Bernaldo Mihasi 4373bf4b00 bug fixes: 1) when creating description template type check only for non deleted types, 2) dmp docx/pdf export: check if system fields exist 3) when creating/updating dmp check if value for extra fields is set, 4) when unchecking the 'Description Templates' checkbox in the blueprint editor, clear any templates selected 2023-10-05 14:02:20 +03:00
Bernaldo Mihasi 09dcf5328d add type attribute in xml import/export of a description template
(cherry picked from commit 3d10e8ad28)
2023-10-05 14:00:30 +03:00
Bernaldo Mihasi c58de51b33 bug fixes
(cherry picked from commit 53b61853e1)
2023-10-05 14:00:23 +03:00
Bernaldo Mihasi 94c0f7ac9c [wip] dmp xml upload changes, including section and extra fields information 2023-10-05 14:00:17 +03:00
Thomas Georgios Giannos 3f14528f16 Fixing UI incompatibilities 2023-10-05 11:41:11 +03:00
Thomas Georgios Giannos 074e374d9a Removing old implementation of DescriptionTemplateType entity, fixing issues with entity scanning and field resolving on new implementation 2023-10-04 12:46:06 +03:00
Thomas Georgios Giannos 7c96078570 Updating Spring to version 6, adding service stack for DescriptionType entity 2023-10-03 17:29:45 +03:00
5884 changed files with 426880 additions and 146356 deletions

5
.env
View File

@ -1,5 +0,0 @@
PROFILE=docker
# Version of Elastic products
ELK_VERSION=7.17.4
STACK_VERSION=7.17.4

65
.gitignore vendored
View File

@ -1,32 +1,32 @@
dmp-frontend/dist.7z
.idea/
*.iml
dmp-backend/src/main/ui-resources/static/vendor.bundle.js.map
dmp-backend/src/main/ui-resources/static/vendor.bundle.js
dmp-backend/src/main/ui-resources/static/unauthorized.module.chunk.js.map
dmp-backend/src/main/ui-resources/static/unauthorized.module.chunk.js
dmp-backend/src/main/ui-resources/static/styles.bundle.js.map
dmp-backend/src/main/ui-resources/static/styles.bundle.js
dmp-backend/src/main/ui-resources/static/polyfills.bundle.js.map
dmp-backend/src/main/ui-resources/static/polyfills.bundle.js
dmp-backend/src/main/ui-resources/static/main.bundle.js.map
dmp-backend/src/main/ui-resources/static/main.bundle.js
dmp-backend/src/main/ui-resources/static/lang/en.json
dmp-backend/src/main/ui-resources/static/inline.bundle.js.map
dmp-backend/src/main/ui-resources/static/inline.bundle.js
dmp-backend/src/main/ui-resources/static/index.html
dmp-backend/src/main/ui-resources/static/favicon.ico
dmp-backend/src/main/ui-resources/static/assets/lang/en.json
backend/src/main/ui-resources/static/vendor.bundle.js.map
backend/src/main/ui-resources/static/vendor.bundle.js
backend/src/main/ui-resources/static/unauthorized.module.chunk.js.map
backend/src/main/ui-resources/static/unauthorized.module.chunk.js
backend/src/main/ui-resources/static/styles.bundle.js.map
backend/src/main/ui-resources/static/styles.bundle.js
backend/src/main/ui-resources/static/polyfills.bundle.js.map
backend/src/main/ui-resources/static/polyfills.bundle.js
backend/src/main/ui-resources/static/main.bundle.js.map
backend/src/main/ui-resources/static/main.bundle.js
backend/src/main/ui-resources/static/lang/en.json
backend/src/main/ui-resources/static/inline.bundle.js.map
backend/src/main/ui-resources/static/inline.bundle.js
backend/src/main/ui-resources/static/index.html
backend/src/main/ui-resources/static/favicon.ico
backend/src/main/ui-resources/static/assets/lang/en.json
dmp-frontend/new 3.xml
dmp-backend/src/main/ui-resources/static/
dmp-backend/web/target/
backend/src/main/ui-resources/static/
backend/web/target/
*.class
dmp-backend/web/src/main/ui-resources/static/
dmp-backend/data/target/data-1.0-SNAPSHOT.jar
dmp-backend/data/target/
dmp-backend/queryable/target/
dmp-backend/elastic/target/
dmp-backend/queryengine/target/
backend/web/src/main/ui-resources/static/
backend/data/target/data-1.0-SNAPSHOT.jar
backend/data/target/
backend/queryable/target/
backend/elastic/target/
backend/queryengine/target/
*.tar
*.gz
final/
@ -38,7 +38,7 @@ dmp-frontend/.vscode/
dmp-frontend/package-lock.json
dmp-backend/logging/target/
backend/logging/target/
ELK.Docker/shared/data-elk/
# Eclipse
@ -46,6 +46,15 @@ ELK.Docker/shared/data-elk/
.settings/
bin/
*.classpath
openDMP/dmp-backend/uploads/
openDMP/dmp-backend/tmp/
dmp-frontend/.angular/
.run
openDMP/backend/uploads/
openDMP/backend/tmp/
logs/
backend/web/src/main/resources/certificates/
/storage/
backend/target/classes/
backend/core/target/maven-archiver/
backend/node_modules/.yarn-integrity
dmp-frontend/.nx/
notification-service/notification-web/src/main/resources/config/app.env
backend/web/src/main/resources/config/app.env

66
Jenkinsfile vendored
View File

@ -1,66 +0,0 @@
def pipelineContext = [:]
pipeline {
agent any
options {
skipDefaultCheckout(true)
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build API') {
steps {
script {
pipelineContext.apiImage = docker.build("open-dmp-api:${env.BUILD_ID}", "-f dmp-backend/Dockerfile.CI dmp-backend/")
}
}
}
stage('Build WebApp') {
steps {
script {
pipelineContext.webappImage = docker.build("open-dmp-webapp:${env.BUILD_ID}", "-f dmp-frontend/Dockerfile.CI dmp-frontend/")
}
}
}
//stage('SonarQube analysis') {
// steps {
// script {
// def scannerHome = tool 'SonarQube Scanner 4.3';
// withSonarQubeEnv('SonarQube') { // If you have configured more than one global server connection, you can specify its name
// sh "${scannerHome}/bin/sonar-scanner"
// }
// }
// }
//}
//// waiting for sonar results based into the configured web hook in Sonar server which push the status back to jenkins
//stage('SonarQube scan result check') {
// steps {
// timeout(time: 2, unit: 'MINUTES') {
// retry(3) {
// script {
// def qg = waitForQualityGate()
// if (qg.status != 'OK') {
// error "Pipeline aborted due to quality gate failure: ${qg.status}"
// }
// }
// }
// }
// }
//}
stage('Pushing to Docker Registry') {
steps {
script {
docker.withRegistry('http://drepo.local.cite.gr', 'b2c651c1-9a3b-4a98-a6da-e1dd7a20f512') {
pipelineContext.apiImage.push()
pipelineContext.webappImage.push()
}
}
}
}
}
}

View File

@ -1,9 +1,3 @@
**Important note: The deployment, troubleshooting, maintenance and operation of on-premises / self-served OpenDMP instances for development, testing or production use, shall be the sole responsibility of the adopter. No support is guaranteed by OpenDMP implentation team for issues that may be encountered during deployment, extension or operation of such installations.**
**Documentation is provided on a best-effort basis for the code and processes around the development, deployment and operation of OpenDMP. If you find any misalignment of the actual processes with the related documentation, please let us know so that the misalignment is addressed for the benefit of future adopters.**
# Using Docker Compose with Argos
ARGOS is an open extensible service that simplifies the management, validation, monitoring and maintenance and of Data Management Plans. It allows actors (researchers, managers, supervisors etc) to create actionable DMPs that may be freely exchanged among infrastructures for carrying out specific aspects of the Data management process in accordance with the intentions and commitment of Data owners.

View File

@ -0,0 +1,38 @@
####################################### Build stage #######################################
FROM maven:3.9-eclipse-temurin-21-alpine AS build-stage
ARG MAVEN_ACCOUNT_USR
ARG MAVEN_ACCOUNT_PSW
ARG REVISION
ARG PROFILE
ENV server_username=$MAVEN_ACCOUNT_USR
ENV server_password=$MAVEN_ACCOUNT_PSW
ARG CITE_MAVEN_REPO_URL
COPY pom.xml /build/
COPY annotation /build/annotation/
COPY annotation-web /build/annotation-web/
COPY settings.xml /root/.m2/settings.xml
RUN rm -f /build/annotation-web/src/main/resources/config/app.env
RUN rm -f /build/annotation-web/src/main/resources/config/*-devel.yml
RUN rm -f /build/annotation-web/src/main/resources/logging/*.xml
RUN rm -f /build/annotation-web/src/main/resources/certificates/*.crt
WORKDIR /build/
RUN mvn -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} clean
RUN mvn -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} install
# Build project
RUN mvn -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} package
######################################## Run Stage ########################################
FROM eclipse-temurin:21-jre-ubi9-minimal
ARG PROFILE
ARG REVISION
ENV SERVER_PORT=8080
EXPOSE ${SERVER_PORT}
COPY --from=build-stage /build/annotation-web/target/annotation-web-${REVISION}.jar /app/annotation-web.jar
ENTRYPOINT ["java","-Dspring.config.additional-location=file:/config/","-Dspring.profiles.active=${PROFILE}","-Djava.security.egd=file:/dev/./urandom","-jar","/app/annotation-web.jar"]

View File

@ -0,0 +1,30 @@
####################################### Build stage #######################################
FROM maven:3.9-eclipse-temurin-21-alpine
ARG MAVEN_ACCOUNT_USR
ARG MAVEN_ACCOUNT_PSW
ARG REVISION
ARG PROFILE
ARG ORACLE_URL
ARG ORACLE_TOKEN
ENV server_username=$MAVEN_ACCOUNT_USR
ENV server_password=$MAVEN_ACCOUNT_PSW
ARG CITE_MAVEN_REPO_URL
COPY pom.xml /build/
COPY annotation /build/annotation/
COPY annotation-web /build/annotation-web/
COPY settings.xml /root/.m2/settings.xml
RUN rm -f /build/annotation-web/src/main/resources/config/app.env
RUN rm -f /build/annotation-web/src/main/resources/config/*-devel.yml
RUN rm -f /build/annotation-web/src/main/resources/logging/*.xml
RUN rm -f /build/annotation-web/src/main/resources/certificates/*.crt
COPY oracle.local.cite.gr.crt $JAVA_HOME/conf/security
RUN cd "$JAVA_HOME"/conf/security && keytool -cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias oraclecert -file oracle.local.cite.gr.crt
WORKDIR /build/
RUN mvn -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} clean
RUN mvn -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} install
RUN mvn -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} package
RUN mvn sonar:sonar -Drevision=${REVISION} -DciteMavenRepoUrl=${CITE_MAVEN_REPO_URL} -P${PROFILE} -Dsonar.projectKey=OpenDMP:annotation-api -Dsonar.login=${ORACLE_TOKEN} -Dsonar.host.url=${ORACLE_URL} -Dsonar.projectName='OpenDMP Annotation API'

View File

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gr.cite</groupId>
<artifactId>annotation-service-parent</artifactId>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>annotation-web</artifactId>
<version>${revision}</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.release>21</maven.compiler.release>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<revision>1.0.0-SNAPSHOT</revision>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>annotation</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>oidc-authz</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>cache</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>exceptions-web</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>cors-web</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,26 @@
package gr.cite.annotation.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication(
scanBasePackages = {
"gr.cite.annotation.*",
"gr.cite",
"gr.cite.queueoutbox",
"gr.cite.queueinbox",
"gr.cite.annotation.integrationevent",
"gr.cite.tools",
"gr.cite.commons"})
@EntityScan({
"gr.cite.annotation.data"})
@EnableAsync
public class AnnotationApplication {
public static void main(String[] args) {
SpringApplication.run(AnnotationApplication.class, args);
}
}

View File

@ -0,0 +1,40 @@
package gr.cite.annotation.web;
import gr.cite.annotation.web.scope.tenant.TenantInterceptor;
import gr.cite.annotation.web.scope.tenant.TenantScopeClaimInterceptor;
import gr.cite.annotation.web.scope.tenant.TenantScopeHeaderInterceptor;
import gr.cite.annotation.web.scope.user.UserInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
private final TenantInterceptor tenantInterceptor;
private final TenantScopeHeaderInterceptor scopeHeaderInterceptor;
private final TenantScopeClaimInterceptor scopeClaimInterceptor;
private final UserInterceptor userInterceptor;
@Autowired
public WebConfiguration(
TenantInterceptor tenantInterceptor,
TenantScopeHeaderInterceptor scopeHeaderInterceptor,
TenantScopeClaimInterceptor scopeClaimInterceptor,
UserInterceptor userInterceptor
) {
this.tenantInterceptor = tenantInterceptor;
this.scopeHeaderInterceptor = scopeHeaderInterceptor;
this.scopeClaimInterceptor = scopeClaimInterceptor;
this.userInterceptor = userInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
int order = 1;
registry.addWebRequestInterceptor(scopeHeaderInterceptor).order(order++);
registry.addWebRequestInterceptor(scopeClaimInterceptor).order(order++);
registry.addWebRequestInterceptor(userInterceptor).order(order++);
registry.addWebRequestInterceptor(tenantInterceptor).order(order++);
}
}

View File

@ -0,0 +1,56 @@
package gr.cite.annotation.web.authorization;
import gr.cite.annotation.authorization.AffiliatedAuthorizationRequirement;
import gr.cite.annotation.authorization.AffiliatedResource;
import gr.cite.commons.web.authz.handler.AuthorizationHandler;
import gr.cite.commons.web.authz.handler.AuthorizationHandlerContext;
import gr.cite.commons.web.authz.policy.AuthorizationRequirement;
import gr.cite.commons.web.oidc.principal.MyPrincipal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("affiliatedAuthorizationHandler")
public class AffiliatedAuthorizationHandler extends AuthorizationHandler<AffiliatedAuthorizationRequirement> {
private final CustomPermissionAttributesConfiguration myConfiguration;
@Autowired
public AffiliatedAuthorizationHandler(CustomPermissionAttributesConfiguration myConfiguration) {
this.myConfiguration = myConfiguration;
}
@Override
public int handleRequirement(AuthorizationHandlerContext context, Object resource, AuthorizationRequirement requirement) {
AffiliatedAuthorizationRequirement req = (AffiliatedAuthorizationRequirement) requirement;
if (req.getRequiredPermissions() == null)
return ACCESS_NOT_DETERMINED;
AffiliatedResource rs = (AffiliatedResource) resource;
boolean isAuthenticated = ((MyPrincipal) context.getPrincipal()).isAuthenticated();
if (!isAuthenticated)
return ACCESS_NOT_DETERMINED;
if (myConfiguration.getMyPolicies() == null)
return ACCESS_NOT_DETERMINED;
int hits = 0;
Boolean entityAffiliated = rs != null && rs.getAffiliated() != null ? rs.getAffiliated() : null;
for (String permission : req.getRequiredPermissions()) {
CustomPermissionAttributesProperties.MyPermission policy = myConfiguration.getMyPolicies().get(permission);
boolean hasPermission = policy != null && policy.getEntityAffiliated() != null && policy.getEntityAffiliated() && entityAffiliated != null && entityAffiliated;
if (hasPermission) hits += 1;
}
if ((req.getMatchAll() && req.getRequiredPermissions().size() == hits) || (!req.getMatchAll() && hits > 0))
return ACCESS_GRANTED;
return ACCESS_NOT_DETERMINED;
}
@Override
public Class<? extends AuthorizationRequirement> supporting() {
return AffiliatedAuthorizationRequirement.class;
}
}

View File

@ -0,0 +1,24 @@
package gr.cite.annotation.web.authorization;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
@Configuration
@EnableConfigurationProperties(CustomPermissionAttributesProperties.class)
public class CustomPermissionAttributesConfiguration {
private final CustomPermissionAttributesProperties properties;
@Autowired
public CustomPermissionAttributesConfiguration(CustomPermissionAttributesProperties properties) {
this.properties = properties;
}
public HashMap<String, CustomPermissionAttributesProperties.MyPermission> getMyPolicies() {
return properties.getPolicies();
}
}

View File

@ -0,0 +1,38 @@
package gr.cite.annotation.web.authorization;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.bind.ConstructorBinding;
import java.util.HashMap;
@ConfigurationProperties(prefix = "permissions")
@ConditionalOnProperty(prefix = "permissions", name = "enabled", havingValue = "true")
public class CustomPermissionAttributesProperties {
private final HashMap<String, MyPermission> policies;
@ConstructorBinding
public CustomPermissionAttributesProperties(HashMap<String, MyPermission> policies) {
this.policies = policies;
}
public HashMap<String, MyPermission> getPolicies() {
return policies;
}
public static class MyPermission {
private final Boolean entityAffiliated;
@ConstructorBinding
public MyPermission(Boolean entityAffiliated) {
this.entityAffiliated = entityAffiliated;
}
public Boolean getEntityAffiliated() {
return entityAffiliated;
}
}
}

View File

@ -0,0 +1,44 @@
package gr.cite.annotation.web.authorization;
import gr.cite.commons.web.authz.handler.AuthorizationHandler;
import gr.cite.commons.web.authz.handler.AuthorizationHandlerContext;
import gr.cite.commons.web.authz.policy.AuthorizationRequirement;
import gr.cite.commons.web.oidc.principal.MyPrincipal;
import gr.cite.annotation.authorization.OwnedAuthorizationRequirement;
import gr.cite.annotation.authorization.OwnedResource;
import gr.cite.annotation.common.scope.user.UserScope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("ownedAuthorizationHandler")
public class OwnedAuthorizationHandler extends AuthorizationHandler<OwnedAuthorizationRequirement> {
private final UserScope userScope;
@Autowired
public OwnedAuthorizationHandler(UserScope userScope) {
this.userScope = userScope;
}
@Override
public int handleRequirement(AuthorizationHandlerContext context, Object resource, AuthorizationRequirement requirement) {
OwnedAuthorizationRequirement req = (OwnedAuthorizationRequirement) requirement;
OwnedResource rs = (OwnedResource) resource;
boolean isAuthenticated = ((MyPrincipal) context.getPrincipal()).isAuthenticated();
if (!isAuthenticated) return ACCESS_NOT_DETERMINED;
if (this.userScope.getUserIdSafe() == null) return ACCESS_NOT_DETERMINED;
if (rs != null && rs.getUserIds() != null && rs.getUserIds().contains(this.userScope.getUserIdSafe())) return ACCESS_GRANTED;
return ACCESS_NOT_DETERMINED;
}
@Override
public Class<? extends AuthorizationRequirement> supporting() {
return OwnedAuthorizationRequirement.class;
}
}

View File

@ -0,0 +1,25 @@
package gr.cite.annotation.web.config;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
@Configuration
public class AppMessageSourceConfiguration {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource());
return bean;
}
}

View File

@ -0,0 +1,152 @@
package gr.cite.annotation.web.config;
import gr.cite.annotation.authorization.AffiliatedAuthorizationRequirement;
import gr.cite.annotation.authorization.AffiliatedResource;
import gr.cite.annotation.web.authorization.AffiliatedAuthorizationHandler;
import gr.cite.commons.web.authz.handler.AuthorizationHandler;
import gr.cite.commons.web.authz.handler.PermissionClientAuthorizationHandler;
import gr.cite.commons.web.authz.policy.AuthorizationRequirement;
import gr.cite.commons.web.authz.policy.AuthorizationRequirementMapper;
import gr.cite.commons.web.authz.policy.AuthorizationResource;
import gr.cite.commons.web.authz.policy.resolver.AuthorizationPolicyConfigurer;
import gr.cite.commons.web.authz.policy.resolver.AuthorizationPolicyResolverStrategy;
import gr.cite.commons.web.oidc.configuration.WebSecurityProperties;
import gr.cite.annotation.authorization.OwnedAuthorizationRequirement;
import gr.cite.annotation.authorization.OwnedResource;
import gr.cite.annotation.web.authorization.OwnedAuthorizationHandler;
import jakarta.servlet.Filter;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManagerResolver;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Configuration
@EnableWebSecurity
public class SecurityConfiguration {
private final WebSecurityProperties webSecurityProperties;
private final AuthenticationManagerResolver<HttpServletRequest> authenticationManagerResolver;
private final Filter apiKeyFilter;
private final OwnedAuthorizationHandler ownedAuthorizationHandler;
private final AffiliatedAuthorizationHandler affiliatedAuthorizationHandler;
@Autowired
public SecurityConfiguration(WebSecurityProperties webSecurityProperties,
@Qualifier("tokenAuthenticationResolver") AuthenticationManagerResolver<HttpServletRequest> authenticationManagerResolver,
@Qualifier("apiKeyFilter") Filter apiKeyFilter,
@Qualifier("ownedAuthorizationHandler") OwnedAuthorizationHandler ownedAuthorizationHandler,
@Qualifier("affiliatedAuthorizationHandler") AffiliatedAuthorizationHandler affiliatedAuthorizationHandler) {
this.webSecurityProperties = webSecurityProperties;
this.authenticationManagerResolver = authenticationManagerResolver;
this.apiKeyFilter = apiKeyFilter;
this.ownedAuthorizationHandler = ownedAuthorizationHandler;
this.affiliatedAuthorizationHandler = affiliatedAuthorizationHandler;
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
HttpSecurity tempHttp = http
.csrf(AbstractHttpConfigurer::disable)
.cors(httpSecurityCorsConfigurer -> {})
.headers(httpSecurityHeadersConfigurer -> httpSecurityHeadersConfigurer.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable))
.addFilterBefore(apiKeyFilter, AbstractPreAuthenticatedProcessingFilter.class)
.authorizeHttpRequests(authRequest ->
authRequest.requestMatchers(buildAntPatterns(webSecurityProperties.getAllowedEndpoints())).anonymous()
.requestMatchers(buildAntPatterns(webSecurityProperties.getAuthorizedEndpoints())).authenticated())
.sessionManagement( sessionManagementConfigurer-> sessionManagementConfigurer.sessionCreationPolicy(SessionCreationPolicy.NEVER))
.oauth2ResourceServer(oauth2 -> oauth2.authenticationManagerResolver(authenticationManagerResolver));
return tempHttp.build();
}
@Bean
AuthorizationPolicyConfigurer authorizationPolicyConfigurer() {
return new AuthorizationPolicyConfigurer() {
@Override
public AuthorizationPolicyResolverStrategy strategy() {
return AuthorizationPolicyResolverStrategy.STRICT_CONSENSUS_BASED;
}
//Here you can register your custom authorization handlers, which will get used as well as the existing ones
//This is optional and can be omitted
//If not set / set to null, only the default authorization handlers will be used
@Override
public List<AuthorizationHandler<? extends AuthorizationRequirement>> addCustomHandlers() {
return List.of(affiliatedAuthorizationHandler, ownedAuthorizationHandler);
}
//Here you can register your custom authorization requirements (if any)
//This is optional and can be omitted
//If not set / set to null, only the default authorization requirements will be used
@Override
public List<? extends AuthorizationRequirement> extendRequirements() {
return List.of(
// new TimeOfDayAuthorizationRequirement(new TimeOfDay("08:00","16:00"), true)
);
}
//Here you can select handlers you want to disable by providing the classes they are implemented by
//You can disable any handler (including any custom one)
//This is optional and can be omitted
//If not set / set to null, all the handlers will be invoked, based on their requirement support
//In the example below, the default client handler will be ignored by the resolver
@Override
public List<Class<? extends AuthorizationHandler<? extends AuthorizationRequirement>>> disableHandlers() {
return new ArrayList<>();
}
};
}
@Bean
AuthorizationRequirementMapper authorizationRequirementMapper() {
return new AuthorizationRequirementMapper() {
@Override
public AuthorizationRequirement map(AuthorizationResource resource, boolean matchAll, String[] permissions) {
Class<?> type = resource.getClass();
if (!AuthorizationResource.class.isAssignableFrom(type)) throw new IllegalArgumentException("resource");
if (OwnedResource.class.equals(type)) {
return new OwnedAuthorizationRequirement();
}
if (AffiliatedResource.class.equals(type)) {
return new AffiliatedAuthorizationRequirement(matchAll, permissions);
}
throw new IllegalArgumentException("resource");
}
};
}
private String[] buildAntPatterns(Set<String> endpoints) {
if (endpoints == null) {
return new String[0];
}
return endpoints.stream()
.filter(endpoint -> endpoint != null && !endpoint.isBlank())
.map(endpoint -> "/" + stripUnnecessaryCharacters(endpoint) + "/**")
.toArray(String[]::new);
}
private String stripUnnecessaryCharacters(String endpoint) {
endpoint = endpoint.strip();
if (endpoint.startsWith("/")) {
endpoint = endpoint.substring(1);
}
if (endpoint.endsWith("/")) {
endpoint = endpoint.substring(0, endpoint.length() - 1);
}
return endpoint;
}
}

View File

@ -0,0 +1,193 @@
package gr.cite.annotation.web.controllerhandler;
import gr.cite.annotation.common.JsonHandlingService;
import gr.cite.tools.exception.*;
import gr.cite.tools.logging.LoggerService;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import java.text.MessageFormat;
import java.util.Map;
@RestControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(GlobalExceptionHandler.class));
private final JsonHandlingService jsonHandlingService;
public GlobalExceptionHandler(JsonHandlingService jsonHandlingService) {
this.jsonHandlingService = jsonHandlingService;
}
@ExceptionHandler(Exception.class)
public ResponseEntity<?> handleUnexpectedErrors(Exception exception, WebRequest request) throws Exception {
HandledException handled = this.handleException(exception, request);
this.log(handled.getLevel(), exception, MessageFormat.format("returning code {0} and payload {1}", handled.getStatusCode(), handled.getMessage()));
return new ResponseEntity<>(handled.getMessage(), handled.getStatusCode());
}
public void log(System.Logger.Level level, Exception e, String message) {
if (level != null) {
switch (level) {
case TRACE:
logger.trace(message, e);
break;
case DEBUG:
logger.debug(message, e);
break;
case INFO:
logger.info(message, e);
break;
case WARNING:
logger.warn(message, e);
break;
case ERROR:
logger.error(message, e);
break;
}
}
}
public HandledException handleException(Exception exception, WebRequest request) throws Exception {
HttpStatus statusCode;
Map<String, Object> result;
System.Logger.Level logLevel;
switch (exception){
case MyNotFoundException myNotFoundException -> {
logLevel = System.Logger.Level.DEBUG;
statusCode = HttpStatus.NOT_FOUND;
int code = myNotFoundException.getCode();
if (code > 0) {
result = Map.ofEntries(
Map.entry("code", code),
Map.entry("error", myNotFoundException.getMessage())
);
}
else {
result = Map.ofEntries(
Map.entry("error", myNotFoundException.getMessage())
);
}
}
case MyUnauthorizedException myUnauthorizedException -> {
logLevel = System.Logger.Level.DEBUG;
statusCode = HttpStatus.UNAUTHORIZED;
int code = myUnauthorizedException.getCode();
if (code > 0) {
result = Map.ofEntries(
Map.entry("code", code),
Map.entry("error", myUnauthorizedException.getMessage())
);
}
else {
result = Map.ofEntries(
Map.entry("error", myUnauthorizedException.getMessage())
);
}
}
case MyForbiddenException myForbiddenException -> {
logLevel = System.Logger.Level.DEBUG;
statusCode = HttpStatus.FORBIDDEN;
int code = myForbiddenException.getCode();
if (code > 0) {
result = Map.ofEntries(
Map.entry("code", code),
Map.entry("error", myForbiddenException.getMessage())
);
}
else {
result = Map.ofEntries(
Map.entry("error", myForbiddenException.getMessage())
);
}
}
case MyValidationException myValidationException -> {
logLevel = System.Logger.Level.DEBUG;
statusCode = HttpStatus.BAD_REQUEST;
int code = myValidationException.getCode();
if (code > 0) {
result = Map.ofEntries(
Map.entry("code", code),
Map.entry("error", myValidationException.getMessage()),
Map.entry("message", myValidationException.getErrors())
);
}
else {
result = Map.ofEntries(
Map.entry("error", myValidationException.getMessage()),
Map.entry("message", myValidationException.getErrors())
);
}
}
case MyApplicationException myApplicationException -> {
logLevel = System.Logger.Level.ERROR;
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
int code = myApplicationException.getCode();
if (code > 0) {
result = Map.ofEntries(
Map.entry("code", code),
Map.entry("error", myApplicationException.getMessage())
);
}
else {
result = Map.ofEntries(
Map.entry("error", myApplicationException.getMessage())
);
}
}
default -> {
logLevel = System.Logger.Level.ERROR;
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
result = Map.ofEntries(
Map.entry("error", "System error")
);
}
};
String serialization = this.jsonHandlingService.toJsonSafe(result);
return new HandledException(statusCode, serialization, logLevel);
}
public static class HandledException{
public HttpStatus statusCode;
public String message;
public System.Logger.Level level;
public HandledException(HttpStatus statusCode, String message, System.Logger.Level level) {
this.statusCode = statusCode;
this.message = message;
this.level = level;
}
public HttpStatus getStatusCode() {
return statusCode;
}
public void setStatusCode(HttpStatus statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public System.Logger.Level getLevel() {
return level;
}
public void setLevel(System.Logger.Level level) {
this.level = level;
}
}
}

View File

@ -0,0 +1,132 @@
package gr.cite.annotation.web.controllers;
import com.fasterxml.jackson.core.JsonProcessingException;
import gr.cite.annotation.audit.AuditableAction;
import gr.cite.annotation.authorization.AuthorizationFlags;
import gr.cite.annotation.data.AnnotationEntity;
import gr.cite.annotation.model.Annotation;
import gr.cite.annotation.model.builder.AnnotationBuilder;
import gr.cite.annotation.model.censorship.AnnotationCensor;
import gr.cite.annotation.model.persist.AnnotationPersist;
import gr.cite.annotation.query.AnnotationQuery;
import gr.cite.annotation.query.lookup.AnnotationLookup;
import gr.cite.annotation.service.annotation.AnnotationService;
import gr.cite.annotation.web.model.QueryResult;
import gr.cite.tools.auditing.AuditService;
import gr.cite.tools.data.builder.BuilderFactory;
import gr.cite.tools.data.censor.CensorFactory;
import gr.cite.tools.data.query.QueryFactory;
import gr.cite.tools.exception.MyApplicationException;
import gr.cite.tools.exception.MyForbiddenException;
import gr.cite.tools.exception.MyNotFoundException;
import gr.cite.tools.fieldset.FieldSet;
import gr.cite.tools.logging.LoggerService;
import gr.cite.tools.logging.MapLogEntry;
import gr.cite.tools.validation.ValidationFilterAnnotation;
import jakarta.transaction.Transactional;
import jakarta.xml.bind.JAXBException;
import org.slf4j.LoggerFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.management.InvalidApplicationException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import java.util.AbstractMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping(path = "api/annotation", produces = MediaType.APPLICATION_JSON_VALUE)
public class AnnotationController {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(AnnotationController.class));
private final CensorFactory censorFactory;
private final QueryFactory queryFactory;
private final BuilderFactory builderFactory;
private final AuditService auditService;
private final MessageSource messageSource;
private final AnnotationService annotationService;
public AnnotationController(CensorFactory censorFactory, QueryFactory queryFactory, BuilderFactory builderFactory, AuditService auditService, MessageSource messageSource, AnnotationService annotationService) {
this.censorFactory = censorFactory;
this.queryFactory = queryFactory;
this.builderFactory = builderFactory;
this.auditService = auditService;
this.messageSource = messageSource;
this.annotationService = annotationService;
}
@PostMapping("query")
public QueryResult<Annotation> query(@RequestBody AnnotationLookup lookup) {
logger.debug("querying {}", Annotation.class.getSimpleName());
this.censorFactory.censor(AnnotationCensor.class).censor(lookup.getProject(), null);
AnnotationQuery query = lookup.enrich(this.queryFactory).authorize(AuthorizationFlags.OwnerOrPermissionAssociated);
List<AnnotationEntity> data = query.collect();
List<Annotation> models = this.builderFactory.builder(AnnotationBuilder.class).authorize(AuthorizationFlags.OwnerOrPermissionAssociated).build(lookup.getProject(), data);
long count = (lookup.getMetadata() != null && lookup.getMetadata().getCountAll()) ? query.count() : models.size();
this.auditService.track(AuditableAction.Annotation_Query, "lookup", lookup);
return new QueryResult<>(models, count);
}
@GetMapping("{id}")
public Annotation get(@PathVariable("id") UUID id, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
logger.debug(new MapLogEntry("retrieving" + Annotation.class.getSimpleName()).And("id", id).And("fields", fieldSet));
this.censorFactory.censor(AnnotationCensor.class).censor(fieldSet, null);
AnnotationQuery query = this.queryFactory.query(AnnotationQuery.class).authorize(AuthorizationFlags.OwnerOrPermissionAssociated).ids(id);
Annotation model = this.builderFactory.builder(AnnotationBuilder.class).authorize(AuthorizationFlags.OwnerOrPermissionAssociated).build(fieldSet, query.firstAs(fieldSet));
if (model == null)
throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Annotation.class.getSimpleName()}, LocaleContextHolder.getLocale()));
this.auditService.track(AuditableAction.Annotation_Lookup, Map.ofEntries(
new AbstractMap.SimpleEntry<String, Object>("id", id),
new AbstractMap.SimpleEntry<String, Object>("fields", fieldSet)
));
return model;
}
@PostMapping("persist")
@Transactional
@ValidationFilterAnnotation(validator = AnnotationPersist.AnnotationPersistValidator.ValidatorName, argumentName = "model")
public Annotation persist(@RequestBody AnnotationPersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, JAXBException, ParserConfigurationException, JsonProcessingException, TransformerException {
logger.debug(new MapLogEntry("persisting" + Annotation.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
this.censorFactory.censor(AnnotationCensor.class).censor(fieldSet, null);
Annotation persisted = this.annotationService.persist(model, fieldSet);
this.auditService.track(AuditableAction.Annotation_Persist, Map.ofEntries(
new AbstractMap.SimpleEntry<String, Object>("model", model),
new AbstractMap.SimpleEntry<String, Object>("fields", fieldSet)
));
return persisted;
}
@DeleteMapping("{id}")
@Transactional
public void delete(@PathVariable("id") UUID id) throws MyForbiddenException, InvalidApplicationException {
logger.debug(new MapLogEntry("retrieving" + Annotation.class.getSimpleName()).And("id", id));
this.annotationService.deleteAndSave(id);
this.auditService.track(AuditableAction.Annotation_Delete, "id", id);
}
}

View File

@ -0,0 +1,92 @@
package gr.cite.annotation.web.controllers;
import gr.cite.annotation.authorization.ClaimNames;
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
import gr.cite.commons.web.oidc.principal.MyPrincipal;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractor;
import gr.cite.annotation.audit.AuditableAction;
import gr.cite.annotation.common.scope.tenant.TenantScope;
import gr.cite.annotation.web.model.Account;
import gr.cite.annotation.web.model.AccountBuilder;
import gr.cite.tools.auditing.AuditService;
import gr.cite.tools.fieldset.BaseFieldSet;
import gr.cite.tools.fieldset.FieldSet;
import gr.cite.tools.logging.LoggerService;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping(path = "api/annotation/principal", produces = MediaType.APPLICATION_JSON_VALUE)
public class PrincipalController {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(PrincipalController.class));
private final AuditService auditService;
private final CurrentPrincipalResolver currentPrincipalResolver;
private final AccountBuilder accountBuilder;
private final ClaimExtractor claimExtractor;
@Autowired
public PrincipalController(
CurrentPrincipalResolver currentPrincipalResolver,
AccountBuilder accountBuilder,
AuditService auditService,
ClaimExtractor claimExtractor) {
this.currentPrincipalResolver = currentPrincipalResolver;
this.accountBuilder = accountBuilder;
this.auditService = auditService;
this.claimExtractor = claimExtractor;
}
@GetMapping("me")
public Account me(FieldSet fieldSet) {
logger.debug("me");
if (fieldSet == null || fieldSet.isEmpty()) {
fieldSet = new BaseFieldSet(
Account._isAuthenticated,
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._subject),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._userId),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._name),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._scope),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._client),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._issuedAt),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._notBefore),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._authenticatedAt),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._expiresAt),
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._more),
Account._permissions);
}
MyPrincipal principal = this.currentPrincipalResolver.currentPrincipal();
Account me = this.accountBuilder.build(fieldSet, principal);
this.auditService.track(AuditableAction.Principal_Lookup);
//auditService.trackIdentity(AuditableAction.IdentityTracking_Action);
return me;
}
@GetMapping("my-tenants")
public List<String> myTenants() {
logger.debug("my-tenants");
MyPrincipal principal = this.currentPrincipalResolver.currentPrincipal();
List<String> tenants = this.claimExtractor.asStrings(principal, ClaimNames.TenantCodesClaimName);
this.auditService.track(AuditableAction.Tenants_Lookup);
//auditService.trackIdentity(AuditableAction.IdentityTracking_Action);
return tenants == null ? null : tenants.stream().distinct().collect(Collectors.toList());
}
}

View File

@ -0,0 +1,160 @@
package gr.cite.annotation.web.model;
import gr.cite.tools.logging.annotation.LogSensitive;
import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class Account {
public static class PrincipalInfo {
public static final String _userId = "userId";
public UUID userId;
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public static final String _subject = "subject";
public UUID subject;
public UUID getSubject() {
return subject;
}
public void setSubject(UUID subject) {
this.subject = subject;
}
public static final String _name = "name";
@LogSensitive
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static final String _scope = "scope";
public List<String> scope;
public List<String> getScope() {
return scope;
}
public void setScope(List<String> scope) {
this.scope = scope;
}
public static final String _client = "client";
public String client;
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public static final String _notBefore = "notBefore";
public Instant notBefore;
public Instant getNotBefore() {
return notBefore;
}
public void setNotBefore(Instant notBefore) {
this.notBefore = notBefore;
}
public static final String _issuedAt = "issuedAt";
public Instant issuedAt;
public Instant getIssuedAt() {
return issuedAt;
}
public void setIssuedAt(Instant issuedAt) {
this.issuedAt = issuedAt;
}
public static final String _authenticatedAt = "authenticatedAt";
public Instant authenticatedAt;
public Instant getAuthenticatedAt() {
return authenticatedAt;
}
public void setAuthenticatedAt(Instant authenticatedAt) {
this.authenticatedAt = authenticatedAt;
}
public static final String _expiresAt = "expiresAt";
public Instant expiresAt;
public Instant getExpiresAt() {
return expiresAt;
}
public void setExpiresAt(Instant expiresAt) {
this.expiresAt = expiresAt;
}
public static final String _more = "more";
@LogSensitive
public Map<String, List<String>> more;
public Map<String, List<String>> getMore() {
return more;
}
public void setMore(Map<String, List<String>> more) {
this.more = more;
}
}
public static final String _isAuthenticated = "isAuthenticated";
private Boolean isAuthenticated;
public Boolean getIsAuthenticated() {
return isAuthenticated;
}
public void setIsAuthenticated(Boolean authenticated) {
isAuthenticated = authenticated;
}
public static final String _principal = "principal";
private PrincipalInfo principal;
public PrincipalInfo getPrincipal() {
return principal;
}
public void setPrincipal(PrincipalInfo principal) {
this.principal = principal;
}
public static final String _permissions = "permissions";
private List<String> permissions;
public List<String> getPermissions() {
return permissions;
}
public void setPermissions(List<String> permissions) {
this.permissions = permissions;
}
}

View File

@ -0,0 +1,86 @@
package gr.cite.annotation.web.model;
import gr.cite.commons.web.authz.configuration.AuthorizationConfiguration;
import gr.cite.commons.web.authz.configuration.Permission;
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
import gr.cite.commons.web.oidc.principal.MyPrincipal;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractor;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractorKeys;
import gr.cite.annotation.common.scope.user.UserScope;
import gr.cite.tools.fieldset.BaseFieldSet;
import gr.cite.tools.fieldset.FieldSet;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.*;
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class AccountBuilder {
private final ClaimExtractor claimExtractor;
private final Set<String> excludeMoreClaim;
private final AuthorizationConfiguration authorizationConfiguration;
private final CurrentPrincipalResolver currentPrincipalResolver;
private final UserScope userScope;
public AccountBuilder(ClaimExtractor claimExtractor, AuthorizationConfiguration authorizationConfiguration, CurrentPrincipalResolver currentPrincipalResolver, UserScope userScope) {
this.claimExtractor = claimExtractor;
this.authorizationConfiguration = authorizationConfiguration;
this.currentPrincipalResolver = currentPrincipalResolver;
this.userScope = userScope;
this.excludeMoreClaim = Set.of(
ClaimExtractorKeys.Subject,
ClaimExtractorKeys.Name,
ClaimExtractorKeys.Scope,
ClaimExtractorKeys.Client,
ClaimExtractorKeys.IssuedAt,
ClaimExtractorKeys.NotBefore,
ClaimExtractorKeys.AuthenticatedAt,
ClaimExtractorKeys.ExpiresAt);
}
public Account build(FieldSet fields, MyPrincipal principal) {
Account model = new Account();
if (principal == null || !principal.isAuthenticated()) {
model.setIsAuthenticated(false);
return model;
}
model.setIsAuthenticated(true);
FieldSet principalFields = fields.extractPrefixed(BaseFieldSet.asIndexerPrefix(Account._principal));
if (!principalFields.isEmpty()) model.setPrincipal(new Account.PrincipalInfo());
if (principalFields.hasField(Account.PrincipalInfo._subject)) model.getPrincipal().setSubject(this.claimExtractor.subjectUUID(principal));
if (principalFields.hasField(Account.PrincipalInfo._userId)) model.getPrincipal().setUserId(this.userScope.getUserIdSafe());
if (principalFields.hasField(Account.PrincipalInfo._name)) model.getPrincipal().setName(this.claimExtractor.name(principal));
if (principalFields.hasField(Account.PrincipalInfo._scope)) model.getPrincipal().setScope(this.claimExtractor.scope(principal));
if (principalFields.hasField(Account.PrincipalInfo._client)) model.getPrincipal().setClient(this.claimExtractor.client(principal));
if (principalFields.hasField(Account.PrincipalInfo._issuedAt)) model.getPrincipal().setIssuedAt(this.claimExtractor.issuedAt(principal));
if (principalFields.hasField(Account.PrincipalInfo._notBefore)) model.getPrincipal().setNotBefore(this.claimExtractor.notBefore(principal));
if (principalFields.hasField(Account.PrincipalInfo._authenticatedAt)) model.getPrincipal().setAuthenticatedAt(this.claimExtractor.authenticatedAt(principal));
if (principalFields.hasField(Account.PrincipalInfo._expiresAt)) model.getPrincipal().setExpiresAt(this.claimExtractor.expiresAt(principal));
if (principalFields.hasField(Account.PrincipalInfo._more)) {
model.getPrincipal().setMore(new HashMap<>());
for (String key : this.claimExtractor.knownPublicKeys()) {
if (this.excludeMoreClaim.contains(key)) continue;
List<String> values = this.claimExtractor.asStrings(principal, key);
if (values == null || values.size() == 0) continue;
if (!model.getPrincipal().getMore().containsKey(key)) model.getPrincipal().getMore().put(key, new ArrayList<>());
model.getPrincipal().getMore().get(key).addAll(values);
}
}
if (fields.hasField(Account._permissions)) {
List<String> roles = claimExtractor.roles(currentPrincipalResolver.currentPrincipal());
Set<String> permissions = authorizationConfiguration.permissionsOfRoles(roles);
for (Map.Entry<String, Permission> permissionEntry : authorizationConfiguration.getRawPolicies().entrySet()){
if (permissionEntry.getValue().getAllowAuthenticated()){
permissions.add(permissionEntry.getKey());
}
}
model.setPermissions(new ArrayList<>(permissions));
}
return model;
}
}

View File

@ -0,0 +1,37 @@
package gr.cite.annotation.web.model;
import java.util.ArrayList;
import java.util.List;
public class QueryResult<M> {
public QueryResult() { }
public QueryResult(List<M> items, long count)
{
this.items = items;
this.count = count;
}
public List<M> items;
public long count;
public List<M> getItems() {
return items;
}
public void setItems(List<M> items) {
this.items = items;
}
public long getCount() {
return count;
}
public void setCount(long count) {
this.count = count;
}
public static QueryResult<?> Empty()
{
return new QueryResult<>(new ArrayList<>(), 0L);
}
}

View File

@ -0,0 +1,10 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.tools.cache.CacheOptions;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "cache.tenant-by-code")
public class TenantByCodeCacheOptions extends CacheOptions {
}

View File

@ -0,0 +1,78 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.annotation.event.TenantTouchedEvent;
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.UUID;
@Service
public class TenantByCodeCacheService extends CacheService<TenantByCodeCacheService.TenantByCodeCacheValue> {
public static class TenantByCodeCacheValue {
public TenantByCodeCacheValue() {
}
public TenantByCodeCacheValue(String tenantCode, UUID tenantId) {
this.tenantCode = tenantCode;
this.tenantId = tenantId;
}
private String tenantCode;
public String getTenantCode() {
return tenantCode;
}
public void setTenantCode(String tenantCode) {
this.tenantCode = tenantCode;
}
private UUID tenantId;
public UUID getTenantId() {
return tenantId;
}
public void setTenantId(UUID tenantId) {
this.tenantId = tenantId;
}
}
private final ConventionService conventionService;
@Autowired
public TenantByCodeCacheService(TenantByCodeCacheOptions options, ConventionService conventionService) {
super(options);
this.conventionService = conventionService;
}
@EventListener
public void handleTenantTouchedEvent(TenantTouchedEvent event) {
if (!this.conventionService.isNullOrEmpty(event.getTenantCode()))
this.evict(this.buildKey(event.getTenantCode()));
if (!this.conventionService.isNullOrEmpty(event.getPreviousTenantCode()))
this.evict(this.buildKey(event.getPreviousTenantCode()));
}
@Override
protected Class<TenantByCodeCacheValue> valueClass() {
return TenantByCodeCacheValue.class;
}
@Override
public String keyOf(TenantByCodeCacheValue value) {
return this.buildKey(value.getTenantCode());
}
public String buildKey(String code) {
HashMap<String, String> keyParts = new HashMap<>();
keyParts.put("$code$", code);
return this.generateKey(keyParts);
}
}

View File

@ -0,0 +1,10 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.tools.cache.CacheOptions;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "cache.tenant-by-id")
public class TenantByIdCacheOptions extends CacheOptions {
}

View File

@ -0,0 +1,77 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.annotation.event.TenantTouchedEvent;
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Locale;
import java.util.UUID;
@Service
public class TenantByIdCacheService extends CacheService<TenantByIdCacheService.TenantByIdCacheValue> {
public static class TenantByIdCacheValue {
public TenantByIdCacheValue() {
}
public TenantByIdCacheValue(String tenantCode, UUID tenantId) {
this.tenantCode = tenantCode;
this.tenantId = tenantId;
}
private String tenantCode;
public String getTenantCode() {
return tenantCode;
}
public void setTenantCode(String tenantCode) {
this.tenantCode = tenantCode;
}
private UUID tenantId;
public UUID getTenantId() {
return tenantId;
}
public void setTenantId(UUID tenantId) {
this.tenantId = tenantId;
}
}
private final ConventionService conventionService;
@Autowired
public TenantByIdCacheService(TenantByIdCacheOptions options, ConventionService conventionService) {
super(options);
this.conventionService = conventionService;
}
@EventListener
public void handleTenantTouchedEvent(TenantTouchedEvent event) {
if (!this.conventionService.isNullOrEmpty(event.getTenantCode()))
this.evict(this.buildKey(event.getTenantId()));
}
@Override
protected Class<TenantByIdCacheValue> valueClass() {
return TenantByIdCacheValue.class;
}
@Override
public String keyOf(TenantByIdCacheValue value) {
return this.buildKey(value.getTenantId());
}
public String buildKey(UUID id) {
HashMap<String, String> keyParts = new HashMap<>();
keyParts.put("$tenantId$", id.toString().toLowerCase(Locale.ROOT));
return this.generateKey(keyParts);
}
}

View File

@ -0,0 +1,189 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.annotation.authorization.ClaimNames;
import gr.cite.annotation.authorization.Permission;
import gr.cite.annotation.common.enums.IsActive;
import gr.cite.annotation.common.scope.tenant.TenantScope;
import gr.cite.annotation.common.scope.user.UserScope;
import gr.cite.annotation.data.TenantUserEntity;
import gr.cite.annotation.data.UserEntity;
import gr.cite.annotation.data.tenant.TenantScopedBaseEntity;
import gr.cite.annotation.errorcode.ErrorThesaurusProperties;
import gr.cite.annotation.query.utils.BuildSubQueryInput;
import gr.cite.annotation.query.utils.QueryUtilsService;
import gr.cite.commons.web.authz.service.AuthorizationService;
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractor;
import gr.cite.tools.exception.MyForbiddenException;
import gr.cite.tools.logging.LoggerService;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;
import org.hibernate.Session;
import org.jetbrains.annotations.NotNull;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
import javax.management.InvalidApplicationException;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
@Component
public class TenantInterceptor implements WebRequestInterceptor {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(TenantInterceptor.class));
private final TenantScope tenantScope;
private final UserScope userScope;
private final CurrentPrincipalResolver currentPrincipalResolver;
private final ClaimExtractor claimExtractor;
private final ApplicationContext applicationContext;
private final TenantScopeProperties tenantScopeProperties;
private final UserAllowedTenantCacheService userAllowedTenantCacheService;
private final ErrorThesaurusProperties errors;
private final QueryUtilsService queryUtilsService;
@PersistenceContext
public EntityManager entityManager;
@Autowired
public TenantInterceptor(
TenantScope tenantScope,
UserScope userScope,
CurrentPrincipalResolver currentPrincipalResolver,
ClaimExtractor claimExtractor,
ApplicationContext applicationContext,
TenantScopeProperties tenantScopeProperties,
UserAllowedTenantCacheService userAllowedTenantCacheService,
ErrorThesaurusProperties errors, QueryUtilsService queryUtilsService) {
this.tenantScope = tenantScope;
this.userScope = userScope;
this.currentPrincipalResolver = currentPrincipalResolver;
this.claimExtractor = claimExtractor;
this.applicationContext = applicationContext;
this.tenantScopeProperties = tenantScopeProperties;
this.userAllowedTenantCacheService = userAllowedTenantCacheService;
this.errors = errors;
this.queryUtilsService = queryUtilsService;
}
@Override
public void preHandle(@NotNull WebRequest request) throws InvalidApplicationException, InterruptedException {
if (!this.currentPrincipalResolver.currentPrincipal().isAuthenticated()) return;
if (!this.tenantScope.isMultitenant()) return;
boolean isAllowedNoTenant = this.applicationContext.getBean(AuthorizationService.class).authorize(Permission.AllowNoTenant);
if (tenantScope.isSet() && this.entityManager != null) {
List<String> currentPrincipalTenantCodes = this.claimExtractor.asStrings(this.currentPrincipalResolver.currentPrincipal(), ClaimNames.TenantCodesClaimName);
if ((currentPrincipalTenantCodes == null || !currentPrincipalTenantCodes.contains(tenantScope.getTenantCode())) && !isAllowedNoTenant) {
logger.warn("tenant not allowed {}", this.tenantScope.getTenant());
throw new MyForbiddenException(this.errors.getTenantNotAllowed().getCode(), this.errors.getTenantNotAllowed().getMessage());
}
boolean isUserAllowedTenant = false;
if (this.tenantScope.isDefaultTenant()){
isUserAllowedTenant = true;
} else {
UserAllowedTenantCacheService.UserAllowedTenantCacheValue cacheValue = this.userAllowedTenantCacheService.lookup(this.userAllowedTenantCacheService.buildKey(this.userScope.getUserId(), this.tenantScope.getTenant()));
if (cacheValue != null) {
isUserAllowedTenant = cacheValue.isAllowed();
} else {
isUserAllowedTenant = this.isUserAllowedTenant();
this.userAllowedTenantCacheService.put(new UserAllowedTenantCacheService.UserAllowedTenantCacheValue(this.userScope.getUserId(), this.tenantScope.getTenant(), isUserAllowedTenant));
}
}
if (isUserAllowedTenant) {
if(!tenantScope.isDefaultTenant()) {
this.entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.TENANT_FILTER)
.setParameter(TenantScopedBaseEntity.TENANT_FILTER_TENANT_PARAM, tenantScope.getTenant().toString());
} else {
this.entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.DEFAULT_TENANT_FILTER);
}
} else {
if (isAllowedNoTenant || this.isWhiteListedEndpoint(request)) {
tenantScope.setTenant(null, null);
} else {
logger.warn("tenant not allowed {}", this.tenantScope.getTenant());
throw new MyForbiddenException(this.errors.getTenantNotAllowed().getCode(), this.errors.getTenantNotAllowed().getMessage());
}
}
} else {
if (!isAllowedNoTenant) {
if (!this.isWhiteListedEndpoint(request)) {
logger.warn("tenant scope not provided");
throw new MyForbiddenException(this.errors.getMissingTenant().getCode(), this.errors.getMissingTenant().getMessage());
}
}
}
}
private boolean isWhiteListedEndpoint(WebRequest request) {
String servletPath = ((ServletWebRequest) request).getRequest().getServletPath();
if (this.tenantScopeProperties.getWhiteListedEndpoints() != null) {
for (String whiteListedEndpoint : this.tenantScopeProperties.getWhiteListedEndpoints()) {
if (servletPath.toLowerCase(Locale.ROOT).startsWith(whiteListedEndpoint.toLowerCase(Locale.ROOT))) {
return true;
}
}
}
return false;
}
private boolean isUserAllowedTenant() throws InvalidApplicationException, InterruptedException {
if (userScope.isSet()) {
CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<UserEntity> query = criteriaBuilder.createQuery(UserEntity.class);
Root<UserEntity> root = query.from(UserEntity.class);
query.where(criteriaBuilder.and(
criteriaBuilder.equal(root.get(UserEntity._isActive), IsActive.Active),
criteriaBuilder.in(root.get(UserEntity._id)).value(queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(new BuildSubQueryInput.Builder<>(TenantUserEntity.class, UUID.class)
.query(query)
.criteriaBuilder(criteriaBuilder)
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(TenantUserEntity._userId))
.filterFunc((subQueryRoot, cb) ->
{
try {
return cb.and(
criteriaBuilder.equal(subQueryRoot.get(TenantUserEntity._tenantId), this.tenantScope.getTenant()),
criteriaBuilder.equal(subQueryRoot.get(TenantUserEntity._userId), this.userScope.getUserId()),
criteriaBuilder.equal(subQueryRoot.get(TenantUserEntity._isActive), IsActive.Active)
);
} catch (InvalidApplicationException e) {
throw new RuntimeException(e);
}
}
)
))
)
));
query.multiselect(root.get(UserEntity._id).alias(UserEntity._id));
List<UserEntity> results = this.entityManager.createQuery(query).getResultList();
return !results.isEmpty();
}
return false;
}
@Override
public void postHandle(@NonNull WebRequest request, ModelMap model) {
this.tenantScope.setTenant(null, null);
}
@Override
public void afterCompletion(@NonNull WebRequest request, Exception ex) {
}
}

View File

@ -0,0 +1,184 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.annotation.authorization.ClaimNames;
import gr.cite.annotation.common.enums.IsActive;
import gr.cite.annotation.common.scope.tenant.TenantScope;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.annotation.data.TenantEntity;
import gr.cite.annotation.errorcode.ErrorThesaurusProperties;
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
import gr.cite.commons.web.oidc.principal.MyPrincipal;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractor;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractorContext;
import gr.cite.tools.exception.MyForbiddenException;
import gr.cite.tools.logging.LoggerService;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;
import org.jetbrains.annotations.NotNull;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
import javax.management.InvalidApplicationException;
import java.util.List;
import java.util.UUID;
@Component
public class TenantScopeClaimInterceptor implements WebRequestInterceptor {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(TenantScopeClaimInterceptor.class));
private final TenantScope tenantScope;
private final ConventionService conventionService;
private final TenantScopeProperties tenantScopeProperties;
private final ErrorThesaurusProperties errorThesaurusProperties;
private final ClaimExtractor claimExtractor;
private final CurrentPrincipalResolver currentPrincipalResolver;
private final String clientTenantClaimName;
private final ClaimExtractorContext claimExtractorContext;
private final TenantByCodeCacheService tenantByCodeCacheService;
private final TenantByIdCacheService tenantByIdCacheService;
@PersistenceContext
public EntityManager entityManager;
@Autowired
public TenantScopeClaimInterceptor(
TenantScope tenantScope,
ConventionService conventionService,
ClaimExtractor claimExtractor,
CurrentPrincipalResolver currentPrincipalResolver,
ErrorThesaurusProperties errorThesaurusProperties,
TenantScopeProperties tenantScopeProperties,
ClaimExtractorContext claimExtractorContext,
TenantByCodeCacheService tenantByCodeCacheService,
TenantByIdCacheService tenantByIdCacheService
) {
this.tenantScope = tenantScope;
this.conventionService = conventionService;
this.currentPrincipalResolver = currentPrincipalResolver;
this.claimExtractor = claimExtractor;
this.errorThesaurusProperties = errorThesaurusProperties;
this.tenantScopeProperties = tenantScopeProperties;
this.claimExtractorContext = claimExtractorContext;
this.tenantByCodeCacheService = tenantByCodeCacheService;
this.tenantByIdCacheService = tenantByIdCacheService;
this.clientTenantClaimName = this.tenantScopeProperties.getClientClaimsPrefix() + ClaimNames.TenantClaimName;
}
@Override
public void preHandle(@NotNull WebRequest request) throws InvalidApplicationException {
if (!this.currentPrincipalResolver.currentPrincipal().isAuthenticated()) return;
if (!this.tenantScope.isMultitenant()) return;
MyPrincipal principal = this.currentPrincipalResolver.currentPrincipal();
if (principal != null && principal.isAuthenticated() /* principal.Claims.Any() */) {
boolean scoped = this.scopeByPrincipal(principal);
if (!scoped) scoped = this.scopeByClient(principal);
if (!scoped && this.tenantScope.isSet() && this.tenantScopeProperties.getEnforceTrustedTenant())
throw new MyForbiddenException(this.errorThesaurusProperties.getMissingTenant().getCode(), this.errorThesaurusProperties.getMissingTenant().getMessage());
}
}
private boolean scopeByPrincipal(MyPrincipal principal) {
String tenantCode = this.claimExtractor.tenantString(principal);
if (this.conventionService.isNullOrEmpty(tenantCode)) tenantCode = this.claimExtractor.asString(principal, this.clientTenantClaimName);
if (tenantCode == null || this.conventionService.isNullOrEmpty(tenantCode)) return false;
if (tenantCode.equalsIgnoreCase(this.tenantScope.getDefaultTenantCode())){
logger.debug("parsed tenant header and set tenant to default tenant");
this.tenantScope.setTenant(null, tenantCode);
this.claimExtractorContext.putReplaceParameter(TenantScope.TenantReplaceParameter, tenantCode);
return true;
}
UUID tenantId = this.conventionService.parseUUIDSafe(tenantCode);
if (tenantId == null) {
TenantByCodeCacheService.TenantByCodeCacheValue cacheValue = this.tenantByCodeCacheService.lookup(this.tenantByCodeCacheService.buildKey(tenantCode));
if (cacheValue != null) {
tenantId = cacheValue.getTenantId();
} else {
tenantId = this.getTenantIdFromDatabase(tenantCode);
this.tenantByCodeCacheService.put(new TenantByCodeCacheService.TenantByCodeCacheValue(tenantCode, tenantId));
this.tenantByIdCacheService.put(new TenantByIdCacheService.TenantByIdCacheValue(tenantCode, tenantId));
}
} else {
logger.debug("tenant claim was set to {}", tenantId);
TenantByIdCacheService.TenantByIdCacheValue cacheValue = this.tenantByIdCacheService.lookup(this.tenantByIdCacheService.buildKey(tenantId));
if (cacheValue != null) {
tenantCode = cacheValue.getTenantCode();
} else {
tenantCode = this.getTenantCodeFromDatabase(tenantId);
this.tenantByCodeCacheService.put(new TenantByCodeCacheService.TenantByCodeCacheValue(tenantCode, tenantId));
this.tenantByIdCacheService.put(new TenantByIdCacheService.TenantByIdCacheValue(tenantCode, tenantId));
}
}
if (tenantId != null) {
logger.debug("parsed tenant header and set tenant id to {}", tenantId);
this.tenantScope.setTenant(tenantId, tenantCode);
this.claimExtractorContext.putReplaceParameter(TenantScope.TenantReplaceParameter, tenantCode);
return true;
}
return false;
}
private boolean scopeByClient(MyPrincipal principal) throws InvalidApplicationException {
String client = this.claimExtractor.client(principal);
Boolean isWhiteListed = this.tenantScopeProperties.getWhiteListedClients() != null && !this.conventionService.isNullOrEmpty(client) && this.tenantScopeProperties.getWhiteListedClients().contains(client);
logger.debug("client is whitelisted : {}, scope is set: {}, with value {}", isWhiteListed, this.tenantScope.isSet(), (this.tenantScope.isSet() ? this.tenantScope.getTenant() : null));
return isWhiteListed && this.tenantScope.isSet();
}
private UUID getTenantIdFromDatabase(String tenantCode) {
CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<TenantEntity> query = criteriaBuilder.createQuery(TenantEntity.class);
Root<TenantEntity> root = query.from(TenantEntity.class);
query = query.where(
criteriaBuilder.and(
criteriaBuilder.equal(root.get(TenantEntity._code), tenantCode),
criteriaBuilder.equal(root.get(TenantEntity._isActive), IsActive.Active)
)
).multiselect(root.get(TenantEntity._id).alias(TenantEntity._id));
List<TenantEntity> results = this.entityManager.createQuery(query).getResultList();
if (results.size() == 1) {
return results.getFirst().getId();
}
return null;
}
private String getTenantCodeFromDatabase(UUID tenantId) {
CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<TenantEntity> query = criteriaBuilder.createQuery(TenantEntity.class);
Root<TenantEntity> root = query.from(TenantEntity.class);
query = query.where(
criteriaBuilder.and(
criteriaBuilder.equal(root.get(TenantEntity._id), tenantId),
criteriaBuilder.equal(root.get(TenantEntity._isActive), IsActive.Active)
)
).multiselect(root.get(TenantEntity._code).alias(TenantEntity._code));
List<TenantEntity> results = this.entityManager.createQuery(query).getResultList();
if (results.size() == 1) {
return results.getFirst().getCode();
}
return null;
}
@Override
public void postHandle(@NonNull WebRequest request, ModelMap model) {
this.tenantScope.setTenant(null, null);
this.claimExtractorContext.removeReplaceParameter(TenantScope.TenantReplaceParameter);
}
@Override
public void afterCompletion(@NonNull WebRequest request, Exception ex) {
}
}

View File

@ -0,0 +1,9 @@
package gr.cite.annotation.web.scope.tenant;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(TenantScopeProperties.class)
public class TenantScopeConfiguration {
}

View File

@ -0,0 +1,146 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.annotation.authorization.ClaimNames;
import gr.cite.annotation.common.enums.IsActive;
import gr.cite.annotation.common.scope.tenant.TenantScope;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.annotation.data.TenantEntity;
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractorContext;
import gr.cite.tools.logging.LoggerService;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;
import org.jetbrains.annotations.NotNull;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
import java.util.List;
import java.util.UUID;
@Component
public class TenantScopeHeaderInterceptor implements WebRequestInterceptor {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(TenantScopeHeaderInterceptor.class));
private final TenantScope tenantScope;
private final ConventionService conventionService;
private final TenantByCodeCacheService tenantByCodeCacheService;
private final TenantByIdCacheService tenantByIdCacheService;
private final ClaimExtractorContext claimExtractorContext;
private final CurrentPrincipalResolver currentPrincipalResolver;
@PersistenceContext
public EntityManager entityManager;
@Autowired
public TenantScopeHeaderInterceptor(
TenantScope tenantScope,
ConventionService conventionService,
TenantByCodeCacheService tenantByCodeCacheService,
TenantByIdCacheService tenantByIdCacheService,
ClaimExtractorContext claimExtractorContext,
CurrentPrincipalResolver currentPrincipalResolver
) {
this.tenantScope = tenantScope;
this.conventionService = conventionService;
this.tenantByCodeCacheService = tenantByCodeCacheService;
this.tenantByIdCacheService = tenantByIdCacheService;
this.claimExtractorContext = claimExtractorContext;
this.currentPrincipalResolver = currentPrincipalResolver;
}
@Override
public void preHandle(@NotNull WebRequest request) {
if (!this.currentPrincipalResolver.currentPrincipal().isAuthenticated()) return;
if (!this.tenantScope.isMultitenant()) return;
String tenantCode = request.getHeader(ClaimNames.TenantClaimName);
logger.debug("retrieved request tenant header is: {}", tenantCode);
if (tenantCode == null || this.conventionService.isNullOrEmpty(tenantCode)) return;
if (tenantCode.equalsIgnoreCase(this.tenantScope.getDefaultTenantCode())){
logger.debug("parsed tenant header and set tenant to default tenant");
this.tenantScope.setTenant(null, tenantCode);
this.claimExtractorContext.putReplaceParameter(TenantScope.TenantReplaceParameter, tenantCode);
return;
}
UUID tenantId = this.conventionService.parseUUIDSafe(tenantCode);
if (tenantId == null) {
TenantByCodeCacheService.TenantByCodeCacheValue cacheValue = this.tenantByCodeCacheService.lookup(this.tenantByCodeCacheService.buildKey(tenantCode));
if (cacheValue != null) {
tenantId = cacheValue.getTenantId();
} else {
tenantId = this.getTenantIdFromDatabase(tenantCode);
this.tenantByCodeCacheService.put(new TenantByCodeCacheService.TenantByCodeCacheValue(tenantCode, tenantId));
this.tenantByIdCacheService.put(new TenantByIdCacheService.TenantByIdCacheValue(tenantCode, tenantId));
}
} else {
TenantByIdCacheService.TenantByIdCacheValue cacheValue = this.tenantByIdCacheService.lookup(this.tenantByIdCacheService.buildKey(tenantId));
if (cacheValue != null) {
tenantCode = cacheValue.getTenantCode();
} else {
tenantCode = this.getTenantCodeFromDatabase(tenantId);
this.tenantByCodeCacheService.put(new TenantByCodeCacheService.TenantByCodeCacheValue(tenantCode, tenantId));
this.tenantByIdCacheService.put(new TenantByIdCacheService.TenantByIdCacheValue(tenantCode, tenantId));
}
}
if (tenantId != null) {
logger.debug("parsed tenant header and set tenant id to {}", tenantId);
this.tenantScope.setTenant(tenantId, tenantCode);
this.claimExtractorContext.putReplaceParameter(TenantScope.TenantReplaceParameter, tenantCode);
}
}
private UUID getTenantIdFromDatabase(String tenantCode) {
CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<TenantEntity> query = criteriaBuilder.createQuery(TenantEntity.class);
Root<TenantEntity> root = query.from(TenantEntity.class);
query = query.where(
criteriaBuilder.and(
criteriaBuilder.equal(root.get(TenantEntity._code), tenantCode),
criteriaBuilder.equal(root.get(TenantEntity._isActive), IsActive.Active)
)
).multiselect(root.get(TenantEntity._id).alias(TenantEntity._id));
List<TenantEntity> results = this.entityManager.createQuery(query).getResultList();
if (results.size() == 1) {
return results.getFirst().getId();
}
return null;
}
private String getTenantCodeFromDatabase(UUID tenantId) {
CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<TenantEntity> query = criteriaBuilder.createQuery(TenantEntity.class);
Root<TenantEntity> root = query.from(TenantEntity.class);
query = query.where(
criteriaBuilder.and(
criteriaBuilder.equal(root.get(TenantEntity._id), tenantId),
criteriaBuilder.equal(root.get(TenantEntity._isActive), IsActive.Active)
)
).multiselect(root.get(TenantEntity._code).alias(TenantEntity._code));
List<TenantEntity> results = this.entityManager.createQuery(query).getResultList();
if (results.size() == 1) {
return results.getFirst().getCode();
}
return null;
}
@Override
public void postHandle(@NonNull WebRequest request, ModelMap model) {
this.tenantScope.setTenant(null, null);
this.claimExtractorContext.removeReplaceParameter(TenantScope.TenantReplaceParameter);
}
@Override
public void afterCompletion(@NonNull WebRequest request, Exception ex) {
}
}

View File

@ -0,0 +1,44 @@
package gr.cite.annotation.web.scope.tenant;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.HashSet;
import java.util.List;
@ConfigurationProperties(prefix = "tenant.interceptor")
public class TenantScopeProperties {
private String clientClaimsPrefix;
public String getClientClaimsPrefix() {
return clientClaimsPrefix;
}
public void setClientClaimsPrefix(String clientClaimsPrefix) {
this.clientClaimsPrefix = clientClaimsPrefix;
}
private HashSet<String> whiteListedClients;
public HashSet<String> getWhiteListedClients() {
return whiteListedClients;
}
public void setWhiteListedClients(HashSet<String> whiteListedClients) {
this.whiteListedClients = whiteListedClients;
}
private List<String> whiteListedEndpoints;
public List<String> getWhiteListedEndpoints() {
return whiteListedEndpoints;
}
public void setWhiteListedEndpoints(List<String> whiteListedEndpoints) {
this.whiteListedEndpoints = whiteListedEndpoints;
}
private Boolean enforceTrustedTenant;
public Boolean getEnforceTrustedTenant() {
return enforceTrustedTenant;
}
public void setEnforceTrustedTenant(Boolean enforceTrustedTenant) {
this.enforceTrustedTenant = enforceTrustedTenant;
}
}

View File

@ -0,0 +1,12 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.tools.cache.CacheOptions;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "cache.user-allowed-tenant")
public class UserAllowedTenantCacheOptions extends CacheOptions {
}

View File

@ -0,0 +1,91 @@
package gr.cite.annotation.web.scope.tenant;
import gr.cite.annotation.event.UserAddedToTenantEvent;
import gr.cite.annotation.event.UserRemovedFromTenantEvent;
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Locale;
import java.util.UUID;
@Service
public class UserAllowedTenantCacheService extends CacheService<UserAllowedTenantCacheService.UserAllowedTenantCacheValue> {
public static class UserAllowedTenantCacheValue {
public UserAllowedTenantCacheValue() {
}
public UserAllowedTenantCacheValue(UUID userId, UUID tenantId, boolean isAllowed) {
this.userId = userId;
this.tenantId = tenantId;
this.isAllowed = isAllowed;
}
private UUID userId;
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
private UUID tenantId;
public UUID getTenantId() {
return tenantId;
}
public void setTenantId(UUID tenantId) {
this.tenantId = tenantId;
}
private boolean isAllowed;
public boolean isAllowed() {
return isAllowed;
}
public void setAllowed(boolean allowed) {
isAllowed = allowed;
}
}
@Autowired
public UserAllowedTenantCacheService(UserAllowedTenantCacheOptions options) {
super(options);
}
@EventListener
public void handleUserRemovedFromTenantEvent(UserRemovedFromTenantEvent event) {
this.evict(this.buildKey(event.getUserId(), event.getTenantId()));
}
@EventListener
public void handleUserAddedToTenantEvent(UserAddedToTenantEvent event) {
this.evict(this.buildKey(event.getUserId(), event.getTenantId()));
}
@Override
protected Class<UserAllowedTenantCacheValue> valueClass() {
return UserAllowedTenantCacheValue.class;
}
@Override
public String keyOf(UserAllowedTenantCacheValue value) {
return this.buildKey(value.getUserId(), value.getTenantId());
}
public String buildKey(UUID userId, UUID tenantId) {
HashMap<String, String> keyParts = new HashMap<>();
keyParts.put("$user_id$", userId.toString().toLowerCase(Locale.ROOT));
keyParts.put("$tenant_id$", tenantId.toString().toLowerCase(Locale.ROOT));
return this.generateKey(keyParts);
}
}

View File

@ -0,0 +1,81 @@
package gr.cite.annotation.web.scope.user;
import gr.cite.annotation.common.scope.user.UserScope;
import gr.cite.annotation.data.UserCredentialEntity;
import gr.cite.annotation.model.UserCredential;
import gr.cite.annotation.query.UserCredentialQuery;
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractor;
import gr.cite.tools.data.query.QueryFactory;
import gr.cite.tools.exception.MyForbiddenException;
import gr.cite.tools.fieldset.BaseFieldSet;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
import java.util.UUID;
@Component
public class UserInterceptor implements WebRequestInterceptor {
private final UserScope userScope;
private final ClaimExtractor claimExtractor;
private final CurrentPrincipalResolver currentPrincipalResolver;
private final UserInterceptorCacheService userInterceptorCacheService;
private final QueryFactory queryFactory;
@Autowired
public UserInterceptor(
UserScope userScope,
ClaimExtractor claimExtractor,
CurrentPrincipalResolver currentPrincipalResolver,
UserInterceptorCacheService userInterceptorCacheService,
QueryFactory queryFactory) {
this.userScope = userScope;
this.currentPrincipalResolver = currentPrincipalResolver;
this.claimExtractor = claimExtractor;
this.userInterceptorCacheService = userInterceptorCacheService;
this.queryFactory = queryFactory;
}
@Override
public void preHandle(@NotNull WebRequest request) {
UUID userId = null;
if (this.currentPrincipalResolver.currentPrincipal().isAuthenticated()) {
String subjectId = this.claimExtractor.subjectString(this.currentPrincipalResolver.currentPrincipal());
if (subjectId == null || subjectId.isBlank()) throw new MyForbiddenException("Empty subjects not allowed");
UserInterceptorCacheService.UserInterceptorCacheValue cacheValue = this.userInterceptorCacheService.lookup(this.userInterceptorCacheService.buildKey(subjectId));
if (cacheValue != null) {
userId = cacheValue.getUserId();
} else {
userId = this.findExistingUserFromDb(subjectId);
if (userId != null) {
cacheValue = new UserInterceptorCacheService.UserInterceptorCacheValue(subjectId, userId);
this.userInterceptorCacheService.put(cacheValue);
}
}
}
this.userScope.setUserId(userId);
}
private UUID findExistingUserFromDb(String subjectId) {
UserCredentialEntity userCredential = this.queryFactory.query(UserCredentialQuery.class).externalIds(subjectId).firstAs(new BaseFieldSet().ensure(UserCredential._user));
if (userCredential != null) {
return userCredential.getUserId();
}
return null;
}
@Override
public void postHandle(@NonNull WebRequest request, ModelMap model) {
this.userScope.setUserId(null);
}
@Override
public void afterCompletion(@NonNull WebRequest request, Exception ex) {
}
}

View File

@ -0,0 +1,10 @@
package gr.cite.annotation.web.scope.user;
import gr.cite.tools.cache.CacheOptions;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "cache.user-by-subject-id")
public class UserInterceptorCacheOptions extends CacheOptions {
}

View File

@ -0,0 +1,67 @@
package gr.cite.annotation.web.scope.user;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.UUID;
@Service
public class UserInterceptorCacheService extends CacheService<UserInterceptorCacheService.UserInterceptorCacheValue> {
public static class UserInterceptorCacheValue {
public UserInterceptorCacheValue() {
}
public UserInterceptorCacheValue(String subjectId, UUID userId) {
this.subjectId = subjectId;
this.userId = userId;
}
public String getSubjectId() {
return subjectId;
}
public void setSubjectId(String subjectId) {
this.subjectId = subjectId;
}
private String subjectId;
private UUID userId;
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
}
@Autowired
public UserInterceptorCacheService(UserInterceptorCacheOptions options, ConventionService conventionService) {
super(options);
}
@Override
protected Class<UserInterceptorCacheValue> valueClass() {
return UserInterceptorCacheValue.class;
}
@Override
public String keyOf(UserInterceptorCacheValue value) {
return this.buildKey(value.getSubjectId());
}
public String buildKey(String subject) {
HashMap<String, String> keyParts = new HashMap<>();
keyParts.put("$subject$", subject);
return this.generateKey(keyParts);
}
}

View File

@ -0,0 +1,18 @@
spring:
jackson:
default-property-inclusion: non_null
config:
import: optional:classpath:config/app.env[.properties], optional:file:../config/app.env[.properties],
optional:classpath:config/db.yml[.yml], optional:classpath:config/db-${spring.profiles.active}.yml[.yml], optional:file:../config/db-${spring.profiles.active}.yml[.yml],
optional:classpath:config/permissions.yml[.yml], optional:classpath:config/permissions-${spring.profiles.active}.yml[.yml], optional:file:../config/permissions-${spring.profiles.active}.yml[.yml],
optional:classpath:config/errors.yml[.yml], optional:classpath:config/errors-${spring.profiles.active}.yml[.yml], optional:file:../config/errors-${spring.profiles.active}.yml[.yml],
optional:classpath:config/security.yml[.yml], optional:classpath:config/security-${spring.profiles.active}.yml[.yml], optional:file:../config/security-${spring.profiles.active}.yml[.yml],
optional:classpath:config/server.yml[.yml], optional:classpath:config/server-${spring.profiles.active}.yml[.yml], optional:file:../config/server-${spring.profiles.active}.yml[.yml],
optional:classpath:config/logging.yml[.yml], optional:classpath:config/logging-${spring.profiles.active}.yml[.yml], optional:file:../config/logging-${spring.profiles.active}.yml[.yml],
optional:classpath:config/idpclaims.yml[.yml], optional:classpath:config/idpclaims-${spring.profiles.active}.yml[.yml], optional:file:../config/idpclaims-${spring.profiles.active}.yml[.yml],
optional:classpath:config/cache.yml[.yml], optional:classpath:config/cache-${spring.profiles.active}.yml[.yml], optional:file:../config/cache-${spring.profiles.active}.yml[.yml],
optional:classpath:config/tenant.yml[.yml], optional:classpath:config/tenant-${spring.profiles.active}.yml[.yml], optional:file:../config/tenant-${spring.profiles.active}.yml[.yml],
optional:classpath:config/locale.yml[.yml], optional:classpath:config/locale-${spring.profiles.active}.yml[.yml], optional:file:../config/locale-${spring.profiles.active}.yml[.yml],
optional:classpath:config/cors.yml[.yml], optional:classpath:config/cors-${spring.profiles.active}.yml[.yml], optional:file:../config/cors-${spring.profiles.active}.yml[.yml],
optional:classpath:config/queue.yml[.yml], optional:classpath:config/queue-${spring.profiles.active}.yml[.yml], optional:file:../config/queue-${spring.profiles.active}.yml[.yml],
optional:classpath:config/cipher.yml[.yml], optional:classpath:config/cipher-${spring.profiles.active}.yml[.yml], optional:file:../config/cipher-${spring.profiles.active}.yml[.yml]

View File

@ -0,0 +1,59 @@
cache:
manager:
fallbackToNoOpCache: true
caffeineCaches:
- names: [ apikey ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ tenantByCode ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ tenantById ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ userBySubjectId ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 320
- names: [ userAccessTenant ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 320
- names: [ "affiliation" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 5000
enableRecordStats: false
expireAfterWriteSeconds: 20
mapCaches:
apiKey:
name: apikey
keyPattern: ant_resolve_$keyhash$:v0
userBySubjectId:
name: userBySubjectId
keyPattern: ant_user_by_subject_$subject$:v0
tenantByCode:
name: tenantByCode
keyPattern: ant_tenant_by_code_$code$:v0
tenantById:
name: tenantById
keyPattern: ant_tenant_by_id_$tenantId$:v0
userAllowedTenant:
name: userAccessTenant
keyPattern: ant_user_access_tenant_$user_id$_$tenant_id$:v0
affiliation:
name: affiliation
keyPattern: ant_affiliation_$entity$_$user$_$type$:v0

View File

@ -0,0 +1,35 @@
cipher-profiles:
profile-map:
configuration-profile-name: "configuration"
queue-profile-name: "queue"
notification-profile-name: "queue"
cipher:
# salted-hash:
# default-o: null
# options: null
symetric-encryption:
default-o: null
options:
configuration:
aes:
key: ${CIPHER_SYMETRIC_ENCRYPTION_CONFIGURATION_AES_KEY:}
iv: ${CIPHER_SYMETRIC_ENCRYPTION_CONFIGURATION_AES_IV:}
queue:
aes:
key: ${CIPHER_SYMETRIC_ENCRYPTION_QUEUE_AES_KEY:}
iv: ${CIPHER_SYMETRIC_ENCRYPTION_QUEUE_AES_IV:}
masking:
default: null
options:
configuration:
character: "*"
clear-begining: 2
clear-ending: 4
at-least-percentage: 70
digital-signature:
default: null
options:
configuration:
certificate-path: null
certificate-password: null

View File

@ -0,0 +1,3 @@
web:
cors:
allowed-origins: [ http://localhost, http://localhost:4200 ]

View File

@ -0,0 +1,7 @@
web:
cors:
enabled: true
allowed-methods: [ HEAD, GET, POST, PUT, DELETE, PATCH ]
allowed-headers: [ Authorization, Cache-Control, Content-Type, Content-Disposition, x-tenant ]
exposed-headers: [ Authorization, Cache-Control, Content-Type, Content-Disposition ]
allow-credentials: false

View File

@ -0,0 +1,10 @@
spring:
datasource:
maxIdle: 10
minIdle: 5
maxActive: 10
jpa:
show-sql: true
properties:
hibernate:
format_sql: false

View File

@ -0,0 +1,28 @@
spring:
jpa:
properties:
org:
hibernate:
flushMode: MANUAL
hibernate:
globally_quoted_identifiers: true
ddl-auto: validate
dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate:
naming:
physical-strategy: gr.cite.annotation.data.namingstrategy.PrefixPhysicalNamingStrategy
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
datasource:
url: ${DB_CONNECTION_STRING}
username: ${DB_USER}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver
hikari:
connection-timeout: 30000
minimum-idle: 3
maximum-pool-size: 10
idle-timeout: 600000
max-lifetime: 1800000
naming-strategy:
prefix: ant_

View File

@ -0,0 +1,49 @@
error-thesaurus:
hash-conflict:
code: 100
message: there is a hash conflict for the item modified. please reload to get the latest changes
forbidden:
code: 101
message: insufficient rights
system-error:
code: 102
message: an unexpected system error occurred
missing-tenant:
code: 103
message: tenant scope not provided
invalid-api-key:
code: 104
message: provided APIKey not valid
stale-api-key:
code: 105
message: there was a problem authorizing you with your API key. Please try again. Contact the system administrator if the problem persists
model-validation:
code: 106
message: validation error
sensitive-info:
code: 107
message: you are attempting to access sensitive information. please don't do that
non-person-principal:
code: 108
message: the operation is available only to person users
blocking-consent:
code: 113
message: user consents are not sufficient to complete the operation
single-tenant-configuration-per-type-supported:
code: 116
message: a single tenant configuration entry per config type is supported
incompatible-tenant-configuration-types:
code: 117
message: the provided tenant configuration type is incompatible
missing-totp-token:
code: 118
message: totp token not provided
overlapping-tenant-configuration-notifier-list:
code: 119
message: Overlapping Tenant Configuration Notifier List
tenant-not-allowed:
code: 113
message: tenant not allowed
tenant-tampering:
code: 123
message: Tenant tampering

View File

@ -0,0 +1,58 @@
idpclient:
claims:
mapping:
Subject:
- type: sub
Name:
- type: name
Client:
- type: client_id
AuthenticationMethod:
- type: amr
NotBefore:
- type: nbf
AuthenticatedAt:
- type: auth_time
ExpiresAt:
- type: exp
Email:
- type: email
Roles:
- type: resource_access
path: dmp_web.roles
- type: tenant_roles
filterBy: "(.*):::TenantCode::"
extractByExpression: "(.*):(.*)"
extractExpressionValue: "[[g1]]"
GlobalRoles:
- type: resource_access
path: dmp_web.roles
TenantRoles:
- type: tenant_roles
filterBy: "(.*):::TenantCode::"
extractByExpression: "(.*):(.*)"
extractExpressionValue: "[[g1]]"
Scope:
- type: scope
AccessToken:
- type: x-access-token
visibility: SENSITIVE
Tenant:
- type: x-tenant
IssuedAt:
- type: iat
Issuer:
- type: iss
Audience:
- type: aud
TokenType:
- type: typ
AuthorizedParty:
- type: azp
Authorities:
- type: authorities
TenantCodes:
- type: tenant_roles
filterBy: "(.*):(.*)"
extractByExpression: "(.*):(.*)"
extractExpressionValue: "[[g2]]"

View File

@ -0,0 +1,4 @@
locale:
timezone: UTC
language: en
culture: en-US

View File

@ -0,0 +1,2 @@
logging:
config: classpath:logging/logback-dev.xml

View File

@ -0,0 +1,35 @@
logging:
context:
request:
requestIdKey: req.id
requestRemoteHostKey: req.remoteHost
requestUriKey: req.requestURI
requestQueryStringKey: req.queryString
requestUrlKey : req.requestURL
requestMethodKey: req.method
requestUserAgentKey: req.userAgent
requestForwardedForKey: req.xForwardedFor
requestSchemeKey: req.scheme
requestRemoteAddressKey: req.remoteAddr
requestRemotePortKey: req.remotePort
requestRemoteUserKey: req.remoteUser
principal:
subjectKey: usr.subject
nameKey: usr.name
clientKey: usr.client
audit:
enable: true
requestRemoteHostKey: req.remoteHost
requestUriKey: req.requestURI
requestQueryStringKey: req.queryString
requestUrlKey : req.requestURL
requestMethodKey: req.method
requestUserAgentKey: req.userAgent
requestForwardedForKey: req.xForwardedFor
requestSchemeKey: req.scheme
requestRemoteAddressKey: req.remoteAddr
requestRemotePortKey: req.remotePort
requestRemoteUserKey: req.remoteUser
principalSubjectKey: usr.subject
principalNameKey: usr.name
principalClientKey: usr.client

View File

@ -0,0 +1,99 @@
permissions:
policies:
DeferredAffiliation:
roles:
- TenantAdmin
- TenantUser
- TenantManager
- TenantDescriptionTemplateEditor
clients: [ ]
allowAnonymous: false
allowAuthenticated: false
# Tenants
BrowseTenant:
roles:
- Admin
clients: [ ]
allowAnonymous: false
allowAuthenticated: false
EditTenant:
roles:
- Admin
clients: [ "opencdmp-api-dev" ]
allowAnonymous: false
allowAuthenticated: false
DeleteTenant:
roles:
- Admin
claims: [ ]
clients: [ "opencdmp-api-dev" ]
allowAnonymous: false
allowAuthenticated: false
AllowNoTenant:
roles:
- Admin
claims: [ ]
clients: [ ]
allowAnonymous: false
allowAuthenticated: false
# Users
BrowseUser:
roles:
- TenantAdmin
clients: [ ]
allowAnonymous: true
allowAuthenticated: false
EditUser:
roles:
- TenantAdmin
clients: [ "opencdmp-api-dev" ]
allowAnonymous: false
allowAuthenticated: false
DeleteUser:
roles:
- TenantAdmin
claims: [ ]
clients: [ "opencdmp-api-dev" ]
allowAnonymous: false
allowAuthenticated: false
#Annotation
BrowseAnnotation:
roles:
- TenantAdmin
entityAffiliated: true
clients: [ ]
allowAnonymous: true
allowAuthenticated: false
NewAnnotation:
roles:
- TenantAdmin
entityAffiliated: true
clients: [ ]
allowAnonymous: true
allowAuthenticated: false
EditAnnotation:
roles:
- TenantAdmin
clients: [ ]
allowAnonymous: true
allowAuthenticated: false
DeleteAnnotation:
roles:
- TenantAdmin
entityAffiliated: false
clients: [ ]
allowAnonymous: false
allowAuthenticated: false
#Tenant Configuration
BrowseTenantConfiguration:
roles:
- TenantAdmin
clients: [ ]
allowAnonymous: false
allowAuthenticated: false
EditTenantConfiguration:
roles:
- TenantAdmin
clients: [ ]
allowAnonymous: false
allowAuthenticated: false

View File

@ -0,0 +1,21 @@
queue:
rabbitmq:
enable: true
durable: true
queue: cite_dmp_devel_annotation_inbox_queue
exchange: cite_dmp_devel_queue
listenerEnabled: true
publisherEnabled: true
task:
publisher:
enable: true
options:
exchange: cite_dmp_devel_queue
rabbitmq:
enable: true
listener:
enable: true
options:
exchange: cite_dmp_devel_queue
rabbitmq:
enable: true

View File

@ -0,0 +1,54 @@
spring:
rabbitmq:
host: ${RABBIT_HOST}
port: ${RABBIT_PORT}
username: ${RABBIT_USER}
password: ${RABBIT_PASS}
ssl:
enabled: false
queue:
rabbitmq:
enable: false
appId: ${QUEUE_APP_ID}
durable: null
queue: null
exchange: null
listenerEnabled: true
publisherEnabled: true
#TODO
connection-recovery:
enable: true
network-recovery-interval: 5000
unreachable-recovery-interval: 5000
task:
publisher:
enable: false
options:
exchange: null
rabbitmq:
enable: false
interval-seconds: 3
options:
retry-threashold: 100
retry-delay-step-seconds: 300
max-retry-delay-seconds: 10800
too-old-to-send-seconds: 604800
confirm-timeout-seconds: 30
listener:
enable: false
options:
exchange: null
tenant-removal-topic: tenant.remove
tenant-touch-topic: tenant.touch
user-removal-topic: user.remove
user-touch-topic: user.touch
annotation-entities-touch-topic: annotation.entities.touch
annotation-entities-removal-topic: annotation.entities.remove
rabbitmq:
enable: false
interval-seconds: 3
options:
retry-threashold: 100
retry-delay-step-seconds: 300
max-retry-delay-seconds: 10800
too-old-to-send-seconds: 604800

View File

@ -0,0 +1,6 @@
web:
security:
idp:
resource:
jwt:
audiences: [ "dmp_annotation" ]

View File

@ -0,0 +1,14 @@
web:
security:
enabled: true
authorized-endpoints: [ api ]
allowed-endpoints: [ public ]
idp:
api-key:
enabled: false
resource:
token-type: JWT #| opaque
jwt:
claims: [ role, x-role ]
issuer-uri: ${IDP_ISSUER_URI}
validIssuer: ${IDP_ISSUER_URI}

View File

@ -0,0 +1,2 @@
server:
forward-headers-strategy: FRAMEWORK

View File

@ -0,0 +1,13 @@
server:
port: ${WEB_PORT}
forward-headers-strategy: NONE
tomcat:
threads:
max: 20
max-connections: 10000
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB

View File

@ -0,0 +1,7 @@
tenant:
multitenancy:
is-multitenant: true
default-tenant-code: default
interceptor:
client-claims-prefix: client_
enforce-trusted-tenant: false

View File

@ -0,0 +1,7 @@
tenant:
multitenancy:
is-multitenant: false
interceptor:
white-listed-clients: [ ]
enforce-trusted-tenant: false
white-listed-endpoints: [ '/api/annotation/principal/me' ]

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{ISO8601} [%thread] %-5level %logger{36} [%X{req.id}] - %message%n</Pattern>
</encoder>
</appender>
<appender name="TROUBLESHOOTING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/logging.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/logging.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{ISO8601} [%thread] %-5level %logger{36} [%X{req.id}] - %message%n</Pattern>
</encoder>
</appender>
<appender name="AUDITING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/auditing.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/auditing.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{ISO8601} - %X{req.id} - %message%n</Pattern>
</encoder>
</appender>
<logger name="org.springframework.web" level="INFO" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="org.hibernate" level="INFO" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="gr.cite" level="DEBUG" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="audit" level="INFO" additivity="false">
<appender-ref ref="AUDITING"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="info">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>

View File

@ -0,0 +1,10 @@
validation.empty=Value cannot be empty
validation.hashempty=Hash must be set
validation.lowerthanmin=Value must be larger than {value}
validation.largerthanmax=Value must be less than {value}
validation.invalidid=Not valid id
General_ItemNotFound=Item {0} of type {1} not found
Validation_Required={0} is required
Validation_OverPosting=Too much info
Validation_MaxLength={0} too long
Validation_UnexpectedValue=Unexpected value in field {0}

View File

@ -0,0 +1,6 @@
validation.empty=el-Value cannot be empty
validation.hashempty=el-Hash must be set
validation.lowerthanmin=el-Value must be larger than {value}
validation.largerthanmax=el-Value must be less than {value}
validation.invalidid=el-Not valid id
General_ItemNotFound=el-Item {0} of type {1} not found

View File

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gr.cite</groupId>
<artifactId>annotation-service-parent</artifactId>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>annotation</artifactId>
<version>${revision}</version>
<properties>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<revision>1.0.0-SNAPSHOT</revision>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>data-tools</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>field-set</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>oidc-authn</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>logging</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>oidc-authz</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>exceptions</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>validation</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>cipher</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,59 @@
package gr.cite.annotation.audit;
import gr.cite.tools.logging.EventId;
public class AuditableAction {
// public static final EventId Tenant_Available_Notifiers_Query = new EventId(2006, "Tenant_Available_Notifiers_Query");
public static final EventId Principal_Lookup = new EventId(6000, "Principal_Lookup");
public static final EventId Tenants_Lookup = new EventId(6001, "Tenants_Lookup");
// public static final EventId User_Available_Notifiers_Query = new EventId(10004, "User_Available_Notifiers_Query");
public static final EventId User_Query = new EventId(11000, "User_Query");
public static final EventId User_Lookup = new EventId(11001, "User_Lookup");
public static final EventId User_Persist = new EventId(11002, "User_Persist");
public static final EventId User_Delete = new EventId(11003, "User_Delete");
public static final EventId Tenant_Query = new EventId(12000, "Tenant_Query");
public static final EventId Tenant_Lookup = new EventId(12001, "Tenant_Lookup");
public static final EventId Tenant_Persist = new EventId(12002, "Tenant_Persist");
public static final EventId Tenant_Delete = new EventId(12003, "Tenant_Delete");
// public static final EventId Notification_Query = new EventId(19000, "Notification_Query");
// public static final EventId Notification_Lookup = new EventId(19001, "Notification_Lookup");
// public static final EventId Notification_Persist = new EventId(19002, "Notification_Persist");
// public static final EventId Notification_Delete = new EventId(19003, "Notification_Delete");
// public static final EventId InApp_Notification_Query = new EventId(20000, "InApp_Notification_Query");
// public static final EventId InApp_Notification_Lookup = new EventId(20001, "InApp_Notification_Lookup");
// public static final EventId InApp_Notification_Persist = new EventId(20002, "InApp_Notification_Persist");
// public static final EventId InApp_Notification_Delete = new EventId(20003, "InApp_Notification_Delete");
// public static final EventId InApp_Notification_Read = new EventId(20003, "InApp_Notification_Read");
// public static final EventId InApp_Notification_Read_All = new EventId(20003, "InApp_Notification_Read_All");
public static final EventId Tenant_Configuration_Query = new EventId(21000, "Tenant_Configuration_Query");
public static final EventId Tenant_Configuration_Lookup = new EventId(21001, "Tenant_Configuration_Lookup");
public static final EventId Tenant_Configuration_Persist = new EventId(21002, "Tenant_Configuration_Persist");
public static final EventId Tenant_Configuration_Delete = new EventId(21003, "Tenant_Configuration_Delete");
// public static final EventId User_Notification_Preference_Query = new EventId(22000, "User_Notification_Preference_Query");
// public static final EventId User_Notification_Preference_Lookup = new EventId(22001, "User_Notification_Preference_Lookup");
// public static final EventId User_Notification_Preference_Persist = new EventId(22002, "User_Notification_Preference_Persist");
// public static final EventId User_Notification_Preference_Delete = new EventId(22003, "User_Notification_Preference_Delete");
//
// public static final EventId Notification_Template_Query = new EventId(23000, "Notification_Template_Query");
// public static final EventId Notification_Template_Lookup = new EventId(23001, "Notification_Template_Lookup");
// public static final EventId Notification_Template_Persist = new EventId(23002, "Notification_Template_Persist");
// public static final EventId Notification_Template_Delete = new EventId(23003, "Notification_Template_Delete");
public static final EventId Annotation_Query = new EventId(24000, "Annotation_Query");
public static final EventId Annotation_Lookup = new EventId(24001, "Annotation_Lookup");
public static final EventId Annotation_Persist = new EventId(24002, "Annotation_Persist");
public static final EventId Annotation_Delete = new EventId(24003, "Annotation_Delete");
public static final EventId Entity_User_Query = new EventId(25000, "Entity_User_Query");
public static final EventId Entity_User_Lookup = new EventId(25001, "Entity_User_Lookup");
public static final EventId Entity_User_Persist = new EventId(25002, "Entity_User_Persist");
public static final EventId Entity_User_Delete = new EventId(25003, "Entity_User_Delete");
}

View File

@ -0,0 +1,40 @@
package gr.cite.annotation.authorization;
import gr.cite.commons.web.authz.policy.AuthorizationRequirement;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class AffiliatedAuthorizationRequirement implements AuthorizationRequirement {
private final Set<String> requiredPermissions;
private final boolean matchAll;
public AffiliatedAuthorizationRequirement(Set<String> requiredPermissions) {
this(false, requiredPermissions);
}
public AffiliatedAuthorizationRequirement(String... requiredPermissions) {
this(false, requiredPermissions);
}
public AffiliatedAuthorizationRequirement(boolean matchAll, Set<String> requiredPermissions) {
this.matchAll = matchAll;
this.requiredPermissions = requiredPermissions;
}
public AffiliatedAuthorizationRequirement(boolean matchAll, String... requiredPermissions) {
this.requiredPermissions = new HashSet<>();
this.matchAll = matchAll;
this.requiredPermissions.addAll(Arrays.stream(requiredPermissions).distinct().toList());
}
public Set<String> getRequiredPermissions() {
return requiredPermissions;
}
public boolean getMatchAll() {
return matchAll;
}
}

View File

@ -0,0 +1,22 @@
package gr.cite.annotation.authorization;
import gr.cite.commons.web.authz.policy.AuthorizationResource;
public class AffiliatedResource extends AuthorizationResource {
private Boolean isAffiliated;
public AffiliatedResource() {
}
public AffiliatedResource(Boolean isAffiliated) {
this.isAffiliated = isAffiliated;
}
public Boolean getAffiliated() {
return isAffiliated;
}
public void setAffiliated(Boolean affiliated) {
isAffiliated = affiliated;
}
}

View File

@ -0,0 +1,8 @@
package gr.cite.annotation.authorization;
import java.util.EnumSet;
public enum AuthorizationFlags {
None, Permission, Associated, Owner;
public static final EnumSet<AuthorizationFlags> OwnerOrPermissionAssociated = EnumSet.of(Owner, Permission, Associated);
}

View File

@ -0,0 +1,9 @@
package gr.cite.annotation.authorization;
public class ClaimNames {
public static final String ExternalProviderName = "ExternalProviderName";
public static final String TenantCodesClaimName = "TenantCodes";
public static final String TenantClaimName = "x-tenant";
public static final String GlobalRolesClaimName = "GlobalRoles";
public static final String TenantRolesClaimName = "TenantRoles";
}

View File

@ -0,0 +1,6 @@
package gr.cite.annotation.authorization;
import gr.cite.commons.web.authz.policy.AuthorizationRequirement;
public class OwnedAuthorizationRequirement implements AuthorizationRequirement {
}

View File

@ -0,0 +1,26 @@
package gr.cite.annotation.authorization;
import gr.cite.commons.web.authz.policy.AuthorizationResource;
import java.util.List;
import java.util.UUID;
public class OwnedResource extends AuthorizationResource {
private List<UUID> userIds;
public OwnedResource(UUID userId) {
this(List.of(userId));
}
public OwnedResource(List<UUID> userIds) {
this.userIds = userIds;
}
public List<UUID> getUserIds() {
return userIds;
}
public void setUserIds(List<UUID> userIds) {
this.userIds = userIds;
}
}

View File

@ -0,0 +1,27 @@
package gr.cite.annotation.authorization;
public final class Permission {
public static String DeferredAffiliation = "DeferredAffiliation";
//User
public static String BrowseUser = "BrowseUser";
public static String EditUser = "EditUser";
public static String DeleteUser = "DeleteUser";
//Tenant
public static String BrowseTenant = "BrowseTenant";
public static String EditTenant = "EditTenant";
public static String DeleteTenant = "DeleteTenant";
public static String AllowNoTenant = "AllowNoTenant";
//Annotation
public static final String BrowseAnnotation = "BrowseAnnotation";
public static String NewAnnotation = "NewAnnotation";
public static String EditAnnotation = "EditAnnotation";
public static String DeleteAnnotation = "DeleteAnnotation";
public static final String BrowseTenantConfiguration = "BrowseTenantConfiguration";
public static final String EditTenantConfiguration = "EditTenantConfiguration";
}

View File

@ -0,0 +1,39 @@
package gr.cite.annotation.authorization;
import gr.cite.annotation.convention.ConventionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
@Service
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public class PermissionNameProvider {
private static final Logger logger = LoggerFactory.getLogger(PermissionNameProvider.class);
private final List<String> permissions;
public PermissionNameProvider(ConventionService conventionService) {
this.permissions = new ArrayList<>();
Class<Permission> clazz = Permission.class;
for (Field f : clazz.getDeclaredFields()) {
if (Modifier.isStatic(f.getModifiers())) {
try {
Object value = f.get(null);
if (value != null && !conventionService.isNullOrEmpty((String)value)) this.permissions.add((String)value);
} catch (Exception e) {
logger.error("Can not load permission " + f.getName() + " " + e.getMessage());
}
}
}
}
public List<String> getPermissions() {
return permissions;
}
}

View File

@ -0,0 +1,10 @@
package gr.cite.annotation.authorization.authorizationcontentresolver;
import gr.cite.tools.cache.CacheOptions;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "cache.affiliation")
public class AffiliationCacheOptions extends CacheOptions {
}

View File

@ -0,0 +1,95 @@
package gr.cite.annotation.authorization.authorizationcontentresolver;
import gr.cite.annotation.authorization.AffiliatedResource;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Locale;
import java.util.UUID;
@Service
public class AffiliationCacheService extends CacheService<AffiliationCacheService.AffiliationCacheValue> {
public static class AffiliationCacheValue {
public AffiliationCacheValue() {
}
public AffiliationCacheValue(UUID userId, UUID entityId, String entityType, AffiliatedResource affiliatedResource) {
this.userId = userId;
this.entityId = entityId;
this.entityType = entityType;
this.affiliatedResource = affiliatedResource;
}
private UUID userId;
private UUID entityId;
private String entityType;
private AffiliatedResource affiliatedResource;
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public UUID getEntityId() {
return entityId;
}
public void setEntityId(UUID entityId) {
this.entityId = entityId;
}
public String getEntityType() {
return entityType;
}
public void setEntityType(String entityType) {
this.entityType = entityType;
}
public AffiliatedResource getAffiliatedResource() {
return affiliatedResource;
}
public void setAffiliatedResource(AffiliatedResource affiliatedResource) {
this.affiliatedResource = affiliatedResource;
}
}
private final ConventionService conventionService;
@Autowired
public AffiliationCacheService(AffiliationCacheOptions options, ConventionService conventionService) {
super(options);
this.conventionService = conventionService;
}
@Override
protected Class<AffiliationCacheValue> valueClass() {
return AffiliationCacheValue.class;
}
@Override
public String keyOf(AffiliationCacheValue value) {
return this.buildKey(value.getUserId(), value.getEntityId(), value.getEntityType());
}
public String buildKey(UUID userId, UUID entityId, String entityType) {
if (userId == null) throw new IllegalArgumentException("userId id is required");
if (entityId == null) throw new IllegalArgumentException("entityId id is required");
if (this.conventionService.isNullOrEmpty(entityType)) throw new IllegalArgumentException("entityType id is required");
HashMap<String, String> keyParts = new HashMap<>();
keyParts.put("$user$", userId.toString().replace("-", "").toLowerCase(Locale.ROOT));
keyParts.put("$entity$", entityId.toString().replace("-", "").toLowerCase(Locale.ROOT));
keyParts.put("$type$", entityType);
return this.generateKey(keyParts);
}
}

View File

@ -0,0 +1,20 @@
package gr.cite.annotation.authorization.authorizationcontentresolver;
import gr.cite.annotation.authorization.AffiliatedResource;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public interface AuthorizationContentResolver {
AffiliatedResource entityAffiliation(UUID id);
Map<UUID, AffiliatedResource> entitiesAffiliation(List<UUID> ids);
List<String> getPermissionNames();
AffiliatedResource annotationAffiliation(UUID id);
Map<UUID, AffiliatedResource> annotationsAffiliation(List<UUID> ids);
}

View File

@ -0,0 +1,118 @@
package gr.cite.annotation.authorization.authorizationcontentresolver;
import gr.cite.annotation.authorization.AffiliatedResource;
import gr.cite.annotation.authorization.PermissionNameProvider;
import gr.cite.annotation.common.enums.IsActive;
import gr.cite.annotation.common.scope.user.UserScope;
import gr.cite.annotation.data.AnnotationEntity;
import gr.cite.annotation.data.EntityUserEntity;
import gr.cite.annotation.model.Annotation;
import gr.cite.annotation.model.EntityUser;
import gr.cite.annotation.query.AnnotationQuery;
import gr.cite.annotation.query.EntityUserQuery;
import gr.cite.tools.data.query.QueryFactory;
import gr.cite.tools.fieldset.BaseFieldSet;
import org.springframework.stereotype.Service;
import org.springframework.web.context.annotation.RequestScope;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequestScope
public class AuthorizationContentResolverImpl implements AuthorizationContentResolver {
private final QueryFactory queryFactory;
private final UserScope userScope;
private final AffiliationCacheService affiliationCacheService;
private final PermissionNameProvider permissionNameProvider;
public AuthorizationContentResolverImpl(QueryFactory queryFactory, UserScope userScope, AffiliationCacheService affiliationCacheService, PermissionNameProvider permissionNameProvider) {
this.queryFactory = queryFactory;
this.userScope = userScope;
this.affiliationCacheService = affiliationCacheService;
this.permissionNameProvider = permissionNameProvider;
}
@Override
public AffiliatedResource entityAffiliation(UUID id) {
return this.entitiesAffiliation(List.of(id)).getOrDefault(id, new AffiliatedResource());
}
@Override
public Map<UUID, AffiliatedResource> entitiesAffiliation(List<UUID> ids){
UUID userId = this.userScope.getUserIdSafe();
Map<UUID, AffiliatedResource> affiliatedResources = new HashMap<>();
for (UUID id : ids){
affiliatedResources.put(id, new AffiliatedResource());
}
if (userId == null || !userScope.isSet()) return affiliatedResources;
List<UUID> idsToResolve = this.getAffiliatedFromCache(ids, userId, affiliatedResources, AnnotationEntity._entityId);
if (idsToResolve.isEmpty()) return affiliatedResources;
List<EntityUserEntity> entityUsers = this.queryFactory.query(EntityUserQuery.class).entityIds(ids).userIds(userId).isActive(IsActive.Active).collectAs(new BaseFieldSet().ensure(EntityUser._id).ensure(EntityUser._entityId));
for (UUID entityId : entityUsers.stream().map(EntityUserEntity::getEntityId).distinct().toList()){
affiliatedResources.get(entityId).setAffiliated(true);
}
this.ensureAffiliatedInCache(idsToResolve, userId, affiliatedResources, AnnotationEntity._entityId);
return affiliatedResources;
}
@Override
public List<String> getPermissionNames() {
return permissionNameProvider.getPermissions();
}
@Override
public AffiliatedResource annotationAffiliation(UUID id) {
return this.annotationsAffiliation(List.of(id)).getOrDefault(id, new AffiliatedResource());
}
@Override
public Map<UUID, AffiliatedResource> annotationsAffiliation(List<UUID> ids){
UUID userId = this.userScope.getUserIdSafe();
Map<UUID, AffiliatedResource> affiliatedResources = new HashMap<>();
for (UUID id : ids){
affiliatedResources.put(id, new AffiliatedResource());
}
if (userId == null || !userScope.isSet()) return affiliatedResources;
List<UUID> idsToResolve = this.getAffiliatedFromCache(ids, userId, affiliatedResources, AnnotationEntity.class.getSimpleName());
if (idsToResolve.isEmpty()) return affiliatedResources;
List<AnnotationEntity> annotationEntities = this.queryFactory.query(AnnotationQuery.class).ids(ids).collectAs(new BaseFieldSet().ensure(Annotation._id).ensure(Annotation._entityId).ensure(Annotation._id));
List<EntityUserEntity> entityUsers = this.queryFactory.query(EntityUserQuery.class).entityIds(annotationEntities.stream().map(AnnotationEntity::getEntityId).distinct().toList()).userIds(userId).isActive(IsActive.Active).collectAs(new BaseFieldSet().ensure(EntityUser._id).ensure(EntityUser._entityId));
Map<UUID, List<EntityUserEntity>> dmpUsersMap = entityUsers.stream().collect(Collectors.groupingBy(EntityUserEntity::getEntityId));
for (AnnotationEntity annotation : annotationEntities){
List<EntityUserEntity> dmpDescriptionUsers = dmpUsersMap.getOrDefault(annotation.getEntityId(), new ArrayList<>());
if (!dmpDescriptionUsers.isEmpty()) {
affiliatedResources.get(annotation.getId()).setAffiliated(true);
}
}
this.ensureAffiliatedInCache(idsToResolve, userId, affiliatedResources, AnnotationEntity.class.getSimpleName());
return affiliatedResources;
}
private List<UUID> getAffiliatedFromCache(List<UUID> ids, UUID userId, Map<UUID, AffiliatedResource> affiliatedResources, String entityType){
List<UUID> idsToResolve = new ArrayList<>();
for (UUID id : ids){
AffiliationCacheService.AffiliationCacheValue cacheValue = this.affiliationCacheService.lookup(this.affiliationCacheService.buildKey(userId, id, entityType));
if (cacheValue != null) affiliatedResources.put(id, cacheValue.getAffiliatedResource());
else idsToResolve.add(id);
}
return idsToResolve;
}
private void ensureAffiliatedInCache(List<UUID> idsToResolve, UUID userId, Map<UUID, AffiliatedResource> affiliatedResources, String entityType){
for (UUID id : idsToResolve){
AffiliatedResource affiliatedResource = affiliatedResources.getOrDefault(id, null);
if (affiliatedResource != null) {
AffiliationCacheService.AffiliationCacheValue cacheValue = new AffiliationCacheService.AffiliationCacheValue(userId, id, entityType, affiliatedResource);
this.affiliationCacheService.put(cacheValue);
}
}
}
}

View File

@ -0,0 +1,43 @@
package gr.cite.annotation.common;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import gr.cite.tools.logging.LoggerService;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class JsonHandlingService {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(JsonHandlingService.class));
private final ObjectMapper objectMapper = new ObjectMapper();
public String toJson(Object item) throws JsonProcessingException {
if (item == null) return null;
return objectMapper.writeValueAsString(item);
}
public String toJsonSafe(Object item) {
if (item == null) return null;
try {
return objectMapper.writeValueAsString(item);
} catch (Exception ex) {
logger.error("Json Parsing Error: " + ex.getLocalizedMessage(), ex);
return null;
}
}
public <T> T fromJson(Class<T> type, String json) throws JsonProcessingException {
if (json == null) return null;
return objectMapper.readValue(json, type);
}
public <T> T fromJsonSafe(Class<T> type, String json) {
if (json == null) return null;
try {
return objectMapper.readValue(json, type);
} catch (Exception ex) {
logger.error("Json Parsing Error: " + ex.getLocalizedMessage(), ex);
return null;
}
}
}

View File

@ -0,0 +1,8 @@
package gr.cite.annotation.common;
public class StringUtils {
public static Boolean isNullOrEmpty(String string) {
return string == null || string.isEmpty();
}
}

View File

@ -0,0 +1,117 @@
package gr.cite.annotation.common;
import com.fasterxml.jackson.core.JsonProcessingException;
import gr.cite.annotation.common.types.xml.XmlSerializable;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.Unmarshaller;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.management.InvalidApplicationException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public class XmlHandlingService {
public String generateXml(Document doc) throws TransformerException {
TransformerFactory tFact = TransformerFactory.newInstance();
Transformer trans = tFact.newTransformer();
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
DOMSource source = new DOMSource(doc);
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
trans.transform(source, result);
return writer.toString();
}
public String toXml(Object item) throws JsonProcessingException, JAXBException, ParserConfigurationException, InvalidApplicationException, TransformerException {
if (XmlSerializable.class.isAssignableFrom(item.getClass())){
Document document = this.getDocument();
if (document == null) throw new InvalidApplicationException("Can not create document");
document.appendChild(((XmlSerializable)item).toXml(document));
return this.generateXml(document);
}
JAXBContext context = JAXBContext.newInstance(item.getClass());
Marshaller marshaller = context.createMarshaller();
StringWriter out = new StringWriter();
marshaller.marshal(item, out);
return out.toString();
}
public String toXmlSafe(Object item) {
if (item == null) return null;
try {
return this.toXml(item);
} catch (Exception ex) {
return null;
}
}
public <T> T fromXml(Class<T> type, String xmlString) throws JAXBException, InstantiationException, IllegalAccessException, ParserConfigurationException, IOException, SAXException {
if (XmlSerializable.class.isAssignableFrom(type)){
XmlSerializable<T> object = (XmlSerializable<T>)type.newInstance();
return (T) object.fromXml(this.getDocument(xmlString).getDocumentElement());
} else {
JAXBContext jaxbContext = JAXBContext.newInstance(type);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
return (T) jaxbUnmarshaller.unmarshal(new StringReader(xmlString));
}
}
public <T> T fromXmlSafe(Class<T> type, String xmlString) {
if (xmlString == null) return null;
try {
return this.fromXml(type, xmlString);
} catch (Exception ex) {
return null;
}
}
// public <T extends XmlSerializable<T>> T xmlSerializableFromXml(Class<T> type, String xmlString) throws JAXBException, InstantiationException, IllegalAccessException, ParserConfigurationException, IOException, SAXException {
// T object = type.newInstance();
// return (T) object.fromXml(this.getDocument(xmlString).getDocumentElement());
// }
//
// public <T extends XmlSerializable<T>> T xmlSerializableFromXmlSafe(Class<T> type, String xmlString) {
// if (xmlString == null) return null;
// try {
// return this.xmlSerializableFromXml(type, xmlString);
// } catch (Exception ex) {
// return null;
// }
// }
public Document getDocument(String xml) throws ParserConfigurationException, IOException, SAXException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
InputSource inputStream = new InputSource(new StringReader(xml));
return docBuilder.parse(inputStream);
}
public Document getDocument() throws ParserConfigurationException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
return docBuilder.newDocument();
}
}

View File

@ -0,0 +1,30 @@
package gr.cite.annotation.common.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import gr.cite.annotation.data.conventers.DatabaseEnum;
import java.util.Map;
public enum AnnotationProtectionType implements DatabaseEnum<Short> {
Private((short) 0),
EntityAccessors((short) 1);
private final Short value;
AnnotationProtectionType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, AnnotationProtectionType> map = EnumUtils.getEnumValueMap(AnnotationProtectionType.class);
public static AnnotationProtectionType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,29 @@
package gr.cite.annotation.common.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import gr.cite.annotation.data.conventers.DatabaseEnum;
import java.util.Map;
public enum ContactInfoType implements DatabaseEnum<Short> {
Email((short) 0),
MobilePhone((short) 1),
LandLinePhone((short) 2);
private final Short value;
ContactInfoType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ContactInfoType> map = EnumUtils.getEnumValueMap(ContactInfoType.class);
public static ContactInfoType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,16 @@
package gr.cite.annotation.common.enums;
import gr.cite.annotation.data.conventers.DatabaseEnum;
import java.util.HashMap;
import java.util.Map;
public class EnumUtils {
public static <EnumType extends Enum<EnumType> & DatabaseEnum<EnumValue>, EnumValue> Map<EnumValue, EnumType> getEnumValueMap(Class<EnumType> enumType){
HashMap<EnumValue, EnumType> map = new HashMap<>();
for (EnumType v : enumType.getEnumConstants()) {
map.put(v.getValue(), v);
}
return map;
}
}

View File

@ -0,0 +1,28 @@
package gr.cite.annotation.common.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import gr.cite.annotation.data.conventers.DatabaseEnum;
import java.util.Map;
public enum IsActive implements DatabaseEnum<Short> {
Inactive((short) 0),
Active((short) 1);
private final Short value;
IsActive(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, IsActive> map = EnumUtils.getEnumValueMap(IsActive.class);
public static IsActive of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,29 @@
package gr.cite.annotation.common.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import gr.cite.annotation.data.conventers.DatabaseEnum;
import java.util.Map;
public enum TenantConfigurationType implements DatabaseEnum<Short> {
EMAIL_CLIENT_CONFIGURATION((short)1),
DEFAULT_USER_LOCALE((short)3),
NOTIFIER_LIST((short)4);
private final Short value;
TenantConfigurationType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, TenantConfigurationType> map = EnumUtils.getEnumValueMap(TenantConfigurationType.class);
public static TenantConfigurationType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,58 @@
package gr.cite.annotation.common.lock;
import org.springframework.stereotype.Service;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantLock;
@Service
public class LockByKeyManager {
private static class LockWrapper {
private final ReentrantLock lock = new ReentrantLock();
private final AtomicInteger numberOfThreadsInQueue = new AtomicInteger(1);
private LockWrapper addThreadInQueue() {
numberOfThreadsInQueue.incrementAndGet();
return this;
}
private int removeThreadFromQueue() {
return numberOfThreadsInQueue.decrementAndGet();
}
}
private static ConcurrentHashMap<String, LockWrapper> locks = new ConcurrentHashMap<String, LockWrapper>();
public void lock(String key) {
LockWrapper lockWrapper = locks.compute(key, (k, v) -> v == null ? new LockWrapper() : v.addThreadInQueue());
lockWrapper.lock.lock();
}
public boolean tryLock(String key, long timeout, TimeUnit unit) throws InterruptedException {
LockWrapper lockWrapper = null;
try {
lockWrapper = locks.compute(key, (k, v) -> v == null ? new LockWrapper() : v.addThreadInQueue());
return lockWrapper.lock.tryLock(timeout, unit);
} catch (Exception ex){
if (lockWrapper != null && lockWrapper.removeThreadFromQueue() == 0) {
// NB : We pass in the specific value to remove to handle the case where another thread would queue right before the removal
locks.remove(key, lockWrapper);
}
throw ex;
}
}
public void unlock(String key) {
LockWrapper lockWrapper = locks.get(key);
lockWrapper.lock.unlock();
if (lockWrapper.removeThreadFromQueue() == 0) {
// NB : We pass in the specific value to remove to handle the case where another thread would queue right before the removal
locks.remove(key, lockWrapper);
}
}
}

View File

@ -0,0 +1,125 @@
package gr.cite.annotation.common.scope.fake;
import org.springframework.util.Assert;
import org.springframework.web.context.request.RequestAttributes;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class FakeRequestAttributes implements RequestAttributes {
private Map<String, Object> requestAttributeMap = new HashMap<>();
private final Map<String, Runnable> requestDestructionCallbacks = new LinkedHashMap<>(8);
private volatile boolean requestActive = true;
@Override
public Object getAttribute(String name, int scope) {
if (scope == RequestAttributes.SCOPE_REQUEST) {
if (!isRequestActive()) {
throw new IllegalStateException("Cannot ask for request attribute - request is not active anymore!");
}
return this.requestAttributeMap.get(name);
} else {
throw new IllegalStateException("Only " + RequestAttributes.SCOPE_REQUEST + " allowed for " + FakeRequestAttributes.class.getSimpleName());
}
}
@Override
public void setAttribute(String name, Object value, int scope) {
if (scope == RequestAttributes.SCOPE_REQUEST) {
if (!isRequestActive()) {
throw new IllegalStateException("Cannot set request attribute - request is not active anymore!");
}
this.requestAttributeMap.put(name, value);
} else {
throw new IllegalStateException("Only " + RequestAttributes.SCOPE_REQUEST + " allowed for " + FakeRequestAttributes.class.getSimpleName());
}
}
@Override
public void removeAttribute(String name, int scope) {
if (scope == RequestAttributes.SCOPE_REQUEST) {
if (isRequestActive()) {
removeRequestDestructionCallback(name);
this.requestAttributeMap.remove(name);
}
} else {
throw new IllegalStateException("Only " + RequestAttributes.SCOPE_REQUEST + " allowed for " + FakeRequestAttributes.class.getSimpleName());
}
}
@Override
public String[] getAttributeNames(int scope) {
if (scope == RequestAttributes.SCOPE_REQUEST) {
if (!isRequestActive()) {
throw new IllegalStateException("Cannot ask for request attributes - request is not active anymore!");
}
return this.requestAttributeMap.keySet().toArray(new String[0]);
} else {
throw new IllegalStateException("Only " + RequestAttributes.SCOPE_REQUEST + " allowed for " + FakeRequestAttributes.class.getSimpleName());
}
//return new String[0];
}
@Override
public void registerDestructionCallback(String name, Runnable callback, int scope) {
if (scope == SCOPE_REQUEST) {
registerRequestDestructionCallback(name, callback);
} else {
throw new IllegalStateException("Only " + RequestAttributes.SCOPE_REQUEST + " allowed for " + FakeRequestAttributes.class.getSimpleName());
}
}
protected final void registerRequestDestructionCallback(String name, Runnable callback) {
Assert.notNull(name, "Name must not be null");
Assert.notNull(callback, "Callback must not be null");
synchronized (this.requestDestructionCallbacks) {
this.requestDestructionCallbacks.put(name, callback);
}
}
@Override
public Object resolveReference(String key) {
// Not supported
return null;
}
@Override
public String getSessionId() {
return null;
}
@Override
public Object getSessionMutex() {
return null;
}
public void requestCompleted() {
executeRequestDestructionCallbacks();
for (String name : getAttributeNames(RequestAttributes.SCOPE_REQUEST)) {
this.removeAttribute(name, RequestAttributes.SCOPE_REQUEST);
}
this.requestActive = false;
}
private final boolean isRequestActive() {
return this.requestActive;
}
private final void removeRequestDestructionCallback(String name) {
Assert.notNull(name, "Name must not be null");
synchronized (this.requestDestructionCallbacks) {
this.requestDestructionCallbacks.remove(name);
}
}
private void executeRequestDestructionCallbacks() {
synchronized (this.requestDestructionCallbacks) {
for (Runnable runnable : this.requestDestructionCallbacks.values()) {
runnable.run();
}
this.requestDestructionCallbacks.clear();
}
}
}

View File

@ -0,0 +1,40 @@
package gr.cite.annotation.common.scope.fake;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import java.io.Closeable;
public class FakeRequestScope implements Closeable {
private RequestAttributes initialRequestAttributes = null;
private FakeRequestAttributes currentRequestAttributes = null;
boolean isInUse = false;
public FakeRequestScope() {
this.reset();
}
public void reset() {
this.close();
this.isInUse = true;
this.initialRequestAttributes = RequestContextHolder.getRequestAttributes();
this.currentRequestAttributes = new FakeRequestAttributes();
RequestContextHolder.setRequestAttributes(this.currentRequestAttributes);
}
@Override
public void close() {
if (!this.isInUse) return;
this.isInUse = false;
if (initialRequestAttributes != null) RequestContextHolder.setRequestAttributes(initialRequestAttributes);
else RequestContextHolder.resetRequestAttributes();
if (currentRequestAttributes != null) currentRequestAttributes.requestCompleted();
this.initialRequestAttributes = null;
this.currentRequestAttributes = null;
}
}

View File

@ -0,0 +1,9 @@
package gr.cite.annotation.common.scope.tenant;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(MultitenancyProperties.class)
public class MultitenancyConfiguration {
}

View File

@ -0,0 +1,29 @@
package gr.cite.annotation.common.scope.tenant;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "tenant.multitenancy")
public class MultitenancyProperties {
private boolean isMultitenant;
private String defaultTenantCode;
public boolean isMultitenant() {
return isMultitenant;
}
public void setIsMultitenant(boolean multitenant) {
isMultitenant = multitenant;
}
public void setMultitenant(boolean multitenant) {
isMultitenant = multitenant;
}
public String getDefaultTenantCode() {
return defaultTenantCode;
}
public void setDefaultTenantCode(String defaultTenantCode) {
this.defaultTenantCode = defaultTenantCode;
}
}

View File

@ -0,0 +1,127 @@
package gr.cite.annotation.common.scope.tenant;
import gr.cite.annotation.data.tenant.TenantScopedBaseEntity;
import jakarta.persistence.EntityManager;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;
import javax.management.InvalidApplicationException;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicReference;
@Component
@RequestScope
public class TenantScope {
public static final String TenantReplaceParameter = "::TenantCode::";
private final MultitenancyProperties multitenancy;
private final AtomicReference<UUID> tenant = new AtomicReference<>();
private final AtomicReference<String> tenantCode = new AtomicReference<>();
private final AtomicReference<UUID> initialTenant = new AtomicReference<>();
private final AtomicReference<String> initialTenantCode = new AtomicReference<>();
@Autowired
public TenantScope(MultitenancyProperties multitenancy) {
this.multitenancy = multitenancy;
}
public Boolean isMultitenant() {
return multitenancy.isMultitenant();
}
public String getDefaultTenantCode() {
return multitenancy.getDefaultTenantCode();
}
public Boolean isSet() {
if (!this.isMultitenant())
return Boolean.TRUE;
return this.tenant.get() != null || this.isDefaultTenant();
}
public Boolean isDefaultTenant() {
if (!this.isMultitenant())
return Boolean.TRUE;
return this.multitenancy.getDefaultTenantCode().equalsIgnoreCase(this.tenantCode.get());
}
public UUID getTenant() throws InvalidApplicationException {
if (!this.isMultitenant())
return null;
if (this.tenant.get() == null && !this.isDefaultTenant())
throw new InvalidApplicationException("tenant not set");
return this.isDefaultTenant() ? null : this.tenant.get();
}
public String getTenantCode() throws InvalidApplicationException {
if (!this.isMultitenant())
return null;
if (this.tenantCode.get() == null)
throw new InvalidApplicationException("tenant not set");
return this.tenantCode.get();
}
public void setTempTenant(EntityManager entityManager, UUID tenant, String tenantCode) {
this.tenant.set(tenant);
this.tenantCode.set(tenantCode);
entityManager
.unwrap(Session.class)
.disableFilter(TenantScopedBaseEntity.TENANT_FILTER);
entityManager
.unwrap(Session.class)
.disableFilter(TenantScopedBaseEntity.DEFAULT_TENANT_FILTER);
if (this.tenant.get() != null || this.isDefaultTenant()) {
if(!this.isDefaultTenant()) {
entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.TENANT_FILTER)
.setParameter(TenantScopedBaseEntity.TENANT_FILTER_TENANT_PARAM, this.tenant.get().toString());
} else {
entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.DEFAULT_TENANT_FILTER);
}
}
}
public void removeTempTenant(EntityManager entityManager) {
this.tenant.set(this.initialTenant.get());
this.tenantCode.set(this.initialTenantCode.get());
entityManager
.unwrap(Session.class)
.disableFilter(TenantScopedBaseEntity.TENANT_FILTER);
entityManager
.unwrap(Session.class)
.disableFilter(TenantScopedBaseEntity.DEFAULT_TENANT_FILTER);
if (this.initialTenant.get() != null || this.isDefaultTenant()) {
if(!this.isDefaultTenant()) {
entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.TENANT_FILTER)
.setParameter(TenantScopedBaseEntity.TENANT_FILTER_TENANT_PARAM, this.tenant.get().toString());
} else {
entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.DEFAULT_TENANT_FILTER);
}
}
}
public void setTenant(UUID tenant, String tenantCode) {
if (this.isMultitenant()) {
this.tenant.set(tenant);
this.initialTenant.set(tenant);
this.tenantCode.set(tenantCode);
this.initialTenantCode.set(tenantCode);
}
}
}

View File

@ -0,0 +1,8 @@
package gr.cite.annotation.common.scope.tenant;
import java.util.UUID;
public interface TenantScoped {
void setTenantId(UUID tenantId);
UUID getTenantId();
}

View File

@ -0,0 +1,34 @@
package gr.cite.annotation.common.scope.user;
import gr.cite.tools.logging.LoggerService;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;
import javax.management.InvalidApplicationException;
import java.util.UUID;
@Component
@RequestScope
public class UserScope {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(UserScope.class));
private UUID userId = null;
public Boolean isSet(){
return this.userId != null;
}
public UUID getUserId() throws InvalidApplicationException {
if (this.userId == null) throw new InvalidApplicationException("user not set");
return this.userId;
}
public UUID getUserIdSafe() {
return this.userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
}

View File

@ -0,0 +1,60 @@
package gr.cite.annotation.common.types.user;
import java.util.UUID;
public class AdditionalInfoEntity {
private String avatarUrl;
private String timezone;
private String culture;
private String language;
private String roleOrganization;
private UUID organizationId;
public String getAvatarUrl() {
return avatarUrl;
}
public void setAvatarUrl(String avatarUrl) {
this.avatarUrl = avatarUrl;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public String getCulture() {
return culture;
}
public void setCulture(String culture) {
this.culture = culture;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public UUID getOrganizationId() {
return organizationId;
}
public void setOrganizationId(UUID organizationId) {
this.organizationId = organizationId;
}
public String getRoleOrganization() {
return roleOrganization;
}
public void setRoleOrganization(String roleOrganization) {
this.roleOrganization = roleOrganization;
}
}

View File

@ -0,0 +1,87 @@
package gr.cite.annotation.common.types.xml;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
public class XmlBuilder {
private static final Logger logger = LoggerFactory.getLogger(XmlBuilder.class);
public static Document getDocument() {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder;
try {
docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
return doc;
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
logger.error(e.getMessage(), e);
return null;
}
}
public static String generateXml(Document doc) {
TransformerFactory tFact = TransformerFactory.newInstance();
Transformer trans;
try {
trans = tFact.newTransformer();
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
DOMSource source = new DOMSource(doc);
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
trans.transform(source, result);
return writer.toString();
} catch (TransformerException e) {
// TODO Auto-generated catch block
logger.error(e.getMessage(), e);
return null;
}
}
public static Document fromXml(String xml) {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder;
try {
docBuilder = docFactory.newDocumentBuilder();
InputSource inputStream = new InputSource(new StringReader(xml));
Document doc = docBuilder.parse(inputStream);
return doc;
} catch (ParserConfigurationException | SAXException | IOException e) {
// TODO Auto-generated catch block
logger.error(e.getMessage(), e);
return null;
}
}
public static Element getNodeFromListByTagName(NodeList list, String tagName) {
for (int temp = 0; temp < list.getLength(); temp++) {
Node element = list.item(temp);
if (element.getNodeType() == Node.ELEMENT_NODE) {
if (element.getNodeName().equals(tagName)) return (Element) element;
}
}
return null;
}
}

View File

@ -0,0 +1,11 @@
package gr.cite.annotation.common.types.xml;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public interface XmlSerializable<T> {
Element toXml(Document doc);
T fromXml(Element item);
}

View File

@ -0,0 +1,63 @@
package gr.cite.annotation.common.validation;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.annotation.errorcode.ErrorThesaurusProperties;
import gr.cite.tools.exception.MyValidationException;
import gr.cite.tools.validation.AbstractValidator;
import gr.cite.tools.validation.ValidationResult;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public abstract class BaseValidator<T> extends AbstractValidator<T> {
protected final ConventionService conventionService;
protected final ErrorThesaurusProperties errors;
protected BaseValidator(ConventionService conventionService, ErrorThesaurusProperties errors) {
this.conventionService = conventionService;
this.errors = errors;
}
@Override
public void validateForce(Object target) {
this.validate(target);
ValidationResult result = result();
if (!result.isValid()) {
List<Map.Entry<String, List<String>>> errorsMap = this.flattenValidationResult();
throw new MyValidationException(this.errors.getModelValidation().getCode(), errorsMap);
}
}
protected Boolean isValidGuid(UUID guid) {
return this.conventionService.isValidGuid(guid);
}
protected Boolean isValidHash(String hash) {
return this.conventionService.isValidHash(hash);
}
protected Boolean isEmpty(String value) {
return this.conventionService.isNullOrEmpty(value);
}
protected Boolean isListNullOrEmpty(List<?> value) {
return this.conventionService.isListNullOrEmpty(value);
}
protected Boolean isNull(Object value) {
return value == null;
}
protected Boolean isNull(Collection<?> value) {
return value == null;
}
protected Boolean lessEqualLength(String value, int size) {
return value.length() <= size;
}
protected Boolean lessEqual(Integer value, int target) {
return value <= target;
}
}

View File

@ -0,0 +1,42 @@
package gr.cite.annotation.common.validation;
import gr.cite.annotation.convention.ConventionService;
import gr.cite.annotation.errorcode.ErrorThesaurusProperties;
import gr.cite.tools.validation.specification.Specification;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Scope;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@Component(UuidValidator.ValidatorName)
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class UuidValidator extends BaseValidator<UUID> {
public static final String ValidatorName = "UuidValidator";
private final MessageSource messageSource;
protected UuidValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource) {
super(conventionService, errors);
this.messageSource = messageSource;
}
@Override
protected Class<UUID> modelClass() {
return UUID.class;
}
@Override
protected List<Specification> specifications(UUID item) {
return Arrays.asList(
this.spec()
.must(() -> this.isValidGuid(item))
.failOn("uuid").failWith(messageSource.getMessage("Validation_Required", new Object[]{"uuid"}, LocaleContextHolder.getLocale()))
);
}
}

View File

@ -0,0 +1,41 @@
package gr.cite.annotation.convention;
import gr.cite.tools.exception.MyApplicationException;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.function.Function;
public interface ConventionService {
Boolean isValidId(Integer id);
Boolean isValidGuid(UUID guid);
Boolean isValidUUID(String str);
UUID parseUUIDSafe(String str);
Boolean isValidHash(String hash);
String hashValue(Object value) throws MyApplicationException;
String limit(String text, int maxLength);
String truncate(String text, int maxLength);
UUID getEmptyUUID();
boolean isNullOrEmpty(String value);
boolean isListNullOrEmpty(List value);
String stringEmpty();
String asPrefix(String name);
String asIndexerPrefix(String part);
String asIndexer(String... names);
<K, V> Map<K, List<V>> toDictionaryOfList(List<V> items, Function<V, K> keySelector);
}

View File

@ -0,0 +1,150 @@
package gr.cite.annotation.convention;
import gr.cite.annotation.errorcode.ErrorThesaurusProperties;
import gr.cite.tools.exception.MyApplicationException;
import gr.cite.tools.logging.LoggerService;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.util.*;
import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public class ConventionServiceImpl implements ConventionService {
private final static Pattern UUID_REGEX_PATTERN = Pattern.compile("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$");
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(ConventionServiceImpl.class));
private final ErrorThesaurusProperties errors;
@Autowired
public ConventionServiceImpl(ErrorThesaurusProperties errors) {
this.errors = errors;
}
@Override
public Boolean isValidId(Integer id) {
return id != null && id > 0;
}
@Override
public Boolean isValidGuid(UUID guid) {
return guid != null && !guid.equals(this.getEmptyUUID());
}
@Override
public Boolean isValidUUID(String str) {
if (this.isNullOrEmpty(str)) {
return false;
}
return UUID_REGEX_PATTERN.matcher(str).matches();
}
@Override
public UUID parseUUIDSafe(String str) {
if (!this.isValidUUID(str)) {
return null;
}
try {
return UUID.fromString(str);
} catch (Exception ex){
logger.warn("invalid uuid" + str, ex);
return null;
}
}
@Override
public Boolean isValidHash(String hash) {
return !this.isNullOrEmpty(hash);
}
@Override
public String hashValue(Object value) throws MyApplicationException {
if (value == null) return this.stringEmpty();
if (value instanceof Instant) return String.format("%ts", (Instant) value);
throw new MyApplicationException(this.errors.getSystemError().getCode(), this.errors.getSystemError().getMessage());
}
@Override
public String limit(String text, int maxLength) {
if (this.isNullOrEmpty(text)) return text;
if (text.length() > maxLength) return String.format("%s...", text.substring(0, maxLength));
else return text;
}
@Override
public String truncate(String text, int maxLength) {
String truncated = text;
if (text.length() < maxLength) return text;
truncated = truncated.trim();
truncated = truncated.replaceAll("\\s+", " ");//remove multiple spaces
if (truncated.length() < maxLength) return truncated;
truncated = truncated.replaceAll("([.!@#$%^&-=':;,<>?*\\\"/|])+", "");//remove multiple spaces
if (truncated.length() < maxLength) return truncated;
truncated = truncated.replaceAll("([aeiou])+", "");//remove multiple spaces
if (truncated.length() < maxLength) return truncated;
truncated = truncated.replaceAll("([AEIOU])+", "");//remove multiple spaces
if (truncated.length() < maxLength) return truncated;
if (text.length() > maxLength) return String.format("%s...", text.substring(0, maxLength));
return text;
}
@Override
public UUID getEmptyUUID() {
return new UUID(0L, 0L);
}
@Override
public boolean isNullOrEmpty(String value) {
return value == null || value.isBlank();
}
@Override
public boolean isListNullOrEmpty(List value) {
if(value == null) return true;
return value.size() <= 0;
}
@Override
public String stringEmpty() {
return "";
}
@Override
public String asPrefix(String name) {
if (name == null) return null;
return name + ".";
}
@Override
public String asIndexer(String... names) {
if (names == null) return null;
return String.join(".", Arrays.stream(names).filter(x -> !this.isNullOrEmpty(x)).collect(Collectors.toList()));
}
@Override
public String asIndexerPrefix(String part) {
if (part == null) return null;
return part + ".";
}
@Override
public <K, V> Map<K, List<V>> toDictionaryOfList(List<V> items, Function<V, K> keySelector) {
Map<K, List<V>> map = new HashMap<>();
for (V model : items) {
K key = keySelector.apply(model);
if (!map.containsKey(key)) map.put(key, new ArrayList<V>());
map.get(key).add(model);
}
return map;
}
}

View File

@ -0,0 +1,188 @@
package gr.cite.annotation.data;
import gr.cite.annotation.common.enums.AnnotationProtectionType;
import gr.cite.annotation.common.enums.IsActive;
import gr.cite.annotation.data.conventers.AnnotationProtectionTypeConverter;
import gr.cite.annotation.data.conventers.IsActiveConverter;
import gr.cite.annotation.data.tenant.TenantScopedBaseEntity;
import jakarta.persistence.*;
import java.time.Instant;
import java.util.UUID;
@Entity
@Table(name = "\"Annotation\"")
public class AnnotationEntity extends TenantScopedBaseEntity {
@Id
@Column(name = "id", columnDefinition = "uuid", updatable = false, nullable = false)
private UUID id;
public static final String _id = "id";
@Column(name = "entity_id", columnDefinition = "uuid", nullable = false)
private UUID entityId;
public static final String _entityId = "entityId";
@Column(name = "entity_type", nullable = false)
private String entityType;
public static final String _entityType = "entityType";
@Column(name = "anchor")
private String anchor;
public static final String _anchor = "anchor";
@Column(name = "payload", nullable = false)
private String payload;
public static final String _payload = "payload";
@Column(name = "subject_id", columnDefinition = "uuid", nullable = false)
private UUID subjectId;
public static final String _subjectId = "subjectId";
@Column(name = "thread_id", columnDefinition = "uuid")
private UUID threadId;
public static final String _threadId = "threadId";
@Column(name = "parent_id", columnDefinition = "uuid")
private UUID parentId;
public static final String _parentId = "parentId";
@Column(name = "protection_type", nullable = false)
@Convert(converter = AnnotationProtectionTypeConverter.class)
private AnnotationProtectionType protectionType;
public static final String _protectionType = "protectionType";
@Column(name = "time_stamp", nullable = false)
private Instant timeStamp;
public static final String _timeStamp = "timeStamp";
@Column(name = "\"created_at\"", nullable = false)
private Instant createdAt;
public static final String _createdAt = "createdAt";
@Column(name = "\"updated_at\"", nullable = false)
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
@Column(name = "is_active", nullable = false)
@Convert(converter = IsActiveConverter.class)
private IsActive isActive;
public static final String _isActive = "isActive";
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getEntityId() {
return entityId;
}
public void setEntityId(UUID entityId) {
this.entityId = entityId;
}
public String getEntityType() {
return entityType;
}
public void setEntityType(String entityType) {
this.entityType = entityType;
}
public String getAnchor() {
return anchor;
}
public void setAnchor(String anchor) {
this.anchor = anchor;
}
public String getPayload() {
return payload;
}
public void setPayload(String payload) {
this.payload = payload;
}
public UUID getSubjectId() {
return subjectId;
}
public void setSubjectId(UUID subjectId) {
this.subjectId = subjectId;
}
public UUID getThreadId() {
return threadId;
}
public void setThreadId(UUID threadId) {
this.threadId = threadId;
}
public UUID getParentId() {
return parentId;
}
public void setParentId(UUID parentId) {
this.parentId = parentId;
}
public Instant getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(Instant timeStamp) {
this.timeStamp = timeStamp;
}
public AnnotationProtectionType getProtectionType() {
return protectionType;
}
public void setProtectionType(AnnotationProtectionType protectionType) {
this.protectionType = protectionType;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
}

View File

@ -0,0 +1,94 @@
package gr.cite.annotation.data;
import gr.cite.annotation.common.enums.IsActive;
import gr.cite.annotation.data.conventers.IsActiveConverter;
import gr.cite.annotation.data.tenant.TenantScopedBaseEntity;
import jakarta.persistence.*;
import java.time.Instant;
import java.util.UUID;
@Entity
@Table(name = "\"EntityUser\"")
public class EntityUserEntity extends TenantScopedBaseEntity {
@Id
@Column(name = "\"id\"", columnDefinition = "uuid", updatable = false, nullable = false)
private UUID id;
public static final String _id = "id";
@Column(name = "\"entity_id\"", columnDefinition = "uuid", nullable = false)
private UUID entityId;
public static final String _entityId = "entityId";
@Column(name = "\"user_id\"", columnDefinition = "uuid", nullable = false)
private UUID userId;
public static final String _userId = "userId";
@Column(name = "\"created_at\"", nullable = false)
private Instant createdAt;
public static final String _createdAt = "createdAt";
@Column(name = "\"updated_at\"", nullable = false)
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
@Column(name = "is_active", nullable = false)
@Convert(converter = IsActiveConverter.class)
private IsActive isActive;
public static final String _isActive = "isActive";
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getEntityId() {
return entityId;
}
public void setEntityId(UUID entityId) {
this.entityId = entityId;
}
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
}

Some files were not shown because too many files have changed in this diff Show More