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
4693 changed files with 283189 additions and 106595 deletions

4
.gitignore vendored
View File

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

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;
}
}

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 ResearcherDataEntity extends BaseFieldDataEntity<ResearcherDataEntity> {
@Override
public FieldType getFieldType() {
return FieldType.RESEARCHERS;
}
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 ResearcherDataEntity fromXml(Element item) {
super.fromXml(item);
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this;
}
}

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