Compare commits

..

532 Commits

Author SHA1 Message Date
George Kalampokis cd696bf55a Yet another fix and set proper file transformer base version 2024-01-18 10:08:46 +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
George Kalampokis 7b963858f2 Finalize File Transformer Builder 2024-01-16 18:07:13 +02:00
George Kalampokis 3d5be3a00a Add more missing field on File Transformer Builder 2024-01-11 18:02:38 +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
George Kalampokis 71746419fc Add FileTransformer Builders 2024-01-05 18:06:16 +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
4712 changed files with 283243 additions and 110546 deletions

5
.gitignore vendored
View File

@ -46,6 +46,9 @@ ELK.Docker/shared/data-elk/
.settings/
bin/
*.classpath
.run
openDMP/dmp-backend/uploads/
openDMP/dmp-backend/tmp/
dmp-frontend/.angular/
logs/
dmp-backend/web/src/main/resources/certificates/
/storage/

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

@ -13,3 +13,4 @@ FROM adoptopenjdk/openjdk11:alpine-jre
WORKDIR /app
COPY --from=MAVEN_BUILD /build/web/target/web-1.0-SNAPSHOT.jar /app/app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Dspring.profiles.active=${PROF}", "-Dspring.config.additional-location=/files/config/", "-cp", "/app/app.jar", "-Dloader.path=/files/repo-jars", "org.springframework.boot.loader.PropertiesLauncher"]

76
dmp-backend/core/pom.xml Normal file
View File

@ -0,0 +1,76 @@
<?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>eu.eudat</groupId>
<artifactId>dmp-backend</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>core</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>validation</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>oidc-authz</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>gr.cite.opendmp</groupId>
<artifactId>repositorydepositbase</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>gr.cite.opendmp</groupId>
<artifactId>file-transformer-base</artifactId>
<version>0.0.3</version>
</dependency>
<dependency>
<groupId>gr.cite</groupId>
<artifactId>elastic</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.angus</groupId>
<artifactId>jakarta.mail</artifactId>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>21</source>
<target>21</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,133 @@
package eu.eudat.audit;
import gr.cite.tools.logging.EventId;
public class AuditableAction {
public static final EventId DescriptionTemplateType_Query = new EventId(1000, "DescriptionTemplateType_Query");
public static final EventId DescriptionTemplateType_Lookup = new EventId(1001, "DescriptionTemplateType_Lookup");
public static final EventId DescriptionTemplateType_Persist = new EventId(1002, "DescriptionTemplateType_Persist");
public static final EventId DescriptionTemplateType_Delete = new EventId(1003, "DescriptionTemplateType_Delete");
public static final EventId EntityDoi_Query = new EventId(2000, "EntityDoi_Query");
public static final EventId EntityDoi_Lookup = new EventId(2001, "EntityDoi_Lookup");
public static final EventId EntityDoi_Persist = new EventId(2002, "EntityDoi_Persist");
public static final EventId EntityDoi_Delete = new EventId(2003, "EntityDoi_Delete");
public static final EventId DmpBlueprint_Query = new EventId(3000, "DmpBlueprint_Query");
public static final EventId DmpBlueprint_Lookup = new EventId(3001, "DmpBlueprint_Lookup");
public static final EventId DmpBlueprint_Persist = new EventId(3002, "DmpBlueprint_Persist");
public static final EventId DmpBlueprint_Delete = new EventId(3003, "DmpBlueprint_Delete");
public static final EventId DmpBlueprint_Clone = new EventId(3004, "DmpBlueprint_Clone");
public static final EventId DmpBlueprint_GetXml = new EventId(3005, "DmpBlueprint_GetXml");
public static final EventId DmpBlueprint_Import = new EventId(3006, "DmpBlueprint_Import");
public static final EventId User_Settings_Query = new EventId(4000, "User_Settings_Query");
public static final EventId User_Settings_Lookup = new EventId(4001, "User_Settings_Lookup");
public static final EventId User_Settings_Persist = new EventId(4002, "User_Settings_Persist");
public static final EventId User_Settings_Delete = new EventId(4003, "User_Settings_Delete");
public static final EventId Dmp_Query = new EventId(5000, "Dmp_Query");
public static final EventId Dmp_Lookup = new EventId(5001, "Dmp_Lookup");
public static final EventId Dmp_Persist = new EventId(5002, "Dmp_Persist");
public static final EventId Dmp_Delete = new EventId(5003, "Dmp_Delete");
public static final EventId Dmp_Clone = new EventId(5004, "Dmp_Clone");
public static final EventId Dmp_PersistNewVersion = new EventId(5005, "Dmp_PersistNewVersion");
public static final EventId Dmp_Assign_Users = new EventId(5006, "Dmp_Assign_Users");
public static final EventId Dmp_RemoveUser = new EventId(5007, "Dmp_RemoveUser");
public static final EventId Dmp_Invite_Users = new EventId(5008, "Dmp_Invite_Users");
public static final EventId Dmp_Invite_Accept = new EventId(5009, "Dmp_Invite_Accept");
public static final EventId Description_Query = new EventId(6000, "Description_Query");
public static final EventId Description_Lookup = new EventId(6001, "Description_Lookup");
public static final EventId Description_Persist = new EventId(6002, "Description_Persist");
public static final EventId Description_Delete = new EventId(6003, "Description_Delete");
public static final EventId Description_PublicQuery = new EventId(6004, "Description_PublicQuery");
public static final EventId Description_PublicLookup = new EventId(6005, "Description_PublicLookup");
public static final EventId Description_PersistStatus = new EventId(6006, "Description_PersistStatus");
public static final EventId Reference_Query = new EventId(7000, "Reference_Query");
public static final EventId Reference_Lookup = new EventId(7001, "Reference_Lookup");
public static final EventId Reference_Persist = new EventId(7002, "Reference_Persist");
public static final EventId Reference_Delete = new EventId(7003, "Reference_Delete");
public static final EventId Reference_Search = new EventId(7004, "Reference_Search");
public static final EventId DescriptionTemplate_Query = new EventId(8000, "DescriptionTemplate_Query");
public static final EventId DescriptionTemplate_Lookup = new EventId(8001, "DescriptionTemplate_Lookup");
public static final EventId DescriptionTemplate_Persist = new EventId(8002, "DescriptionTemplate_Persist");
public static final EventId DescriptionTemplate_Delete = new EventId(8003, "DescriptionTemplate_Delete");
public static final EventId DescriptionTemplate_Clone = new EventId(8004, "DescriptionTemplate_Clone");
public static final EventId DescriptionTemplate_PersistNewVersion = new EventId(8005, "DescriptionTemplate_PersistNewVersion");
public static final EventId DescriptionTemplate_GetXml = new EventId(8006, "DescriptionTemplate_GetXml");
public static final EventId DescriptionTemplate_Import = new EventId(8007, "DescriptionTemplate_Import");
public static final EventId DescriptionTemplate_GetSemantics = new EventId(8007, "DescriptionTemplate_GetSemantics");
public static final EventId SupportiveMaterial_Query = new EventId(9000, "SupportiveMaterial_Query");
public static final EventId SupportiveMaterial_Lookup = new EventId(9001, "SupportiveMaterial_Lookup");
public static final EventId SupportiveMaterial_Persist = new EventId(9002, "SupportiveMaterial_Persist");
public static final EventId SupportiveMaterial_Delete = new EventId(9003, "SupportiveMaterial_Delete");
public static final EventId ReferenceType_Query = new EventId(10000, "ReferenceType_Query");
public static final EventId ReferenceType_Lookup = new EventId(10001, "ReferenceType_Lookup");
public static final EventId ReferenceType_Persist = new EventId(10002, "ReferenceType_Persist");
public static final EventId ReferenceType_Delete = new EventId(10003, "ReferenceType_Delete");
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 User_LookupByEmail = new EventId(11004, "User_LookupByEmail");
public static final EventId User_ExportCsv = new EventId(11005, "User_ExportCsv");
public static final EventId User_PersistRoles = new EventId(11006, "User_PersistRoles");
public static final EventId User_LanguageMine = new EventId(11007, "User_LanguageMine");
public static final EventId User_TimezoneMine = new EventId(11008, "User_TimezoneMine");
public static final EventId User_CultureMine = new EventId(11009, "User_CultureMine");
public static final EventId User_MergeRequest = new EventId(11010, "User_MergeRequest");
public static final EventId User_MergeConfirm = new EventId(11011, "User_MergeConfirm");
public static final EventId User_RemoveCredentialRequest = new EventId(11012, "User_RemoveCredentialRequest");
public static final EventId User_RemoveCredentialConfirm = new EventId(11013, "User_RemoveCredentialConfirm");
public static final EventId User_DmpAssociatedQuery = new EventId(11014, "User_DmpAssociatedQuery");
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 Language_Query = new EventId(13000, "Language_Query");
public static final EventId Language_Lookup = new EventId(13001, "Language_Lookup");
public static final EventId Language_Persist = new EventId(13002, "Language_Persist");
public static final EventId Language_Delete = new EventId(13003, "Language_Delete");
public static final EventId StorageFile_Download = new EventId(14000, "StorageFile_Download");
public static final EventId StorageFile_Upload = new EventId(14001, "StorageFile_Upload");
public static final EventId Dashboard_MyRecentActivityItems = new EventId(15000, "Dashboard_MyRecentActivityItems");
public static final EventId Dashboard_MyDashboardStatistics = new EventId(15001, "Dashboard_MyDashboardStatistics");
public static final EventId Dashboard_PublicDashboardStatistics = new EventId(15002, "Dashboard_PublicDashboardStatistics");
public static final EventId Notification_Persist = new EventId(16000, "Notification_Persist");
public static final EventId Lock_Query = new EventId(17000, "Lock_Query");
public static final EventId Lock_Lookup = new EventId(17001, "Lock_Lookup");
public static final EventId Lock_Persist = new EventId(17002, "Lock_Persist");
public static final EventId Lock_Delete = new EventId(17003, "Lock_Delete");
public static final EventId Lock_IsLocked = new EventId(17004, "Lock_IsLocked");
public static final EventId Lock_UnLocked = new EventId(17005, "Lock_UnLocked");
public static final EventId Deposit_GetAvailableRepositories = new EventId(18000, "Deposit_GetAvailableRepositories");
public static final EventId Deposit_GetAccessToken = new EventId(18001, "Deposit_GetAccessToken");
public static final EventId Deposit_Deposit = new EventId(18002, "Deposit_Deposit");
public static final EventId Deposit_GetLogo = new EventId(18003, "Deposit_GetLogo");
public static final EventId Tag_Query = new EventId(19000, "Tag_Query");
public static final EventId Tag_Lookup = new EventId(19001, "Tag_Lookup");
public static final EventId Tag_Persist = new EventId(19002, "Tag_Persist");
public static final EventId Tag_Delete = new EventId(19003, "Tag_Delete");
public static final EventId FileTransformer_GetAvailableConfigurations = new EventId(20000, "FileTransformer_GetAvailableConfigurations");
public static final EventId ContactSupport_Sent = new EventId(210000, "ContactSupport_Sent");
public static final EventId ContactSupport_PublicSent = new EventId(210001, "ContactSupport_PublicSent");
}

View File

@ -0,0 +1,8 @@
package eu.eudat.authorization;
import java.util.EnumSet;
public enum AuthorizationFlags {
None, Permission, DmpAssociated, Public, Owner;
public static final EnumSet<AuthorizationFlags> OwnerOrDmpAssociatedOrPermissionOrPublic = EnumSet.of(DmpAssociated, Permission, Public, Owner);
}

View File

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

View File

@ -0,0 +1,26 @@
package eu.eudat.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,182 @@
package eu.eudat.authorization;
public final class Permission {
/////// Should Remove after Refactor
public static String AnonymousRole = "AnonymousRole";
public static String AdminRole = "AdminRole";
public static String ManagerRole = "ManagerRole";
public static String UserRole = "UserRole";
public static String AuthenticatedRole = "AuthenticatedRole";
public static String PublicRole = "PublicRole";
public static String DatasetProfileManagerRole = "DatasetProfileManagerRole";
/////
//Public
public static String PublicBrowseDescription = "PublicBrowseDescription";
public static String PublicBrowseDescriptionTemplate = "BrowseDescriptionTemplate";
public static String PublicBrowseDmp = "PublicBrowseDmp";
public static String PublicBrowseDmpReference = "PublicBrowseDmpReference";
public static String PublicBrowseDmpUser = "PublicBrowseDmpUser";
public static String PublicBrowseReference = "PublicBrowseReference";
public static String PublicBrowseUser = "PublicBrowseUser";
public static String PublicBrowseDashboardStatistics = "PublicBrowseDashboardStatistics";
public static String PublicSendContactSupport = "PublicSendContactSupport";
//Elastic
public static String ManageElastic = "ManageElastic";
//Deposit
public static String BrowseDeposit = "BrowseDeposit";
public static String EditDeposit = "BrowseDeposit";
//Language
public static String BrowseLanguage = "BrowseLanguage";
public static String EditLanguage = "EditLanguage";
public static String DeleteLanguage = "DeleteLanguage";
//Language
public static String BrowseStatistics = "BrowseStatistics";
public static String BrowsePublicStatistics = "BrowsePublicStatistics";
//DescriptionTemplate
public static String BrowseDescriptionTemplate = "BrowseDescriptionTemplate";
public static String EditDescriptionTemplate = "EditDescriptionTemplate";
public static String DeleteDescriptionTemplate = "DeleteDescriptionTemplate";
public static String CloneDescriptionTemplate = "CloneDescriptionTemplate";
public static String CreateNewVersionDescriptionTemplate = "CreateNewVersionDescriptionTemplate";
public static String ImportDescriptionTemplate = "ImportDescriptionTemplate";
public static String ExportDescriptionTemplate = "ExportDescriptionTemplate";
//User
public static String BrowseUser = "BrowseUser";
public static String EditUser = "EditUser";
public static String DeleteUser = "DeleteUser";
public static String ExportUsers = "ExportUsers";
public static String BrowseDmpAssociatedUser = "BrowseDmpAssociatedUser";
//StorageFile
public static String BrowseStorageFile = "BrowseStorageFile";
public static String EditStorageFile = "EditStorageFile";
public static String DeleteStorageFile = "DeleteStorageFile";
//DescriptionTemplateType
public static String BrowseDescriptionTemplateType = "BrowseDescriptionTemplateType";
public static String EditDescriptionTemplateType = "EditDescriptionTemplateType";
public static String DeleteDescriptionTemplateType = "DeleteDescriptionTemplateType";
//Dmp
public static String BrowseDmp = "BrowseDmp";
public static String EditDmp = "EditDmp";
public static String DeleteDmp = "DeleteDmp";
public static String CloneDmp = "CloneDmp";
public static String CreateNewVersionDmp = "CreateNewVersionDmp";
public static String ExportDmp = "ExportDmp";
public static String FinalizeDmp = "FinalizeDmp";
public static String AssignDmpUsers = "AssignDmpUsers";
public static String InviteDmpUsers = "InviteDmpUsers";
//DmpBlueprint
public static String BrowseDmpBlueprint = "BrowseDmpBlueprint";
public static String EditDmpBlueprint = "EditDmpBlueprint";
public static String DeleteDmpBlueprint = "DeleteDmpBlueprint";
public static String CloneDmpBlueprint = "CloneDmpBlueprint";
public static String ExportDmpBlueprint = "ExportDmpBlueprint";
public static String ImportDmpBlueprint = "ImportDmpBlueprint";
//DmpDescriptionTemplate
public static String BrowseDmpDescriptionTemplate = "BrowseDmpDescriptionTemplate";
public static String EditDmpDescriptionTemplate = "EditDmpDescriptionTemplate";
public static String DeleteDmpDescriptionTemplate = "DeleteDmpDescriptionTemplate";
//DmpUser
public static String BrowseDmpUser = "BrowseDmpUser";
public static String EditDmpUser = "EditDmpUser";
public static String DeleteDmpUser = "DeleteDmpUser";
//Description
public static String BrowseDescription = "BrowseDescription";
public static String EditDescription = "EditDescription";
public static String DeleteDescription = "DeleteDescription";
public static String CloneDescription = "CloneDescription";
//DescriptionTag
public static String BrowseDescriptionTag = "BrowseDescriptionTag";
public static String EditDescriptionTag = "EditDescriptionTag";
public static String DeleteDescriptionTag = "DeleteDescriptionTag";
//DescriptionTemplateType
public static String BrowseEntityDoi = "BrowseEntityDoi";
public static String EditEntityDoi = "EditEntityDoi";
public static String DeleteEntityDoi = "DeleteEntityDoi";
//UserSettings
public static String BrowseUserSettings = "BrowseUserSettings";
public static String EditUserSettings = "EditUserSettings";
public static String DeleteUserSettings = "DeleteUserSettings";
// UI Pages
public static String ViewDescriptionTemplateTypePage = "ViewDescriptionTemplateTypePage";
public static String ViewDmpBlueprintPage = "ViewDmpBlueprintPage";
//Reference
public static String BrowseReference = "BrowseReference";
public static String EditReference = "EditReference";
public static String DeleteReference = "DeleteReference";
//Tag
public static String BrowseTag = "BrowseTag";
public static String EditTag = "EditTag";
public static String DeleteTag = "DeleteTag";
//DmpReference
public static String BrowseDmpReference = "BrowseDmpReference";
public static String EditDmpReference = "EditDmpReference";
public static String DeleteDmpReference = "DeleteDmpReference";
//DescriptionReference
public static String BrowseDescriptionReference = "BrowseDescriptionReference";
public static String EditDescriptionReference = "EditDescriptionReference";
public static String DeleteDescriptionReference = "DeleteDescriptionReference";
//SupportiveMaterial
public static String BrowseSupportiveMaterial = "BrowseSupportiveMaterial";
public static String EditSupportiveMaterial= "EditSupportiveMaterial";
public static String DeleteSupportiveMaterial = "DeleteSupportiveMaterial";
//ReferenceType
public static String BrowseReferenceType = "BrowseReferenceType";
public static String EditReferenceType= "EditReferenceType";
public static String DeleteReferenceType = "DeleteReferenceType";
//Tenant
public static String BrowseTenant = "BrowseTenant";
public static String EditTenant= "EditTenant";
public static String DeleteTenant = "DeleteTenant";
public static String AllowNoTenant = "AllowNoTenant";
//TenantUser
public static String BrowseTenantUser = "BrowseTenantUser";
public static String EditTenantUser = "EditTenantUser";
public static String DeleteTenantUser = "DeleteTenantUser";
//Lock
public static String BrowseLock = "BrowseLock";
public static String EditLock = "EditLock";
public static String DeleteLock = "DeleteLock";
//ContactSupport
public static String SendContactSupport = "SendContactSupport";
//ActionConfirmation
public static String BrowseActionConfirmation = "BrowseActionConfirmation";
public static String EditActionConfirmation = "EditActionConfirmation";
public static String DeleteActionConfirmation = "DeleteActionConfirmation";
}

View File

@ -0,0 +1,24 @@
package eu.eudat.cache.transformer;
import eu.eudat.configurations.deposit.DepositCacheOptions;
import eu.eudat.configurations.transformer.TransformerCacheOptions;
import eu.eudat.model.file.TransformerCacheModel;
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class FileTransformerConfigurationCache extends CacheService<TransformerCacheModel> {
@Autowired
public FileTransformerConfigurationCache(TransformerCacheOptions options) {
super(options);
}
@Override
protected Class<TransformerCacheModel> valueClass() {
return TransformerCacheModel.class;
}
}

View File

@ -0,0 +1,56 @@
package eu.eudat.commons;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public class JsonHandlingService {
private final ObjectMapper objectMapper;
public JsonHandlingService() {
this.objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
}
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) {
return null;
}
}
public <T> T fromJson(Class<T> type, String json) throws JsonProcessingException {
if (json == null) return null;
return objectMapper.readValue(json, type);
}
public HashMap<String, String> mapFromJson(String json) throws JsonProcessingException {
ObjectReader reader = objectMapper.readerFor(Map.class);
return reader.readValue(json);
}
public <T> T fromJsonSafe(Class<T> type, String json) {
if (json == null) return null;
try {
return objectMapper.readValue(json, type);
} catch (Exception ex) {
return null;
}
}
}

View File

@ -0,0 +1,118 @@
package eu.eudat.commons;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import eu.eudat.commons.types.dmpblueprint.DefinitionEntity;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.commons.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.*;
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,32 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum ActionConfirmationStatus implements DatabaseEnum<Short> {
Requested((short) 0),
Accepted((short) 1);
private final Short value;
ActionConfirmationStatus(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ActionConfirmationStatus> map = EnumUtils.getEnumValueMap(ActionConfirmationStatus.class);
public static ActionConfirmationStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,33 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum ActionConfirmationType implements DatabaseEnum<Short> {
MergeAccount((short) 0),
RemoveCredential((short) 1),
DmpInvitation((short) 2);
private final Short value;
ActionConfirmationType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ActionConfirmationType> map = EnumUtils.getEnumValueMap(ActionConfirmationType.class);
public static ActionConfirmationType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum ContactInfoType implements DatabaseEnum<Short> {
Email((short) 0);
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,31 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DescriptionStatus implements DatabaseEnum<Short> {
Draft((short) 0),
Finalized((short) 1),
Canceled((short) 2);
private final Short value;
DescriptionStatus(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DescriptionStatus> map = EnumUtils.getEnumValueMap(DescriptionStatus.class);
public static DescriptionStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DescriptionTemplateStatus implements DatabaseEnum<Short> {
Draft((short) 0),
Finalized((short) 1);
private final Short value;
DescriptionTemplateStatus(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DescriptionTemplateStatus> map = EnumUtils.getEnumValueMap(DescriptionTemplateStatus.class);
public static DescriptionTemplateStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DescriptionTemplateTypeStatus implements DatabaseEnum<Short> {
Draft((short) 0),
Finalized((short) 1);
private final Short value;
DescriptionTemplateTypeStatus(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DescriptionTemplateTypeStatus> map = EnumUtils.getEnumValueMap(DescriptionTemplateTypeStatus.class);
public static DescriptionTemplateTypeStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DescriptionTemplateVersionStatus implements DatabaseEnum<Short> {
Current((short) 0), Previous ((short) 1);
private final Short value;
DescriptionTemplateVersionStatus(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DescriptionTemplateVersionStatus> map = EnumUtils.getEnumValueMap(DescriptionTemplateVersionStatus.class);
public static DescriptionTemplateVersionStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpAccessType implements DatabaseEnum<Short> {
Public((short) 0), Restricted((short) 1);
private final Short value;
DmpAccessType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpAccessType> map = EnumUtils.getEnumValueMap(DmpAccessType.class);
public static DmpAccessType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,33 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpBlueprintExtraFieldDataType implements DatabaseEnum<Short> {
Text((short) 0),
RichTex((short) 1),
Date((short) 2),
Number((short) 3),
;
private final Short value;
DmpBlueprintExtraFieldDataType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpBlueprintExtraFieldDataType> map = EnumUtils.getEnumValueMap(DmpBlueprintExtraFieldDataType.class);
public static DmpBlueprintExtraFieldDataType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,28 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpBlueprintFieldCategory implements DatabaseEnum<Short> {
System((short) 0),
Extra((short) 1);
private final Short value;
DmpBlueprintFieldCategory(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpBlueprintFieldCategory> map = EnumUtils.getEnumValueMap(DmpBlueprintFieldCategory.class);
public static DmpBlueprintFieldCategory of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpBlueprintStatus implements DatabaseEnum<Short> {
Draft((short) 0),
Finalized((short) 1);
private final Short value;
DmpBlueprintStatus(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpBlueprintStatus> map = EnumUtils.getEnumValueMap(DmpBlueprintStatus.class);
public static DmpBlueprintStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,37 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpBlueprintSystemFieldType implements DatabaseEnum<Short> {
Text((short)0),
HtmlText((short)1),
Researchers((short)2),
Organizations((short)3),
Language((short)4),
Contact((short)5),
Funder((short)6),
Grant((short)7),
Project((short)8),
License((short)9),
AccessRights((short)10);
private final Short value;
DmpBlueprintSystemFieldType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpBlueprintSystemFieldType> map = EnumUtils.getEnumValueMap(DmpBlueprintSystemFieldType.class);
public static DmpBlueprintSystemFieldType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,31 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpStatus implements DatabaseEnum<Short> {
Draft((short) 0), Finalized((short) 1);
private final Short value;
DmpStatus(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpStatus> map = EnumUtils.getEnumValueMap(DmpStatus.class);
public static DmpStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpUserRole implements DatabaseEnum<Short> {
Owner((short) 0), User((short) 1);
private final Short value;
DmpUserRole(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpUserRole> map = EnumUtils.getEnumValueMap(DmpUserRole.class);
public static DmpUserRole of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DmpVersionStatus implements DatabaseEnum<Short> {
Current((short) 0), Previous ((short) 1);
private final Short value;
DmpVersionStatus(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, DmpVersionStatus> map = EnumUtils.getEnumValueMap(DmpVersionStatus.class);
public static DmpVersionStatus of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum EntityType implements DatabaseEnum<Short> {
DMP((short) 0);
private final Short value;
EntityType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, EntityType> map = EnumUtils.getEnumValueMap(EntityType.class);
public static EntityType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,16 @@
package eu.eudat.commons.enums;
import eu.eudat.data.converters.enums.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,27 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum FieldDataComboBoxType implements DatabaseEnum<String> {
Autocomplete("autocomplete"),
Wordlist("wordlist");
private final String value;
FieldDataComboBoxType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
private static final Map<String, FieldDataComboBoxType> map = EnumUtils.getEnumValueMap(FieldDataComboBoxType.class);
public static FieldDataComboBoxType of(String i) {
return map.get(i);
}
}

View File

@ -0,0 +1,28 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum FieldDataExternalDatasetType implements DatabaseEnum<String> {
ReusedDataset("reused_dataset"),
ProducedDataset("produced_dataset"),
Other("other");
private final String value;
FieldDataExternalDatasetType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
private static final Map<String, FieldDataExternalDatasetType> map = EnumUtils.getEnumValueMap(FieldDataExternalDatasetType.class);
public static FieldDataExternalDatasetType of(String i) {
return map.get(i);
}
}

View File

@ -0,0 +1,28 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum FieldDataInternalDmpEntryType implements DatabaseEnum<String> {
Researchers("researchers"),
Dmps("dmps"),
Datasets("datasets");
private final String value;
FieldDataInternalDmpEntryType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
private static final Map<String, FieldDataInternalDmpEntryType> map = EnumUtils.getEnumValueMap(FieldDataInternalDmpEntryType.class);
public static FieldDataInternalDmpEntryType of(String i) {
return map.get(i);
}
}

View File

@ -0,0 +1,88 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum FieldType implements DatabaseEnum<String> {
COMBO_BOX(Names.ComboBox), //TODO remove from xml an keep subtypes only AUTO_COMPLETE, WORD_LIST
AUTO_COMPLETE(Names.Autocomplete),
WORD_LIST(Names.Wordlist),
BOOLEAN_DECISION(Names.BooleanDecision),
RADIO_BOX(Names.RadioBox),
INTERNAL_DMP_ENTRIES(Names.InternalDmpEntities), //TODO remove from xml an keep subtypes only INTERNAL_DMP_ENTRIES_RESEARCHERS. INTERNAL_DMP_ENTRIES_DMPS, INTERNAL_DMP_ENTRIES_DATASETS
INTERNAL_DMP_ENTRIES_RESEARCHERS(Names.InternalDmpResearchers),
INTERNAL_DMP_ENTRIES_DMPS(Names.InternalDmpDmps),
INTERNAL_DMP_ENTRIES_DATASETS(Names.InternalDmpDatasets),
CHECK_BOX(Names.CheckBox),
FREE_TEXT(Names.FreeText),
TEXT_AREA(Names.TextArea),
RICH_TEXT_AREA(Names.RichTextarea),
UPLOAD(Names.Upload),
DATE_PICKER(Names.DatePicker),
EXTERNAL_DATASETS(Names.ExternalDatasets),
DATA_REPOSITORIES(Names.DataRepositories),
JOURNAL_REPOSITORIES(Names.JournalRepositories),
PUB_REPOSITORIES(Names.PubRepositories),
LICENSES(Names.Licenses),
TAXONOMIES(Names.Taxonomies),
PUBLICATIONS(Names.Publications),
REGISTRIES(Names.Registries),
SERVICES(Names.Services),
TAGS(Names.Tags),
RESEARCHERS(Names.Researchers),
ORGANIZATIONS(Names.Organizations),
DATASET_IDENTIFIER(Names.DatasetIdentifier),
CURRENCY(Names.Currency),
VALIDATION(Names.Validation);
private final String value;
public static class Names {
public static final String ComboBox = "combobox";
public static final String Autocomplete = "autocomplete";
public static final String Wordlist = "wordlist";
public static final String BooleanDecision = "booleanDecision";
public static final String RadioBox = "radiobox";
public static final String InternalDmpEntities = "internalDmpEntities";
public static final String InternalDmpResearchers = "internalDmpResearchers";
public static final String InternalDmpDmps = "internalDmpDmps";
public static final String InternalDmpDatasets = "internalDmpDatasets";
public static final String CheckBox = "checkBox";
public static final String FreeText = "freetext";
public static final String TextArea = "textarea";
public static final String RichTextarea = "richTextarea";
public static final String Upload = "upload";
public static final String DatePicker = "datePicker";
public static final String ExternalDatasets = "externalDatasets";
public static final String DataRepositories = "dataRepositories";
public static final String JournalRepositories = "journalRepositories";
public static final String PubRepositories = "pubRepositories";
public static final String Licenses = "licenses";
public static final String Taxonomies = "taxonomies";
public static final String Publications = "publications";
public static final String Registries = "registries";
public static final String Services = "services";
public static final String Tags = "tags";
public static final String Researchers = "researchers";
public static final String Organizations = "organizations";
public static final String DatasetIdentifier = "datasetIdentifier";
public static final String Currency = "currency";
public static final String Validation = "validation";
}
FieldType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
private static final Map<String, FieldType> map = EnumUtils.getEnumValueMap(FieldType.class);
public static FieldType of(String i) {
return map.get(i);
}
}

View File

@ -0,0 +1,33 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public enum FieldValidationType implements DatabaseEnum<Short> {
None((short) 0),
Required((short) 1),
Url((short) 2);
private final Short value;
FieldValidationType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, FieldValidationType> map = EnumUtils.getEnumValueMap(FieldValidationType.class);
public static FieldValidationType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.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,27 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum LockTargetType implements DatabaseEnum<Short> {
Dmp((short) 0),
Decription((short) 1);
private final Short value;
LockTargetType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, LockTargetType> map = EnumUtils.getEnumValueMap(LockTargetType.class);
public static LockTargetType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,36 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.HashMap;
import java.util.Map;
public enum ProviderType implements DatabaseEnum<Integer> {
Google (1),
Facebook ( 2),
Twitter ( 3),
LinkedIn (4),
NativeLogin ( 5),
B2Access ( 6),
ORCID (7),
OpenAire ( 8),
Configurable ( 9),
Zenodo (10),
Keycloack ( 128);
private final Integer value;
ProviderType(Integer value) {
this.value = value;
}
@JsonValue
public Integer getValue() { return this.value; }
private static final Map<Integer, ProviderType> map = EnumUtils.getEnumValueMap(ProviderType.class);
public static ProviderType of(Integer i) {
return map.get(i);
}
}

View File

@ -0,0 +1,31 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum RecentActivityItemType implements DatabaseEnum<Short> {
Dmp((short) 0),
Description((short) 1);
private final Short value;
RecentActivityItemType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, RecentActivityItemType> map = EnumUtils.getEnumValueMap(RecentActivityItemType.class);
public static RecentActivityItemType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,31 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum RecentActivityOrder implements DatabaseEnum<Short> {
UpdatedAt((short) 0),
Label((short) 1),
Status((short) 2);
private final Short value;
RecentActivityOrder(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, RecentActivityOrder> map = EnumUtils.getEnumValueMap(RecentActivityOrder.class);
public static RecentActivityOrder of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,27 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum ReferenceFieldDataType implements DatabaseEnum<Short> {
Text((short) 0),
Date((short) 1);
private final Short value;
ReferenceFieldDataType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ReferenceFieldDataType> map = EnumUtils.getEnumValueMap(ReferenceFieldDataType.class);
public static ReferenceFieldDataType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,28 @@
package eu.eudat.commons.enums;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum ReferenceSourceType implements DatabaseEnum<Short> {
Internal((short) 0),
External((short) 1);
private final Short value;
ReferenceSourceType(Short value) {
this.value = value;
}
@Override
public Short getValue() {
return value;
}
private static final Map<Short, ReferenceSourceType> map = EnumUtils.getEnumValueMap(ReferenceSourceType.class);
public static ReferenceSourceType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,39 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum ReferenceType implements DatabaseEnum<Short> {
Taxonomies((short) 0),
Licenses((short) 1),
Publications((short) 2),
Journals((short) 3),
PubRepositories((short) 4),
DataRepositories((short) 5),
Registries((short) 6),
Services((short) 7),
Project((short) 8),
Funder((short) 9),
Datasets((short) 10),
Organizations((short) 11),
Grants((short) 12),
Researcher((short) 13);
private final Short value;
ReferenceType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ReferenceType> map = EnumUtils.getEnumValueMap(ReferenceType.class);
public static ReferenceType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import jakarta.xml.bind.annotation.XmlEnumValue;
import java.util.Map;
public enum ReferenceTypeExternalApiHTTPMethodType implements DatabaseEnum<Short> {
@XmlEnumValue(value = "0")
GET((short) 0),
@XmlEnumValue(value = "1")
POST((short) 1);
private final Short value;
ReferenceTypeExternalApiHTTPMethodType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ReferenceTypeExternalApiHTTPMethodType> map = EnumUtils.getEnumValueMap(ReferenceTypeExternalApiHTTPMethodType.class);
public static ReferenceTypeExternalApiHTTPMethodType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,36 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import jakarta.xml.bind.annotation.XmlEnumValue;
import jakarta.xml.bind.annotation.XmlValue;
import java.util.Map;
public enum ReferenceTypeSourceType implements DatabaseEnum<Short> {
@XmlEnumValue(value = "0")
API((short) 0),
@XmlEnumValue(value = "1")
STATIC((short) 1);
private final Short value;
public static class Names {
public static final String API = "api";
public static final String STATIC = "static";
}
ReferenceTypeSourceType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, ReferenceTypeSourceType> map = EnumUtils.getEnumValueMap(ReferenceTypeSourceType.class);
public static ReferenceTypeSourceType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum StorageFilePermission implements DatabaseEnum<Short> {
Read((short) 0),
Write((short) 1);
private final Short value;
StorageFilePermission(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, StorageFilePermission> map = EnumUtils.getEnumValueMap(StorageFilePermission.class);
public static StorageFilePermission of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,31 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum StorageType implements DatabaseEnum<Short> {
Temp((short) 0),
Main((short) 1),
Transformer((short)2);
private final Short value;
StorageType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, StorageType> map = EnumUtils.getEnumValueMap(StorageType.class);
public static StorageType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,31 @@
package eu.eudat.commons.enums;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum SupportiveMaterialFieldType implements DatabaseEnum<Short> {
Faq((short) 0),
About((short) 1),
Glossary((short) 2),
TermsOfService((short) 3),
UserGuide((short) 4);
private final Short value;
SupportiveMaterialFieldType(Short value) {
this.value = value;
}
@Override
public Short getValue() {
return value;
}
private static final Map<Short, SupportiveMaterialFieldType> map = EnumUtils.getEnumValueMap(SupportiveMaterialFieldType.class);
public static SupportiveMaterialFieldType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum UserDescriptionTemplateRole implements DatabaseEnum<Short> {
Owner((short) 0),
Member((short) 1);
private final Short value;
UserDescriptionTemplateRole(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, UserDescriptionTemplateRole> map = EnumUtils.getEnumValueMap(UserDescriptionTemplateRole.class);
public static UserDescriptionTemplateRole of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,30 @@
package eu.eudat.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum UserSettingsType implements DatabaseEnum<Short> {
Settings((short) 0),
Config((short) 1);
private final Short value;
UserSettingsType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, UserSettingsType> map = EnumUtils.getEnumValueMap(UserSettingsType.class);
public static UserSettingsType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,32 @@
package eu.eudat.commons.enums.notification;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.commons.enums.EnumUtils;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum NotificationContactType implements DatabaseEnum<Short> {
EMAIL((short)0),
SLACK_BROADCAST((short)1),
SMS((short)2),
IN_APP((short)3);
private final Short value;
NotificationContactType(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, NotificationContactType> map = EnumUtils.getEnumValueMap(NotificationContactType.class);
public static NotificationContactType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,33 @@
package eu.eudat.commons.enums.notification;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.commons.enums.EnumUtils;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum NotificationNotifyState implements DatabaseEnum<Short> {
PENDING((short)0),
PROCESSING((short)1),
SUCCESSFUL((short)2),
ERROR((short)3),
OMITTED((short)4);
private final Short value;
NotificationNotifyState(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, NotificationNotifyState> map = EnumUtils.getEnumValueMap(NotificationNotifyState.class);
public static NotificationNotifyState of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,32 @@
package eu.eudat.commons.enums.notification;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.commons.enums.EnumUtils;
import eu.eudat.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum NotificationTrackingProcess implements DatabaseEnum<Short> {
PENDING((short)0),
PROCESSING((short)1),
COMPLETED((short)2),
ERROR((short)3),
OMITTED((short)4);
private final Short value;
NotificationTrackingProcess(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, NotificationTrackingProcess> map = EnumUtils.getEnumValueMap(NotificationTrackingProcess.class);
public static NotificationTrackingProcess of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,35 @@
package eu.eudat.commons.enums.notification;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.data.converters.enums.DatabaseEnum;
import eu.eudat.commons.enums.EnumUtils;
import java.util.Map;
public enum NotificationTrackingState implements DatabaseEnum<Short> {
UNDEFINED((short)0),
NA((short)1),
QUEUED((short)2),
SENT((short)3),
DELIVERED((short)4),
UNDELIVERED((short)5),
FAILED((short)6),
UNSENT((short)7);
private final Short value;
NotificationTrackingState(Short value) {
this.value = value;
}
@JsonValue
public Short getValue() {
return value;
}
private static final Map<Short, NotificationTrackingState> map = EnumUtils.getEnumValueMap(NotificationTrackingState.class);
public static NotificationTrackingState of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,13 @@
package eu.eudat.commons.exceptions;
public class HugeResultSetException extends Exception {
private static final long serialVersionUID = -6961447213733280563L;
public HugeResultSetException(String message) {
super(message);
}
}

View File

@ -0,0 +1,126 @@
package eu.eudat.commons.fake;
import org.jetbrains.annotations.NotNull;
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 final Map<String, Object> requestAttributeMap = new HashMap<>();
private final Map<String, Runnable> requestDestructionCallbacks = new LinkedHashMap<>(8);
private volatile boolean requestActive = true;
@Override
public Object getAttribute(@NotNull 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(@NotNull String name, @NotNull 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(@NotNull 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 @NotNull [] 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(@NotNull String name, @NotNull 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(@NotNull String key) {
// Not supported
return null;
}
@Override
public @NotNull String getSessionId() {
return "";
}
@Override
public @NotNull Object getSessionMutex() {
return new Object();
}
public void requestCompleted() {
executeRequestDestructionCallbacks();
for (String name : getAttributeNames(RequestAttributes.SCOPE_REQUEST)) {
this.removeAttribute(name, RequestAttributes.SCOPE_REQUEST);
}
this.requestActive = false;
}
private boolean isRequestActive() {
return this.requestActive;
}
private 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,44 @@
package eu.eudat.commons.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 final 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,58 @@
package eu.eudat.commons.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,9 @@
package eu.eudat.commons.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,16 @@
package eu.eudat.commons.scope.tenant;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "tenant.multitenancy")
public class MultitenancyProperties {
private boolean isMultitenant;
public boolean isMultitenant() {
return isMultitenant;
}
public void setIsMultitenant(boolean multitenant) {
isMultitenant = multitenant;
}
}

View File

@ -0,0 +1,91 @@
package eu.eudat.commons.scope.tenant;
import eu.eudat.data.tenant.TenantScopedBaseEntity;
import gr.cite.tools.logging.LoggerService;
import jakarta.persistence.EntityManager;
import org.hibernate.Session;
import org.slf4j.LoggerFactory;
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::";
public static final String TenantCodesClaimName = "TenantCodes";
public static final String TenantClaimName = "x-tenant";
private final MultitenancyProperties multitenancy;
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(TenantScope.class));
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 Boolean isSet() {
if (!this.isMultitenant())
return Boolean.TRUE;
return this.tenant.get() != null;
}
public UUID getTenant() throws InvalidApplicationException {
if (!this.isMultitenant())
return null;
if (this.tenant.get() == null)
throw new InvalidApplicationException("tenant not set");
return this.tenant.get();
}
public String getTenantCode() throws InvalidApplicationException {
if (!this.isMultitenant())
return null;
if (this.tenant.get() == null)
throw new InvalidApplicationException("tenant not set");
return this.tenantCode.get();
}
public void setTempTenant(EntityManager entityManager, UUID tenant) {
this.tenant.set(tenant);
if (this.tenant.get() != null) {
entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.tenantFilter).setParameter(TenantScopedBaseEntity.tenantFilterTenantParam, this.tenant.get().toString());
}
}
public void removeTempTenant(EntityManager entityManager) {
this.tenant.set(this.initialTenant.get());
this.tenantCode.set(this.initialTenantCode.get());
if (this.initialTenant.get() != null) {
entityManager
.unwrap(Session.class)
.enableFilter(TenantScopedBaseEntity.tenantFilter).setParameter(TenantScopedBaseEntity.tenantFilterTenantParam, this.initialTenant.get().toString());
}
}
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 eu.eudat.commons.scope.tenant;
import java.util.UUID;
public interface TenantScoped {
void setTenantId(UUID tenantId);
UUID getTenantId();
}

View File

@ -0,0 +1,35 @@
package eu.eudat.commons.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;
import java.util.concurrent.atomic.AtomicReference;
@Component
@RequestScope
public class UserScope {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(UserScope.class));
private final AtomicReference<UUID> userId = new AtomicReference<>();
public Boolean isSet() {
return this.userId.get() != null;
}
public UUID getUserId() throws InvalidApplicationException {
if (this.userId.get() == null) throw new InvalidApplicationException("user not set");
return this.userId.get();
}
public UUID getUserIdSafe() {
return this.userId.get();
}
public void setUserId(UUID userId) {
this.userId.set(userId);
}
}

View File

@ -0,0 +1,44 @@
package eu.eudat.commons.types.actionconfirmation;
import eu.eudat.commons.enums.DmpUserRole;
import jakarta.xml.bind.annotation.*;
import java.util.UUID;
@XmlRootElement(name = "dmp-invitation")
@XmlAccessorType(XmlAccessType.FIELD)
public class DmpInvitationEntity {
@XmlAttribute(name = "email")
private String email;
@XmlAttribute(name = "dmp")
private UUID dmpId;
@XmlAttribute(name = "dmp-role")
private DmpUserRole role;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public UUID getDmpId() {
return dmpId;
}
public void setDmpId(UUID dmpId) {
this.dmpId = dmpId;
}
public DmpUserRole getRole() {
return role;
}
public void setRole(DmpUserRole role) {
this.role = role;
}
}

View File

@ -0,0 +1,22 @@
package eu.eudat.commons.types.actionconfirmation;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "email-confirmation")
@XmlAccessorType(XmlAccessType.FIELD)
public class EmailConfirmationEntity {
@XmlAttribute(name = "email")
private String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

View File

@ -0,0 +1,5 @@
package eu.eudat.commons.types.common;
public interface DatabaseDefinition {
}

View File

@ -0,0 +1,7 @@
package eu.eudat.commons.types.common;
import eu.eudat.commons.types.common.DatabaseDefinition;
public interface DatabaseModelDefinition extends DatabaseDefinition {
}

View File

@ -0,0 +1,7 @@
package eu.eudat.commons.types.common;
import eu.eudat.commons.types.common.DatabaseDefinition;
public interface DatabaseViewStyleDefinition extends DatabaseDefinition {
}

View File

@ -0,0 +1,62 @@
package eu.eudat.commons.types.dashborad;
import eu.eudat.commons.enums.RecentActivityItemType;
import java.time.Instant;
import java.util.UUID;
public class RecentActivityItemEntity {
private RecentActivityItemType type;
private UUID id;
private Instant updatedAt;
private String label;
private Short statusValue;
public RecentActivityItemEntity(RecentActivityItemType type, UUID id, Instant updatedAt, String label, Short statusValue) {
this.type = type;
this.id = id;
this.updatedAt = updatedAt;
this.label = label;
this.statusValue = statusValue;
}
public RecentActivityItemType getType() {
return type;
}
public void setType(RecentActivityItemType type) {
this.type = type;
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Short getStatusValue() {
return statusValue;
}
public void setStatusValue(Short statusValue) {
this.statusValue = statusValue;
}
}

View File

@ -0,0 +1,22 @@
package eu.eudat.commons.types.description;
public class FieldEntity {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,15 @@
package eu.eudat.commons.types.description;
import java.util.List;
public class PropertyDefinitionEntity {
private List<FieldEntity> fields;
public List<FieldEntity> getFields() {
return fields;
}
public void setFields(List<FieldEntity> fields) {
this.fields = fields;
}
}

View File

@ -0,0 +1,91 @@
package eu.eudat.commons.types.descriptiontemplate;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class DefinitionEntity implements XmlSerializable<DefinitionEntity> {
private List<SectionEntity> sections;
private List<PageEntity> pages;
public List<SectionEntity> getSections() {
return sections;
}
public void setSections(List<SectionEntity> sections) {
this.sections = sections;
}
public List<PageEntity> getPages() {
return pages;
}
public void setPages(List<PageEntity> pageEntities) {
this.pages = pageEntities;
}
@Override
public Element toXml(Document doc) {
Element root = doc.createElement("root");
Element sections = doc.createElement("sections");
Element pages = doc.createElement("pages");
for (SectionEntity sectionEntity : this.sections) {
sectionEntity.setNumbering("" + (this.sections.indexOf(sectionEntity) + 1));
sections.appendChild(sectionEntity.toXml(doc));
}
for (PageEntity pageEntity : this.pages) {
pages.appendChild(pageEntity.toXml(doc));
}
root.appendChild(pages);
root.appendChild(sections);
return root;
}
@Override
public DefinitionEntity fromXml(Element element) {
this.sections = new LinkedList();
Element sections = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "sections");
if (sections != null) {
NodeList sectionElements = sections.getChildNodes();
for (int temp = 0; temp < sectionElements.getLength(); temp++) {
Node sectionElement = sectionElements.item(temp);
if (sectionElement.getNodeType() == Node.ELEMENT_NODE) {
this.sections.add(new SectionEntity().fromXml((Element) sectionElement));
}
}
}
this.pages = new LinkedList<>();
Element pages = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "pages");
if (pages != null) {
NodeList pagesElements = pages.getChildNodes();
for (int temp = 0; temp < pagesElements.getLength(); temp++) {
Node pageElement = pagesElements.item(temp);
if (pageElement.getNodeType() == Node.ELEMENT_NODE) {
this.pages.add(new PageEntity().fromXml((Element) pageElement));
}
}
}
return this;
}
public List<FieldEntity> getFieldById(String id){
List<FieldEntity> fieldEntities = new ArrayList<>();
if (id == null || id.isBlank()) return fieldEntities;
if (this.getSections() != null){
for (SectionEntity sectionEntity: this.getSections()) {
fieldEntities.addAll(sectionEntity.getFieldById(id));
}
}
return fieldEntities;
}
}

View File

@ -0,0 +1,227 @@
package eu.eudat.commons.types.descriptiontemplate;
import eu.eudat.commons.enums.FieldValidationType;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.types.common.DatabaseViewStyleDefinition;
import eu.eudat.commons.types.descriptiontemplate.fielddata.*;
import eu.eudat.commons.types.xml.XmlSerializable;
import eu.eudat.commons.types.xml.XmlBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.LinkedList;
import java.util.List;
public class FieldEntity implements DatabaseViewStyleDefinition, XmlSerializable<FieldEntity> {
private String id;
private int ordinal;
private List<String> schematics;
private String numbering;
private String defaultValue;
private List<RuleEntity> visibilityRules;
private BaseFieldDataEntity<?> data;
private List<FieldValidationType> validations;
private Boolean includeInExport;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
public List<String> getSchematics() {
return schematics;
}
public void setSchematics(List<String> schematics) {
this.schematics = schematics;
}
public BaseFieldDataEntity<?> getData() {
return data;
}
public void setData(BaseFieldDataEntity<?> data) {
this.data = data;
}
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public List<FieldValidationType> getValidations() {
return validations;
}
public void setValidations(List<FieldValidationType> validations) {
this.validations = validations;
}
public String getNumbering() {
return numbering;
}
public void setNumbering(String numbering) {
this.numbering = numbering;
}
public Boolean getIncludeInExport() {
return includeInExport;
}
public void setIncludeInExport(Boolean includeInExport) {
this.includeInExport = includeInExport;
}
public List<RuleEntity> getVisibilityRules() {
return visibilityRules;
}
public void setVisibilityRules(List<RuleEntity> visibilityRules) {
this.visibilityRules = visibilityRules;
}
@Override
public Element toXml(Document doc) {
Element rootElement = doc.createElement("field");
rootElement.setAttribute("id", this.id);
rootElement.setAttribute("ordinal", "" + this.ordinal);
Element schematics = doc.createElement("schematics");
if (this.schematics != null) {
for (String s : this.schematics) {
Element schematic = doc.createElement("schematic");
schematic.setTextContent(s);
schematics.appendChild(schematic);
}
}
Element viewStyle = doc.createElement("viewStyle");
if (this.data != null) {
switch (this.data.getFieldType()){
case COMBO_BOX:
case AUTO_COMPLETE:
case WORD_LIST:{
viewStyle.setAttribute("renderstyle", FieldType.COMBO_BOX.getValue());
break;
}
case INTERNAL_DMP_ENTRIES:
case INTERNAL_DMP_ENTRIES_DMPS:
case INTERNAL_DMP_ENTRIES_DATASETS:
case INTERNAL_DMP_ENTRIES_RESEARCHERS:{
viewStyle.setAttribute("renderstyle", FieldType.INTERNAL_DMP_ENTRIES.getValue());
break;
}
case BOOLEAN_DECISION: viewStyle.setAttribute("renderstyle", this.data.getFieldType().getValue());
}
}
Element visibilityRulesElement = doc.createElement("visible");
if (this.visibilityRules != null && !this.visibilityRules.isEmpty()) {
for (RuleEntity rule : this.visibilityRules) {
visibilityRulesElement.appendChild(rule.toXml(doc));
}
}
Element defaultValue = doc.createElement("defaultValue");
defaultValue.setAttribute("value", this.getDefaultValue());
Element validations = doc.createElement("validations");
for (FieldValidationType validationType : this.validations) {
Element validation = doc.createElement("validation");
validation.setAttribute("type", "" + validationType.getValue());
validations.appendChild(validation);
}
Element numbering = doc.createElement("numbering");
numbering.setTextContent(this.numbering);
rootElement.appendChild(schematics);
rootElement.appendChild(numbering);
rootElement.appendChild(validations);
rootElement.appendChild(defaultValue);
rootElement.appendChild(visibilityRulesElement);
rootElement.appendChild(viewStyle);
if (this.data != null) {
rootElement.appendChild(this.data.toXml(doc));
}
rootElement.setAttribute("export", this.includeInExport == null || this.includeInExport ? "true" : "false");
return rootElement;
}
@Override
public FieldEntity fromXml(Element element) {
this.id = element.getAttribute("id");
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
Element viewStyle = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "viewStyle");
FieldType fieldType = FieldType.of(viewStyle.getAttribute("renderstyle"));
Element visibility = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "visible");
NodeList rulesElements = visibility.getChildNodes();
this.visibilityRules = new LinkedList();
for (int temp = 0; temp < rulesElements.getLength(); temp++) {
Node ruleElement = rulesElements.item(temp);
if (ruleElement.getNodeType() == Node.ELEMENT_NODE) {
this.visibilityRules.add(new RuleEntity().fromXml((Element) ruleElement));
}
}
Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering");
if (numbering != null) this.numbering = numbering.getTextContent();
this.schematics = new LinkedList<>();
Element schematics = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "schematics");
if(schematics != null){
NodeList schematicElements = schematics.getChildNodes();
for (int temp = 0; temp < schematicElements.getLength(); temp++) {
Node schematicElement = schematicElements.item(temp);
if (schematicElement.getNodeType() == Node.ELEMENT_NODE) {
this.schematics.add(schematicElement.getTextContent());
}
}
}
Element dataElement = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "data");
Element defaultValue = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "defaultValue");
this.defaultValue = defaultValue.getAttribute("value");
String subType = dataElement != null ? dataElement.getAttribute("type") : null;
this.data = new FieldDataHelper().create(fieldType, subType);
if (this.data != null) this.data.fromXml(dataElement);
this.validations = new LinkedList<>();
Element validations = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "validations");
if (validations != null) {
NodeList validationElements = validations.getChildNodes();
for (int temp = 0; temp < validationElements.getLength(); temp++) {
Node validationElement = validationElements.item(temp);
if (validationElement.getNodeType() == Node.ELEMENT_NODE) {
Short enumValue = Short.parseShort(((Element) validationElement).getAttribute("type"));
FieldValidationType validationType = FieldValidationType.of(enumValue);
this.validations.add(validationType);
}
}
}
if (element.hasAttribute("export")) {
this.includeInExport = Boolean.parseBoolean(element.getAttribute("export"));
} else {
this.includeInExport = true;
}
return this;
}
}

View File

@ -0,0 +1,200 @@
package eu.eudat.commons.types.descriptiontemplate;
import eu.eudat.commons.types.common.DatabaseViewStyleDefinition;
import eu.eudat.commons.types.xml.XmlSerializable;
import eu.eudat.commons.types.xml.XmlBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class FieldSetEntity implements DatabaseViewStyleDefinition, XmlSerializable<FieldSetEntity> {
private String id;
private int ordinal;
private List<FieldEntity> fields;
private String numbering;
private String title;
private String description;
private String extendedDescription;
private String additionalInformation;
private MultiplicityEntity multiplicity;
private boolean hasCommentField;
// private String commentFieldValue; //TODO: DescriptionTemplate
public List<FieldEntity> getFields() {
return fields;
}
public void setFields(List<FieldEntity> fieldEntities) {
this.fields = fieldEntities;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getExtendedDescription() {
return extendedDescription;
}
public void setExtendedDescription(String extendedDescription) {
this.extendedDescription = extendedDescription;
}
public MultiplicityEntity getMultiplicity() {
return multiplicity;
}
public void setMultiplicity(MultiplicityEntity multiplicity) {
this.multiplicity = multiplicity;
}
public boolean getHasCommentField() {
return hasCommentField;
}
public void setHasCommentField(boolean hasCommentField) {
this.hasCommentField = hasCommentField;
}
// public String getCommentFieldValue() {
// return commentFieldValue;
// }
// public void setCommentFieldValue(String commentFieldValue) {
// this.commentFieldValue = commentFieldValue;
// }
public String getNumbering() {
return numbering;
}
public void setNumbering(String numbering) {
this.numbering = numbering;
}
public String getAdditionalInformation() {
return additionalInformation;
}
public void setAdditionalInformation(String additionalInformation) {
this.additionalInformation = additionalInformation;
}
@Override
public Element toXml(Document doc) {
Element fieldSet = doc.createElement("fieldSet");
fieldSet.setAttribute("id", this.id);
fieldSet.setAttribute("ordinal", "" + this.ordinal);
Element title = doc.createElement("title");
title.setTextContent(this.title);
Element description = doc.createElement("description");
description.setTextContent(this.description);
Element extendedDescription = doc.createElement("extendedDescription");
extendedDescription.setTextContent(this.extendedDescription);
Element additionalInformation = doc.createElement("additionalInformation");
additionalInformation.setTextContent(this.additionalInformation);
Element multiplicity = doc.createElement("multiplicity");
multiplicity.setAttribute("min", "" + this.multiplicity.getMin());
multiplicity.setAttribute("max", "" + this.multiplicity.getMax());
multiplicity.setAttribute("placeholder", this.multiplicity.getPlaceholder());
multiplicity.setAttribute("tableView", String.valueOf(this.multiplicity.getTableView()));
Element commentField = doc.createElement("commentField");
commentField.setAttribute("hasCommentField", "" + this.hasCommentField);
// commentField.setAttribute("commentFieldValue", this.commentFieldValue);
Element numbering = doc.createElement("numbering");
numbering.setTextContent(this.numbering);
Element fieldsElement = doc.createElement("fields");
for (FieldEntity fieldEntity : fields) {
fieldEntity.setNumbering(this.numbering + "." + (this.fields.indexOf(fieldEntity) + 1));
fieldsElement.appendChild(fieldEntity.toXml(doc));
}
fieldSet.appendChild(numbering);
fieldSet.appendChild(commentField);
fieldSet.appendChild(fieldsElement);
fieldSet.appendChild(multiplicity);
fieldSet.appendChild(title);
fieldSet.appendChild(description);
fieldSet.appendChild(extendedDescription);
fieldSet.appendChild(additionalInformation);
return fieldSet;
}
@Override
public FieldSetEntity fromXml(Element element) {
this.id = element.getAttribute("id");
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
this.fields = new LinkedList();
Element title = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title");
this.title = title.getTextContent();
Element description = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description");
this.description = description.getTextContent();
Element extendedDescription = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription");
this.extendedDescription = extendedDescription.getTextContent();
Element additionalInformation = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "additionalInformation");
if (additionalInformation != null)
this.additionalInformation = additionalInformation.getTextContent();
Element commentField = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "commentField");
this.hasCommentField = Boolean.parseBoolean(commentField.getAttribute("hasCommentField"));
// this.commentFieldValue = commentField.getAttribute("commentFieldValue");
Element fields = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fields");
Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering");
if (numbering != null) this.numbering = numbering.getTextContent();
if (fields != null) {
NodeList fieldElements = fields.getChildNodes();
for (int temp = 0; temp < fieldElements.getLength(); temp++) {
Node fieldElement = fieldElements.item(temp);
if (fieldElement.getNodeType() == Node.ELEMENT_NODE) {
this.fields.add(new FieldEntity().fromXml((Element) fieldElement));
}
}
}
this.multiplicity = new MultiplicityEntity();
Element multiplicity = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "multiplicity");
this.multiplicity.setMin(Integer.parseInt(multiplicity.getAttribute("min")));
this.multiplicity.setMax(Integer.parseInt(multiplicity.getAttribute("max")));
this.multiplicity.setPlaceholder(multiplicity.getAttribute("placeholder"));
this.multiplicity.setTableView(Boolean.parseBoolean(multiplicity.getAttribute("tableView")));
return this;
}
public List<FieldEntity> getFieldById(String id){
if (this.getFields() == null || id == null || id.isBlank()) return new ArrayList<>();
return this.getFields().stream().filter(x-> id.equals(x.getId())).toList();
}
}

View File

@ -0,0 +1,41 @@
package eu.eudat.commons.types.descriptiontemplate;
public class MultiplicityEntity {
private int min;
private int max;
private String placeholder;
private boolean tableView;
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
public String getPlaceholder() {
return placeholder;
}
public void setPlaceholder(String placeholder) {
this.placeholder = placeholder;
}
public boolean getTableView() {
return tableView;
}
public void setTableView(boolean tableView) {
this.tableView = tableView;
}
}

View File

@ -0,0 +1,54 @@
package eu.eudat.commons.types.descriptiontemplate;
import eu.eudat.commons.types.common.DatabaseViewStyleDefinition;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class PageEntity implements DatabaseViewStyleDefinition, XmlSerializable<PageEntity> {
private String id;
private int ordinal;
private String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public Element toXml(Document doc) {
Element root = doc.createElement("page");
root.setAttribute("title", this.title);
root.setAttribute("ordinal", "" + this.ordinal);
root.setAttribute("id", this.id);
return root;
}
@Override
public PageEntity fromXml(Element item) {
this.ordinal = Integer.parseInt(item.getAttribute("ordinal"));
this.id = item.getAttribute("id");
this.title = item.getAttribute("title");
return this;
}
}

View File

@ -0,0 +1,52 @@
package eu.eudat.commons.types.descriptiontemplate;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class RuleEntity implements XmlSerializable<RuleEntity> {
private String target;
private String value;
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public Element toXml(Document doc) {
Element rule = doc.createElement("rule");
rule.setAttribute("target", this.target);
Element value = doc.createElement("value");
value.setTextContent(this.value);
rule.appendChild(value);
return rule;
}
@Override
public RuleEntity fromXml(Element item) {
this.target = item.getAttribute("target");
Element value = (Element) item.getElementsByTagName("value").item(0);
if (value != null) {
this.value = value.getTextContent();
}
return this;
}
}

View File

@ -0,0 +1,227 @@
package eu.eudat.commons.types.descriptiontemplate;
import eu.eudat.commons.types.common.DatabaseViewStyleDefinition;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class SectionEntity implements DatabaseViewStyleDefinition, XmlSerializable<SectionEntity> {
private String id;
private int ordinal;
private boolean defaultVisibility;
private String numbering;
private String page;
private String title;
private String description;
private String extendedDescription;
private List<SectionEntity> sections;
private List<FieldSetEntity> fieldSets;
private Boolean multiplicity;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
public boolean isDefaultVisibility() {
return defaultVisibility;
}
public void setDefaultVisibility(boolean defaultVisibility) {
this.defaultVisibility = defaultVisibility;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<SectionEntity> getSections() {
return sections;
}
public void setSections(List<SectionEntity> sections) {
this.sections = sections;
}
public List<FieldSetEntity> getFieldSets() {
return fieldSets;
}
public void setFieldSets(List<FieldSetEntity> fieldSetEntities) {
this.fieldSets = fieldSetEntities;
}
public String getExtendedDescription() {
return extendedDescription;
}
public void setExtendedDescription(String extendedDescription) {
this.extendedDescription = extendedDescription;
}
public String getNumbering() {
return numbering;
}
public void setNumbering(String numbering) {
this.numbering = numbering;
}
public Boolean getMultiplicity() {
return multiplicity;
}
public void setMultiplicity(Boolean multiplicity) {
this.multiplicity = multiplicity;
}
@Override
public Element toXml(Document doc) {
Element rootElement = doc.createElement("section");
rootElement.setAttribute("id", this.id);
rootElement.setAttribute("ordinal", "" + this.ordinal);
rootElement.setAttribute("defaultVisibility", "" + this.defaultVisibility);
rootElement.setAttribute("page", "" + this.page);
rootElement.setAttribute("multiplicity", (this.multiplicity != null ? "" + this.multiplicity : "false"));
Element description = doc.createElement("description");
description.setTextContent(this.description);
Element extendedDescription = doc.createElement("extendedDescription");
extendedDescription.setTextContent(this.extendedDescription);
Element numbering = doc.createElement("numbering");
numbering.setTextContent(this.numbering);
Element title = doc.createElement("title");
title.setTextContent(this.title);
if (sections != null) {
Element sections = doc.createElement("sections");
for (SectionEntity sectionEntity : this.sections) {
sectionEntity.setNumbering(this.numbering + "." + (this.sections.indexOf(sectionEntity) + 1));
sections.appendChild(sectionEntity.toXml(doc));
}
rootElement.appendChild(sections);
}
if (this.fieldSets != null) {
Element formGroups = doc.createElement("fieldSets");
for (FieldSetEntity fieldSetEntity : this.fieldSets) {
fieldSetEntity.setNumbering(this.numbering + "." + (this.fieldSets.indexOf(fieldSetEntity) + 1));
formGroups.appendChild(fieldSetEntity.toXml(doc));
}
rootElement.appendChild(formGroups);
}
rootElement.appendChild(numbering);
rootElement.appendChild(title);
rootElement.appendChild(extendedDescription);
rootElement.appendChild(description);
return rootElement;
}
@Override
public SectionEntity fromXml(Element element) {
this.id = element.getAttribute("id");
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
this.defaultVisibility = Boolean.valueOf(element.getAttribute("defaultVisibility"));
this.page = element.getAttribute("page");
this.multiplicity = element.hasAttribute("multiplicity") ? Boolean.valueOf(element.getAttribute("multiplicity")) : false;
Element description = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description");
if (description != null) this.description = description.getTextContent();
Element extendedDescription = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription");
if (extendedDescription != null) this.extendedDescription = extendedDescription.getTextContent();
Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering");
if (numbering != null) this.numbering = numbering.getTextContent();
Element title = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title");
if (title != null) this.title = title.getTextContent();
this.sections = new LinkedList<SectionEntity>();
Element sections = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "sections");
if (sections != null) {
NodeList sectionElements = sections.getChildNodes();
for (int temp = 0; temp < sectionElements.getLength(); temp++) {
Node sectionElement = sectionElements.item(temp);
if (sectionElement.getNodeType() == Node.ELEMENT_NODE) {
this.sections.add(new SectionEntity().fromXml((Element) sectionElement));
}
}
}
this.fieldSets = new LinkedList<FieldSetEntity>();
Element fieldGroups = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fieldSets");
if (fieldGroups != null) {
NodeList fieldGroupElements = fieldGroups.getChildNodes();
for (int temp = 0; temp < fieldGroupElements.getLength(); temp++) {
Node fieldGroupElement = fieldGroupElements.item(temp);
if (fieldGroupElement.getNodeType() == Node.ELEMENT_NODE) {
this.fieldSets.add(new FieldSetEntity().fromXml((Element) fieldGroupElement));
}
}
}
return this;
}
public List<FieldEntity> getFieldById(String id){
List<FieldEntity> fieldEntities = new ArrayList<>();
if (id == null || id.isBlank()) return fieldEntities;
if (this.getFieldSets() != null){
for (FieldSetEntity fieldSetEntity: this.getFieldSets()) {
fieldEntities.addAll(fieldSetEntity.getFieldById(id));
}
}
if (this.getSections() != null){
for (SectionEntity sectionEntity: this.getSections()) {
fieldEntities.addAll(sectionEntity.getFieldById(id));
}
}
return fieldEntities;
}
}

View File

@ -0,0 +1,257 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import com.fasterxml.jackson.annotation.JsonValue;
import eu.eudat.commons.enums.EnumUtils;
import eu.eudat.commons.enums.FieldDataComboBoxType;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.data.converters.enums.DatabaseEnum;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AutoCompleteDataEntity extends ComboBoxDataEntity<AutoCompleteDataEntity> {
public static class AuthAutoCompleteData {
private String url;
private String method;
private String body;
private String path;
private String type;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
public static class AutoCompleteSingleData {
private AutocompleteType autocompleteType;
private String url;
private ComboBoxDataEntity.Option autoCompleteOptions;
private String optionsRoot;
private Boolean hasAuth;
private AuthAutoCompleteData auth;
private String method;
public AutocompleteType getAutocompleteType() {
return autocompleteType;
}
public void setAutocompleteType(AutocompleteType autocompleteType) {
this.autocompleteType = autocompleteType;
}
public String getOptionsRoot() {
return optionsRoot;
}
public void setOptionsRoot(String optionsRoot) {
this.optionsRoot = optionsRoot;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Boolean getHasAuth() {
return hasAuth;
}
public void setHasAuth(Boolean hasAuth) {
this.hasAuth = hasAuth;
}
public AuthAutoCompleteData getAuth() {
return auth;
}
public void setAuth(AuthAutoCompleteData auth) {
this.auth = auth;
}
public ComboBoxDataEntity.Option getAutoCompleteOptions() {
return autoCompleteOptions;
}
public void setAutoCompleteOptions(ComboBoxDataEntity.Option autoCompleteOptions) {
this.autoCompleteOptions = autoCompleteOptions;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
}
private Boolean multiAutoComplete;
private List<AutoCompleteSingleData> autoCompleteSingleDataList;
public Boolean getMultiAutoComplete() { return multiAutoComplete; }
public void setMultiAutoComplete(Boolean multiAutoComplete) { this.multiAutoComplete = multiAutoComplete; }
public List<AutoCompleteSingleData> getAutoCompleteSingleDataList() {
return autoCompleteSingleDataList;
}
public void setAutoCompleteSingleDataList(List<AutoCompleteSingleData> autoCompleteSingleDataList) {
this.autoCompleteSingleDataList = autoCompleteSingleDataList;
}
@Override
public FieldDataComboBoxType getFieldSubType() {
return FieldDataComboBoxType.Autocomplete;
}
@Override
public FieldType getFieldType() {
return FieldType.AUTO_COMPLETE;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.multiAutoComplete != null)
root.setAttribute("multiAutoComplete", this.multiAutoComplete.toString());
for (AutoCompleteSingleData singleData: this.autoCompleteSingleDataList) {
Element parent = doc.createElement("autocompleteSingle");
parent.setAttribute("url", singleData.url);
parent.setAttribute("optionsRoot", singleData.optionsRoot);
parent.setAttribute("autoCompleteType", Integer.toString(singleData.autocompleteType.getValue()));
parent.setAttribute("hasAuth", Boolean.toString(singleData.hasAuth));
parent.setAttribute("method", singleData.method);
Element element = doc.createElement("option");
element.setAttribute("label", singleData.autoCompleteOptions.getLabel());
element.setAttribute("value", singleData.autoCompleteOptions.getValue());
element.setAttribute("source", singleData.autoCompleteOptions.getSource());
parent.appendChild(element);
if (singleData.hasAuth) {
Element authElement = doc.createElement("auth");
authElement.setAttribute("url", singleData.auth.url);
authElement.setAttribute("method", singleData.auth.method);
authElement.setAttribute("body", singleData.auth.body);
authElement.setAttribute("path", singleData.auth.path);
authElement.setAttribute("type", singleData.auth.type);
parent.appendChild(authElement);
}
root.appendChild(parent);
}
return root;
}
@Override
public AutoCompleteDataEntity fromXml(Element item) {
super.fromXml(item);
this.autoCompleteSingleDataList = new ArrayList<>();
NodeList items = item.getElementsByTagName("autocompleteSingle");
if (items != null && items.getLength() > 0) {
for (int i = 0; i < items.getLength(); i++) {
this.autoCompleteSingleDataList.add(new AutoCompleteSingleData());
Element single = (Element) items.item(i);
this.mapFromXml(single, this.autoCompleteSingleDataList.get(i));
}
} else {
this.autoCompleteSingleDataList.add(new AutoCompleteSingleData());
this.mapFromXml(item, this.autoCompleteSingleDataList.get(0));
}
this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete"));
return this;
}
private void mapFromXml(Element item, AutoCompleteSingleData singleData) {
singleData.url = item.getAttribute("url");
singleData.optionsRoot = item.getAttribute("optionsRoot");
this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete"));
if (item.getAttribute("autoCompleteType") == null || item.getAttribute("autoCompleteType").equals("") ) {
singleData.autocompleteType = AutocompleteType.UNCACHED;
} else {
singleData.autocompleteType = AutocompleteType.of(Integer.parseInt(item.getAttribute("autoCompleteType")));
}
singleData.hasAuth = Boolean.parseBoolean(item.getAttribute("hasAuth"));
singleData.method = item.hasAttribute("method") ? item.getAttribute("method") : "GET";
Element optionElement = (Element) item.getElementsByTagName("option").item(0);
if (optionElement != null) {
singleData.autoCompleteOptions = new Option();
singleData.autoCompleteOptions.setLabel(optionElement.getAttribute("label"));
singleData.autoCompleteOptions.setValue(optionElement.getAttribute("value"));
singleData.autoCompleteOptions.setSource(optionElement.getAttribute("source"));
singleData.autoCompleteOptions.setUri(optionElement.getAttribute("uri"));
}
if (singleData.hasAuth) {
Element authElement = (Element) item.getElementsByTagName("auth").item(0);
if (authElement != null) {
singleData.auth = new AuthAutoCompleteData();
singleData.auth.setUrl(authElement.getAttribute("url"));
singleData.auth.setMethod(authElement.getAttribute("method"));
singleData.auth.setBody(authElement.getAttribute("body"));
singleData.auth.setPath(authElement.getAttribute("path"));
singleData.auth.setType(authElement.getAttribute("type"));
}
}
}
public enum AutocompleteType implements DatabaseEnum<Integer> {
UNCACHED(0),
CACHED(1);
private final int value;
AutocompleteType(int value) {
this.value = value;
}
@JsonValue
public Integer getValue() {
return value;
}
private static final Map<Integer, AutocompleteType> map = EnumUtils.getEnumValueMap(AutocompleteType.class);
public static AutocompleteType of(int i) {
return map.get(i);
}
}
}

View File

@ -0,0 +1,34 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.Map;
public abstract class BaseFieldDataEntity<T> implements XmlSerializable<T> {
private String label;
public abstract FieldType getFieldType();
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Element toXml(Document doc) {
Element root = doc.createElement("data");
root.setAttribute("label", this.getLabel());
return root;
}
public T fromXml(Element item) {
this.setLabel(item.getAttribute("label"));
return (T) this;
}
}

View File

@ -0,0 +1,16 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class BooleanDecisionDataEntity extends BaseFieldDataEntity<BooleanDecisionDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.BOOLEAN_DECISION;
}
}

View File

@ -0,0 +1,16 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class CheckBoxDataEntity extends BaseFieldDataEntity<CheckBoxDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.CHECK_BOX;
}
}

View File

@ -0,0 +1,83 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataComboBoxType;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public abstract class ComboBoxDataEntity<T> extends BaseFieldDataEntity<T> {
public abstract FieldDataComboBoxType getFieldSubType();
public static class Option implements XmlSerializable<Option> {
private String label;
private String value;
private String source;
private String uri;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
@Override
public Element toXml(Document doc) {
Element option = doc.createElement("option");
option.setAttribute("label", this.label);
option.setAttribute("value", this.value);
option.setAttribute("source", this.source);
option.setAttribute("uri", this.uri);
return option;
}
@Override
public ComboBoxDataEntity.Option fromXml(Element item) {
this.label = item.getAttribute("label");
this.value = item.getAttribute("value");
this.source = item.getAttribute("source");
this.uri = item.getAttribute("uri");
return this;
}
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
root.setAttribute("type", this.getFieldSubType().toString());
return root;
}
@Override
public T fromXml(Element item) {
super.fromXml(item);
return (T) this;
}
}

View File

@ -0,0 +1,15 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class CurrencyDataEntity extends BaseFieldDataEntity<CurrencyDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.CURRENCY;
}
}

View File

@ -0,0 +1,41 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class DataRepositoryDataEntity extends BaseFieldDataEntity<DataRepositoryDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.DATA_REPOSITORIES;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public DataRepositoryDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,47 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataComboBoxType;
import eu.eudat.commons.enums.FieldDataInternalDmpEntryType;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class DatasetAutoCompleteDataEntity extends InternalDmpBaseDataEntity<DatasetAutoCompleteDataEntity> {
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public FieldDataInternalDmpEntryType getFieldSubType() {
return FieldDataInternalDmpEntryType.Datasets;
}
@Override
public FieldType getFieldType() {
return FieldType.INTERNAL_DMP_ENTRIES_DATASETS;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
root.setAttribute("multiAutoComplete", this.multiAutoComplete.toString());
return root;
}
@Override
public DatasetAutoCompleteDataEntity fromXml(Element item) {
super.fromXml(item);
this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete"));
return this;
}
}

View File

@ -0,0 +1,15 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class DatasetIdentifierDataEntity extends BaseFieldDataEntity<DatasetIdentifierDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.DATASET_IDENTIFIER;
}
}

View File

@ -0,0 +1,15 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class DatePickerDataEntity extends BaseFieldDataEntity<DatePickerDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.DATE_PICKER;
}
}

View File

@ -0,0 +1,45 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataInternalDmpEntryType;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class DmpAutoCompleteDataEntity extends InternalDmpBaseDataEntity<DmpAutoCompleteDataEntity> {
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public FieldDataInternalDmpEntryType getFieldSubType() {
return FieldDataInternalDmpEntryType.Dmps;
}
@Override
public FieldType getFieldType() {
return FieldType.INTERNAL_DMP_ENTRIES_DMPS;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
root.setAttribute("multiAutoComplete", this.multiAutoComplete.toString());
return root;
}
@Override
public DmpAutoCompleteDataEntity fromXml(Element item) {
super.fromXml(item);
this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete"));
return this;
}
}

View File

@ -0,0 +1,55 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataExternalDatasetType;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class ExternalDatasetDataEntity extends BaseFieldDataEntity<ExternalDatasetDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.EXTERNAL_DATASETS;
}
private Boolean multiAutoComplete;
private FieldDataExternalDatasetType type;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
public FieldDataExternalDatasetType getType() {
return type;
}
public void setType(FieldDataExternalDatasetType type) {
this.type = type;
}
@Override
public Element toXml(Document doc) {
Element root = doc.createElement("data");
root.setAttribute("label", this.getLabel());
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
if (this.getType() != null) {
root.setAttribute("type", this.getType().getValue());
}
return root;
}
@Override
public ExternalDatasetDataEntity fromXml(Element item) {
this.setLabel(item != null ? item.getAttribute("label") : "");
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
this.setType(item.getAttribute("type") != null ? FieldDataExternalDatasetType.of(item.getAttribute("type")): FieldDataExternalDatasetType.Other);
return this;
}
}

View File

@ -0,0 +1,69 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataComboBoxType;
import eu.eudat.commons.enums.FieldDataInternalDmpEntryType;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Element;
import java.util.Map;
public class FieldDataHelper {
public BaseFieldDataEntity<?> create(FieldType type, String subType) {
switch (type) {
case COMBO_BOX: {
if (subType != null && !subType.isBlank()) {
switch (FieldDataComboBoxType.of(subType)) {
case Wordlist: {
return new WordListDataEntity();
}
case Autocomplete: {
return new AutoCompleteDataEntity();
}
}
}
break;
}
case INTERNAL_DMP_ENTRIES: {
if (subType != null && !subType.isBlank()) {
switch (FieldDataInternalDmpEntryType.of(subType)){
case Dmps: {
return new DmpAutoCompleteDataEntity();
}
case Datasets: {
return new DatasetAutoCompleteDataEntity();
}
case Researchers : {
return new ResearcherAutoCompleteDataEntity();
}
}
}
break;
}
case BOOLEAN_DECISION: return new BooleanDecisionDataEntity();
case RADIO_BOX: return new RadioBoxDataEntity();
case CHECK_BOX: return new CheckBoxDataEntity();
case FREE_TEXT: return new FreeTextDataEntity();
case TEXT_AREA: return new TextAreaDataEntity();
case RICH_TEXT_AREA: return new RichTextAreaDataEntity();
case UPLOAD: return new UploadDataEntity();
case DATE_PICKER: return new DatePickerDataEntity();
case EXTERNAL_DATASETS: return new ExternalDatasetDataEntity();
case DATA_REPOSITORIES: return new DataRepositoryDataEntity();
case PUB_REPOSITORIES: return new PublicationRepositoryDataEntity();
case JOURNAL_REPOSITORIES: return new JournalRepositoryDataEntity();
case TAXONOMIES: return new TaxonomyDataEntity();
case LICENSES: return new LicenseDataEntity();
case PUBLICATIONS: return new PublicationDataEntity();
case REGISTRIES: return new RegistryDataEntity();
case SERVICES: return new ServiceDataEntity();
case TAGS: return new TagDataEntity();
case RESEARCHERS: return new ResearcherDataEntity();
case ORGANIZATIONS: return new OrganizationDataEntity();
case DATASET_IDENTIFIER: return new DatasetIdentifierDataEntity();
case CURRENCY: return new CurrencyDataEntity();
case VALIDATION: return new ValidationDataEntity();
default: return null;
}
return null;
}
}

View File

@ -0,0 +1,16 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class FreeTextDataEntity extends BaseFieldDataEntity<FreeTextDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.FREE_TEXT;
}
}

View File

@ -0,0 +1,26 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataInternalDmpEntryType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public abstract class InternalDmpBaseDataEntity<T> extends BaseFieldDataEntity<T> {
public abstract FieldDataInternalDmpEntryType getFieldSubType();
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
root.setAttribute("type", this.getFieldSubType().toString());
return root;
}
@Override
public T fromXml(Element item) {
super.fromXml(item);
return (T) this;
}
}

View File

@ -0,0 +1,41 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class JournalRepositoryDataEntity extends BaseFieldDataEntity<JournalRepositoryDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.JOURNAL_REPOSITORIES;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public JournalRepositoryDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,40 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class LicenseDataEntity extends BaseFieldDataEntity<LicenseDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.LICENSES;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public LicenseDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,40 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class OrganizationDataEntity extends BaseFieldDataEntity<OrganizationDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.ORGANIZATIONS;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public OrganizationDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,39 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class PublicationDataEntity extends BaseFieldDataEntity<PublicationDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.PUBLICATIONS;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public PublicationDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,41 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class PublicationRepositoryDataEntity extends BaseFieldDataEntity<PublicationRepositoryDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.PUB_REPOSITORIES;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public PublicationRepositoryDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,95 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.types.xml.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class RadioBoxDataEntity extends BaseFieldDataEntity<RadioBoxDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.RADIO_BOX;
}
public static class Option implements XmlSerializable<Option> {
private String label;
private String value;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public Element toXml(Document doc) {
Element option = doc.createElement("option");
option.setAttribute("label", this.label);
option.setAttribute("value", this.value);
return option;
}
@Override
public Option fromXml(Element item) {
this.label = item.getAttribute("label");
this.value = item.getAttribute("value");
return this;
}
}
private List<Option> options;
public List<Option> getOptions() {
return options;
}
public void setOptions(List<Option> options) {
this.options = options;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
Element element = doc.createElement("options");
for (Option option : this.options) {
element.appendChild(option.toXml(doc));
}
root.appendChild(element);
return root;
}
@Override
public RadioBoxDataEntity fromXml(Element item) {
super.fromXml(item);
this.options = new LinkedList<>();
Element optionsElement = (Element) item.getElementsByTagName("options").item(0);
if (optionsElement != null) {
NodeList optionElements = optionsElement.getChildNodes();
for (int temp = 0; temp < optionElements.getLength(); temp++) {
Node optionElement = optionElements.item(temp);
if (optionElement.getNodeType() == Node.ELEMENT_NODE) {
this.options.add(new Option().fromXml((Element) optionElement));
}
}
}
return this;
}
}

View File

@ -0,0 +1,39 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class RegistryDataEntity extends BaseFieldDataEntity<RegistryDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.REGISTRIES;
}
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
if (this.getMultiAutoComplete() != null) {
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
}
return root;
}
@Override
public RegistryDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

View File

@ -0,0 +1,46 @@
package eu.eudat.commons.types.descriptiontemplate.fielddata;
import eu.eudat.commons.enums.FieldDataInternalDmpEntryType;
import eu.eudat.commons.enums.FieldType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
public class ResearcherAutoCompleteDataEntity extends InternalDmpBaseDataEntity<ResearcherAutoCompleteDataEntity> {
private Boolean multiAutoComplete;
public Boolean getMultiAutoComplete() {
return multiAutoComplete;
}
public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete;
}
@Override
public FieldDataInternalDmpEntryType getFieldSubType() {
return FieldDataInternalDmpEntryType.Researchers;
}
@Override
public FieldType getFieldType() {
return FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS;
}
@Override
public Element toXml(Document doc) {
Element root = super.toXml(doc);
root.setAttribute("multiAutoComplete", this.multiAutoComplete != null ? this.multiAutoComplete.toString() : "false");
return root;
}
@Override
public ResearcherAutoCompleteDataEntity fromXml(Element item) {
super.fromXml(item);
this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete"));
return this;
}
}

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