Compare commits

...

1516 Commits

Author SHA1 Message Date
Diamantis Tziotzios e8aef281d4 Merge branch 'Development' 2 months ago
Diamantis Tziotzios 00c6978594 no message 2 months ago
Diamantis Tziotzios 3adb518e61 fixes 2 months ago
Konstantina Galouni eb74ef86b9 rich-text-editor.component.ts: Removed "backgroundColor" from toolbarHiddenButtons & added in customClasses "Highlight" option with custom "highlight" class | _type.scss: Added rules for "blockquote" and ".highlight" (added by rich text editor). 3 months ago
Diamantis Tziotzios a1ee9c82bc fixes 3 months ago
Diamantis Tziotzios 5e5bd39313 no message 3 months ago
Diamantis Tziotzios 5e99cef60e default blueprint update 3 months ago
Diamantis Tziotzios cc7edc2f49 final fixes for #9384 #9153 #9409 #9420 3 months ago
Diamantis Tziotzios a1849c64ca Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.ts
3 months ago
Diamantis Tziotzios 192220161b fixes 3 months ago
George Kalampokis 87758c3e9a Fix various issues with adding/removing Dataset Templates 3 months ago
Diamantis Tziotzios 83342f5afa docx template update 3 months ago
Diamantis Tziotzios 65cdb3b6ea fixes for #9384 #9153 #9162 #9265 3 months ago
Diamantis Tziotzios 536ba9b900 Fixes for #9152 #9153 #9162 #9265 #9266 #9311 #9312 4 months ago
Alexandros Mandilaras 6bd3302788 sql script fix 5 months ago
Diamantis Tziotzios 4970f5812f fix issues #9152 #9153 #9204 #9208 5 months ago
Diamantis Tziotzios 9fed92dbcb fixes for #9109 #9146 #9148 #9149 #9152 #9153 #9156 #9157 #9158 #9160 #9162 #9163 #9164 #9166 6 months ago
Diamantis Tziotzios 44dab9c19a gitignore changes 6 months ago
Alexandros Mandilaras 54f911d826 typo fixes in greek and english translations 6 months ago
Diamantis Tziotzios 9879050eab cleanup 6 months ago
Diamantis Tziotzios 8a41a7dcd9 Fixes for #9033 #9107 #9105 #9105 6 months ago
Diamantis Tziotzios d60cc144d5 #9033 Description Templates - change "Other" API label to "Custom" 6 months ago
Georgios Kakaletris 9c37e5a073 Update 'README.md' 6 months ago
Georgios Kakaletris 444c1aacb1 Update 'README.md' 6 months ago
Diamantis Tziotzios 59d7383947 added basque contributors at static pages 6 months ago
Diamantis Tziotzios 6caa1af134 Added Basque language 6 months ago
George Kalampokis 74a6019a72 Fix some styling and compilation errors 7 months ago
George Kalampokis 5c903c0f48 Add missing files 7 months ago
George Kalampokis ec8f6a6d48 Add Authentication support for the remote fetcher and rework dataset template's autocomplete sources 7 months ago
Bernaldo Mihasi ecd86f413a show prefilling pop up if only at least one dataset profile has enabled prefilling property 7 months ago
Bernaldo Mihasi c238615b50 add enable prefilling property in description templates 7 months ago
Bernaldo Mihasi 10d0f1fb0e make word list labels and delete icons in finalized description templates disabled 7 months ago
Bernaldo Mihasi 846405435c bug fixes 7 months ago
Bernaldo Mihasi dfc9e14003 update i18n 7 months ago
Bernaldo Mihasi bc1894586b 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 7 months ago
Bernaldo Mihasi 2bf0a857bc 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 7 months ago
Bernaldo Mihasi 3d10e8ad28 add type attribute in xml import/export of a description template 7 months ago
Bernaldo Mihasi 53b61853e1 bug fixes 7 months ago
Bernaldo Mihasi d644b1dc91 [wip] dmp xml upload changes, including section and extra fields information 7 months ago
Bernaldo Mihasi 6b544e4702 bug fixes 7 months ago
Bernaldo Mihasi 0bd3422903 check if blueprint is valid when finalizing in editor 7 months ago
Bernaldo Mihasi 2f4e123ac9 bug fixes 7 months ago
Bernaldo Mihasi c99267d6cc #8998 - implement import/export functionality for dmp blueprints 7 months ago
Bernaldo Mihasi 32c45520b4 make router link for add description buttons pointing to dmp editor 7 months ago
Bernaldo Mihasi 4cef17e999 fix routing in save-and-add-new button in dataset editor 7 months ago
Bernaldo Mihasi 34580f917f check if grant exists in word/pdf export 7 months ago
Bernaldo Mihasi 56a70636c3 min multiplicity check for descriptions in dmp finalization 7 months ago
Bernaldo Mihasi 0c9601d6f0 fix argument passed in getSingleBlueprint 7 months ago
Bernaldo Mihasi 5f3ab00009 [wip] add control in dataset creation/prefilling dialog for max multiplicity of a description template in a dmp section, add control in dmp finalization for min multiplicity of a description template in a dmp section 7 months ago
Bernaldo Mihasi beac6be706 add missing grant checks 7 months ago
Bernaldo Mihasi fbad63ee76 use dmp label in export file names if grant does not exist 7 months ago
Bernaldo Mihasi 9cc42c57e9 comment out download/import xml of a blueprint 7 months ago
Bernaldo Mihasi 79aaf23bb6 add missing grant checks 7 months ago
Bernaldo Mihasi b68070aa01 [wip] add control for the min/max multiplicity of a description template used in a section of a dmp 7 months ago
Bernaldo Mihasi db08662cac fix bug when creating new version or clone a dmp 7 months ago
Bernaldo Mihasi 3c0dce93a8 disable system fields/description templates multiple select input and prefill them if any values exist when blueprint is finalized 7 months ago
Bernaldo Mihasi 69548e5a8b check if grant exists in dmp/dataset elastic entities 7 months ago
Bernaldo Mihasi 367861c050 fix bugs: saving extra fields in dmp, showing draft blueprints when min or max of a description template are not set 7 months ago
Bernaldo Mihasi 93c5918251 make grant funder not mandatory for the creation/new version/clone of dmp 7 months ago
Bernaldo Mihasi bfa310a074 show available profiles of dataset in edit page 8 months ago
Bernaldo Mihasi ec952820b1 update i18n 8 months ago
Bernaldo Mihasi b1a832074d small fixes, (wip) remove description template chip from dmp editor 8 months ago
Diamantis Tziotzios cf6e041154 Merge remote-tracking branch 'origin/refactorArgosModel' into Development
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DatasetRDAMapper.java
#	dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html
8 months ago
Bernaldo Mihasi c1858d582c no message 8 months ago
Bernaldo Mihasi 29f5b6a6cc fix editing dmp page, add section templates to new dataset page 8 months ago
Bernaldo Mihasi 6154a5fa51 fix associated dmps bugs in DMP table, new/existing DmpDatasetProfile entries were not saved/updated 8 months ago
Bernaldo Mihasi 6f5fcabc79 add db scripts: inserting default blueprint, attach that blueprint as profile of each dmp, make each dataset section index correspond to the default blueprint last section 8 months ago
Bernaldo Mihasi bbe4975176 add hasTemplates property to sections, it indicates if descriptions templates can be added in a section 8 months ago
Bernaldo Mihasi 4219d90039 add "DmpSectionIndex" column to descriptions in order to know in which section of a dmp the description belongs, add "data" column in DmpDatasetProfile table, data stores in which sections a description template is saved 8 months ago
Bernaldo Mihasi 6073c4cd85 [WIP] refactor dmp export following the blueprint schema 8 months ago
Bernaldo Mihasi cd80e78e40 add status to description template types, fix bugs in editor/listing 8 months ago
George Kalampokis 5019bc4271 Add manual addition of total users in prometheus 9 months ago
Bernaldo Mihasi 3564cc16ff update i18n - link new 9 months ago
Diamantis Tziotzios 3b76397c24 conf cleanup 9 months ago
Bernaldo Mihasi 78946de1b5 change images source in emails to base64
(cherry picked from commit b94aa51489)
9 months ago
Diamantis Tziotzios c39c162979 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 9 months ago
Konstantinos Triantafyllou 655483b8e2 Dateset Edtitor: Scroll to top in Main info. Add checkVisibility in recursion of progress bar status calculation. Increase time of selected entry in tableofcontents 9 months ago
Bernaldo Mihasi 17dbd198ad fix dmp blueprint editor screen 9 months ago
Bernaldo Mihasi b94aa51489 change images source in emails to base64 9 months ago
Diamantis Tziotzios b6cade6e88 metrics change
(cherry picked from commit 903026e2c2)
9 months ago
Diamantis Tziotzios 903026e2c2 metrics change 9 months ago
Bernaldo Mihasi 59cba483b6 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 9 months ago
Bernaldo Mihasi 30abe4d4c9 #8952 - fix bug when merging two accounts did not have consistent behaviour. 9 months ago
Konstantinos Triantafyllou a4555f7303 Fix progress-bar for dmp editor. Fix table of contents in creation of DMP. On save of new dmp, change location instead of route. 9 months ago
Bernaldo Mihasi 634d49ea35 #8916 - when merging acoounts, save the main profile user as collaborator to elastic dmps/datasets 9 months ago
Bernaldo Mihasi e01709f886 #8936 - fix bug when pid of object fetched was integer(PIC typed) instead of string 9 months ago
Bernaldo Mihasi 09d6528f8f #8855 - #8856 - #8901 - #8902 [wip] implementing dmp blueprints 9 months ago
Bernaldo Mihasi 128b47d9c3 #8845 - #8846: adding description template types, creation of description template type field in the dataset template editor, [wip] creation of admin page for creation/editing/deleting of description template types 9 months ago
Bernaldo Mihasi bc279b1610 #8843 - 1. refactor the DatasetProfile Table to DescriptionTemplate name 2. add scripts for the new DescriptionTemplateType table 3. update english localization + frontend 9 months ago
Konstantinos Triantafyllou a737fec19d Progress Bar: Add condition for visibillity if a field has id. 9 months ago
Bernaldo Mihasi 3fc307c831 #8912: adding new metadata/registries api in the configs 9 months ago
Bernaldo Mihasi ee90ac37b6 no message 9 months ago
Bernaldo Mihasi 0918e55ac9 fix bug in dataset template editor when a field is an admin-input api and couldn't fetch results 9 months ago
Bernaldo Mihasi 2db9ea613f catch error in prefilling when source mapping does not exist in the api's response 9 months ago
Konstantina Galouni e878310b72 #8834: Home page: Drafts query for both Datasets and DMPs.
1. RecentActivityCriteria.java: Added in RecentActivityCriteria field "private Integer status;", to be able to get only drafts.
2. DashBoardManager.java: In method "getNewRecentActivity()", add in Dataset and DMP requests status in criteria.
10 months ago
Konstantina Galouni e4af3bcbe9 Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 10 months ago
Konstantina Galouni 77f40570ac #8834: Home page: Drafts query for both Datasets and DMPs.
1. recent-activity-criteria.ts: Added in RecentActivityCriteria optional field "public status?: Number;" (to get only drafts).
2. drafts.component.ts & drafts.component.html: Updated calls and display to query for both Datasets and DMPs (same as recent-edited-activity, but include only drafts).
4. recent-edited-activity.component.ts: Removed old unnecessary logs.
10 months ago
Konstantinos Triantafyllou 7bc4f4055c Fix progress indicator in prifilled dataset form. #8764 10 months ago
Konstantinos Triantafyllou aec7126fd3 Add valid condition in progress calculatiion of a form 10 months ago
Bernaldo Mihasi dd6a2a0df7 adding key property in the prefilling model as the identifier of the prefilling repository 10 months ago
Bernaldo Mihasi 1715463422 fix bugs in rda json export when rda semantics don't correspond to valid dataset field input type 10 months ago
Bernaldo Mihasi a8ce14af70 #8726 - adding openaire prefilling 10 months ago
Bernaldo Mihasi 1a15e1ddde add missing logger to Prefilling Mapper 10 months ago
Bernaldo Mihasi 000882cbdb 1) fix bug when tags don't show after saving the dataset
2) save the email when user logs in with orcid
3) refactor unlink, delete credential of user to be unlinked
10 months ago
Bernaldo Mihasi 1c0562d7e7 catch error when a field's external api is not available and interrupts prefilling process 10 months ago
Bernaldo Mihasi 8fbc20c823 no message 10 months ago
Bernaldo Mihasi 469a8b4def add config properties to zenodo.json 10 months ago
Bernaldo Mihasi cb972c394c change maDmpTarget type in prefilling to semanticTarget 10 months ago
Bernaldo Mihasi d996acdcc4 #8842 - add notification templates html files to application properties 10 months ago
Bernaldo Mihasi 741179a53f #8740 - multiple configuration for a deposit repository 10 months ago
Bernaldo Mihasi 3630727fed dmp profile bug fixes: 1) dmp profile was not saved 2) if you select external autocomplete field and change it to another type, the external field was saved 10 months ago
Bernaldo Mihasi 34e4761811 bug fixes regarding tickets: #8739, #8763, #8833 10 months ago
Bernaldo Mihasi dfa2f0cd38 #8737 - make elastic fetch 100 inner hits instead of the default 3. 10 months ago
Bernaldo Mihasi 3d367b0589 #8765 - make pids coming from apis as hypelinks in export 10 months ago
Bernaldo Mihasi b6505cda4e refactor signing of saml2 authentication request 10 months ago
Diamantis Tziotzios 50c96ef821 Merge branch 'Development' 10 months ago
Konstantina Galouni 1a2a93a95f #8738 - Disable input fields in finalised DMPs/datasets.
1. dataset-editor.component.html & form-composite-field.component.html & form-field.component.html & form-section.component.html: Added [editable] parameter input in <rich-text-editor-component> or [disabled] attribute in inputs, buttons, <ngx-dropzone> and <mat-select> to disable then when form is disabled & do not add "pointer" class when form is disabled.
2. form-field.component.ts: For DatasetIdentifier and Validation view styles, when removing and re-adding control, check if form was disabled and disable it again.
3. form-section.component.ts: In method "addMultipleField()", return without doing anything when form is disabled.
11 months ago
Konstantina Galouni eb4f1d23e1 dataset-description.component.html: [Bug fix] Removed forgotten log {{form | json}} from html. 11 months ago
Konstantina Galouni 985b3de385 rich-text-editor.component.ts: Removed "backgroundColor" from toolbarHiddenButtons | Do not show (x) close to clear the input when editable is false. 11 months ago
Bernaldo Mihasi 2aa1f76aab use sha256 with rsa keys for saml2, fix bug for authentication request's id 11 months ago
Bernaldo Mihasi 5cd1803e3a fix bug where empty input was saved in multiple auto complete fields 11 months ago
Bernaldo Mihasi 1f666a5bf9 create saml2 authentication request in backend 11 months ago
Bernaldo Mihasi 4c9652abc3 saml2 metadata creation for sp 11 months ago
Bernaldo Mihasi ce50a72ac1 seperate tags in dataset editor using enter or comma 11 months ago
Bernaldo Mihasi f20b420c2c disable unlink action in profile section when email is the as the main profile's mail 11 months ago
Bernaldo Mihasi 730b60598a fix bug when dmp has been deposited in a repository and that repository does not exist any more. 11 months ago
Konstantina Galouni 4bac942059 co-branding.html & styles.css & section.css: #8333 - Updated splash page - added section "Accessing to ARGOS / OpenDMP source code". 11 months ago
Bernaldo Mihasi 22dc9647f3 remove unused variable 11 months ago
Bernaldo Mihasi b2f2a79a5d add unlink functionality in profile section, when an email is unlinked that account is starting from scratch resulting in an empty dashboard. 11 months ago
Bernaldo Mihasi 5e764559cf fix typo (semantics) 12 months ago
Bernaldo Mihasi a3ee9dccda update deposit base repository version 12 months ago
Bernaldo Mihasi 758539eaa0 add zenodo related identifiers for schematics 12 months ago
Bernaldo Mihasi af8fddb89c #7911 - read pid and pid type from external api respones so as to save those values in the dataset field 12 months ago
Konstantina Galouni b435994c51 #8148 - [Bug fix] drafts.component.ts & recent-edited-activity.component.ts & recent-edited-dataset-activity.component.ts & recent-edited-dmp-activity.component.ts: Updated check to redirect to first page, if page parameter is bigger than the latest page. 12 months ago
Konstantina Galouni 0adc7044ab h2020.docx: [Bug fix] Updated image of Argos in h2020.docx DMP template | DataManagementPlanManager.java & DatasetManager.java: Added parameter "isDataset" in fillFirstPage() | WordBuilder.java: [Bug fix] Added parameter isDataset in fillFirstPage() and added some checks in description.
(cherry picked from commit c9b4b35e39)
12 months ago
Konstantinos Triantafyllou 0d9b6f9622 Fix bug where on long click, blur value was added in the list of chips. 1 year ago
Bernaldo Mihasi 5d5ebe7a55 update about, glossary, terms pages when language changes. 1 year ago
Bernaldo Mihasi 7c347569fd update user guide when language changes. 1 year ago
Konstantinos Triantafyllou 50169222c7 Fix infinite loop in home page when total number of results is less than the page size 1 year ago
Konstantinos Triantafyllou e84398f667 Close autocomplete panel if a blur value is added. 1 year ago
Bernaldo Mihasi a1fd03a444 fix out of memory error in management endpoints. 1 year ago
Bernaldo Mihasi 8c30c558b2 User Guide, ToS, FAQ, Glossary, About html pages can now be dynamically updated so that they can be changed per installation. 1 year ago
Konstantina Galouni 2715db7365 #8148 - Added paging functionality with load more/ less buttons in home page, for the existing 4 tabs - ordering and keyword are also added in the url and they are resolved on page reload.
1. i18n/: Added properties "GENERAL.ACTIONS.LOAD-LESS" and "GENERAL.ACTIONS.NO-MORE-AVAILABLE".
2. dashboard.component.html: Added aria-label on each <mat-tab> | Added on <mat-tab-group> bindings for [selectedIndex] and (selectedTabChange), to define the active tab.
3. dashboard.component.ts: Added field currentType: string = "recent"; | Set currentType by url params | Added method get indexFromCurrentType(), to return the active tab index.
4. drafts.component.html & recent-edited-activity.component.html & recent-edited-dataset-activity.component.html & recent-edited-dmp-activity.component.html: Added button "LOAD-LESS" and message "NO-MORE-AVAILABLE" to the end of the list.
5. drafts.component.ts & recent-edited-activity.component.ts & recent-edited-dataset-activity.component.ts & recent-edited-dmp-activity.component.ts:
   a. Added fields @ViewChild("...") resultsContainer, offsetLess: number = 0, hasMoreResults:boolean = true, page: number = 1 and @Input() isActive: boolean = false.
   b. Read url params, set offsets and query filters and update url.
   c. Renamed "loadMore()" to "loadNextOrPrevious()" and added parameter more: boolean = true.
1 year ago
Diamantis Tziotzios eb1abb1f24 more css changes 1 year ago
Diamantis Tziotzios 92f56c073c more css changes 1 year ago
Diamantis Tziotzios 6585fcf391 update lang files to make app name configurable. 1 year ago
Bernaldo Mihasi 5d7e2cb307 add seperator keycodes for schematics field 1 year ago
Konstantinos Triantafyllou 681f73b865 Dataset template editor: On multiplicity changed, reset multiplicity values including table view and placeholder. 1 year ago
Konstantinos Triantafyllou ef0816524f Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 1 year ago
Konstantinos Triantafyllou b6709bac3c Increase debounce time in multi auto complete in order to avoid addition of search value and first option from dropdown in chips'list. 1 year ago
Bernaldo Mihasi 7b12d7b46d temporarily endpoint for appending "rda." in schematic values of dataset profiles 1 year ago
Bernaldo Mihasi 5733796674 update i18n 1 year ago
Diamantis Tziotzios 89922eaecc Merge remote-tracking branch 'origin/semantics' into Development 1 year ago
Bernaldo Mihasi 11a9abae42 version change in base deposit repository 1 year ago
Bernaldo Mihasi 8293535bb0 add zenodo properties in schematics 1 year ago
Bernaldo Mihasi f822e06881 upload new version for dataset template from xml file 1 year ago
Konstantina Galouni c9b4b35e39 h2020.docx: [Bug fix] Updated image of Argos in h2020.docx DMP template | DataManagementPlanManager.java & DatasetManager.java: Added parameter "isDataset" in fillFirstPage() | WordBuilder.java: [Bug fix] Added parameter isDataset in fillFirstPage() and added some checks in description. 1 year ago
Konstantinos Triantafyllou fbaa175436 Finilize from dataset overview will redirect the editor and then trigger Finalize button. 1 year ago
Bernaldo Mihasi 63c866d74f set creator in new/cloned/newVersioned dmp 1 year ago
Bernaldo Mihasi b6b7a2444c add xml attributes in dmp xml export 1 year ago
Bernaldo Mihasi 18a200f099 no message 1 year ago
Bernaldo Mihasi 18ccb3ca0c changes in dmp deposit model 1 year ago
Bernaldo Mihasi a90f21b6aa fix issues in dmp xml export 1 year ago
Bernaldo Mihasi 376bb2ca53 changes in dmp deposit model 1 year ago
Bernaldo Mihasi 969df0357a migrate rda properties in dataset profiles definitions in db to schematics 1 year ago
Bernaldo Mihasi c35bc2efed remove rda property from models 1 year ago
Konstantinos Triantafyllou 8c708f470d Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 1 year ago
Konstantinos Triantafyllou 6ca77c2df2 Ticket 8391: DMP Editor: Add dialog before Discard. Dataset Editor: On Discard reset the form instead of go back in dmp editor. 1 year ago
Konstantina Galouni 13e62fd409 h2020.docx & WordBuilder.java: Updated h2020.docx DMP template and added export of DMP description.
(cherry picked from commit 28c1c9b71d)
1 year ago
Bernaldo Mihasi 519cb260c6 fix issue with users returned as empty array, add researchers in response 1 year ago
Diamantis Tziotzios 34176bcb70 hr lang update 1 year ago
Bernaldo Mihasi 759c80420f Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 1 year ago
Bernaldo Mihasi 87c9730524 puplic api return total count in response 1 year ago
Diamantis Tziotzios 35f9bbcf56 logo change 1 year ago
Diamantis Tziotzios 7af27c73cf Merge branch 'css-config-changes' into Development 1 year ago
Diamantis Tziotzios 9ebefa8369 Merge branch 'public_api_update' into Development 1 year ago
Diamantis Tziotzios 7185b5d117 Merge commit '180e02c829a8fb35056124d5afdbec3835a94b62' 1 year ago
Konstantina Galouni 28c1c9b71d h2020.docx & WordBuilder.java: Updated h2020.docx DMP template and added export of DMP description. 1 year ago
Konstantinos Triantafyllou 180e02c829 Ticket 8389: Fix undo finalazation appears even finalized wasn't successful. Also fix issue where the buttons are remaining disabled when user press No in the dialog of finalization. On undo finalization do a save in order to be sync with the backend. 1 year ago
Konstantinos Triantafyllou 4c7dee3ece Ticket 8390: Remove separator key codes in the default multiple auto complete input and added in invitation-dialog. 1 year ago
Diamantis Tziotzios 806ce4f584 hr lang update 1 year ago
Konstantinos Triantafyllou 3219132e86 Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 1 year ago
Konstantinos Triantafyllou c2aba649af CHange condition of depositRepos in dmp-overview in order to chech also the length of the array. 1 year ago
Bernaldo Mihasi e2505039df cleanup unused code 1 year ago
Bernaldo Mihasi b273ca4ed7 search for schematics fields in prefilling 1 year ago
Bernaldo Mihasi 0c57bba0b4 rda json dmp import/export 1 year ago
Bernaldo Mihasi 9a8fc5e92e schematics implementation, xml import export of dataset profiles 1 year ago
Bernaldo Mihasi e22e348330 cleanup unused code 1 year ago
Diamantis Tziotzios 6c5cb97050 hr lang update 1 year ago
Bernaldo Mihasi ab124e87ea add new filters(grantLike, funderLike, collaboratorsLike) 1 year ago
Diamantis Tziotzios 72daadee7e configurable list of languages 1 year ago
Diamantis Tziotzios 554eb96824 css update 1 year ago
Diamantis Tziotzios 34d63438e0 css changes to add configurability 1 year ago
Konstantinos Triantafyllou 8b34d55706 Fix repositories list update after deposit 1 year ago
Konstantinos Triantafyllou 6924d82c80 Change selected DOI from the first element to the selected one 1 year ago
Konstantinos Triantafyllou 34f8e4f96d Fix after deposit action in dmp overwiew. 1 year ago
Bernaldo Mihasi 8f74c36205 no message 1 year ago
Konstantina Galouni 1d45bddeca #8350 - Added tracking of download Dataset & DMP exports in Matomo.
1. matomo-service.ts: Added method "trackDownload()".
2. drafts.component.ts & recent-edited-activity.component.ts & recent-edited-dataset-activity.component.ts & recent-edited-dmp-activity.component.ts & dataset-wizard.component.ts & dataset-listing-item.component.ts & dataset-overview.component.ts & dmp-editor.component.ts & dmp-listing-item.component.ts & dmp-overview.component.ts: Added calls to this.matomoService.trackDownload() for "datasets/" or "dmps/" with the file type (/docx, /xml, /pdf, /json) and the id.
1 year ago
Konstantina Galouni a1dbd72bce #8337 - Added export button in dataset and dmp editors
1. dataset-profile-editor.component.html: Updated how save button appears (save separated from arrow).
2. dataset-profile-editor.component.scss: Commented paddings from .template_action_btn.
3. dataset-wizard.component.html: Added export button | Updated how save button appears (save separated from arrow).
4. dataset-wizard.component.scss: Added class .dataset-export-btn.
5. dmp-editor.component.html: Added export button.
6. dmp-editor.component.scss: Added class .dmp-export-btn.
7. i18n/: Added in language files properties for disabled export button inside editors (DMP-EDITOR.ACTIONS.DISABLED-EXPORT, DATASET-EDITOR.ACTIONS.DISABLED-EXPORT).
1 year ago
Konstantinos Triantafyllou 455e3c8fe0 Revert condition in deposit button, that deleted by mistake in last commit. 1 year ago
Konstantinos Triantafyllou 13d03e4459 Change deposit in DMPs: Modal changed to dropdown in deposit action and change DOI display 1 year ago
Bernaldo Mihasi 57a400f817 update repository base version 1 year ago
Bernaldo Mihasi 030f1ccf8e add repository logo 1 year ago
Diamantis Tziotzios 95c9d599e1 pom update 1 year ago
Diamantis Tziotzios 26bd59de21 repojar conf 1 year ago
Diamantis Tziotzios 4dccaa93b8 Merge branch 'multipleRepos' into Development 1 year ago
Konstantinos Triantafyllou 3e5dc85e04 Fix visibility dependencies for table view. Add missing question titles if a field is table. 1 year ago
Bernaldo Mihasi 66b2596036 delete files used for deposit in tmp storage 1 year ago
Konstantinos Triantafyllou 2f5f34948e Add all fields in field-value pipe. 1 year ago
Bernaldo Mihasi 749dbefc38 1. return bad request when deposition failed and returned null
2. close modal with repositories after a successful deposition
1 year ago
Bernaldo Mihasi 976d0221ce no message 1 year ago
Bernaldo Mihasi 80fba7c655 Merge branch 'multipleRepos' of https://code-repo.d4science.org/MaDgiK-CITE/argos into multipleRepos 1 year ago
Bernaldo Mihasi fbc274282c fix deposit base dependancy in web 1 year ago
Diamantis Tziotzios ec985bf271 Dockerfile update 1 year ago
Bernaldo Mihasi d0cde3c4c4 cleanup deposit since they are moved in another git repository 1 year ago
Bernaldo Mihasi 39d709f41d no message 1 year ago
Bernaldo Mihasi c6d37806c8 drop column doi from dmp and refactor code(replace single doi with list of dois) 1 year ago
Bernaldo Mihasi 8c95b16164 add temp storage in zenodo repository 1 year ago
Bernaldo Mihasi ad00695d4e fix bug allowing invalid characters in pdf name 1 year ago
Bernaldo Mihasi 572be373e5 don't deposit empty supportingFiles.zip when no files are uploaded in datasets 1 year ago
Konstantina Galouni 1171a38ad1 hr.json: #8296 - Updated Croatian localization file. 1 year ago
George Kalampokis 5f131b9823 Remove thread sleeps when trying to load config files and removed principal from Exception Handling Controller 1 year ago
Diamantis Tziotzios e1a3e9b7bc Dockerfile update 1 year ago
Bernaldo Mihasi b7e69d5fdf repo config using enviroment variables instead of static strings 1 year ago
George Kalampokis 6caef3e890 Remove thread sleeps when trying to load config files and removed principal from Exception Handling Controller 1 year ago
Bernaldo Mihasi 679354f699 deposit datasets' attached files in zip format 1 year ago
Konstantinos Triantafyllou c9c99be603 Merge branch 'table-field' into Development 1 year ago
Konstantinos Triantafyllou a2d07c93c8 Table View: Change columns text from truncate to wrap 1 year ago
Diamantis Tziotzios 75007286fc elasticsearch cert change 1 year ago
Diamantis Tziotzios ccc102a52d add more elastic logs 1 year ago
Bernaldo Mihasi ed79d27cdc when making a new version in dataverse delete previous files 1 year ago
Konstantinos Triantafyllou 9fd963a480 Add table view in preview of datataset profile editor and dataset editor. 1 year ago
Bernaldo Mihasi da211ca756 update dockerfile to include directory with repository jars 1 year ago
Bernaldo Mihasi 7a0e1c89f2 when finalizing a dmp and its access rights are open, make it publicly available in Argos 1 year ago
Diamantis Tziotzios 93320f7c94 Merge branch 'Development' 1 year ago
Bernaldo Mihasi 573aab059b remove redundant parameter in deposit interface 1 year ago
Bernaldo Mihasi 5e2639848b dmps are deposited in dataverse as datasets under a parent predefined dataverse collenction
when a new dmp version is created and deposited, the corresponding dataset in dataverse/collection in zenodo create a new version too
deposit dmps as published not drafts
1 year ago
George Kalampokis 0888b7cd74 Enable health and metrics built-in endpoints 1 year ago
Bernaldo Mihasi 6c13d3b68f when new version is deposited, create dataset in existing dataverse 1 year ago
Konstantinos Triantafyllou 925fc3ce4a Merge branch 'Development' into table-field 1 year ago
Bernaldo Mihasi b4490cb0f3 [WIP] implement dataverse repository deposit 1 year ago
Konstantina Galouni 2bbf89e779 HtmlToWorldBuilder.java & WordBuilder.java: Added methods for exporting inputs of a question as table. 1 year ago
Diamantis Tziotzios 876d99ce38 Merge commit '18dcabbac2599d35246f91204efbb25238106565' 2 years ago
Diamantis Tziotzios 0cd20605f0 user guide image update 2 years ago
Bernaldo Mihasi 6b2bc3c1e0 cleanup code, add authorizationUrl and recordUrl in repositories config 2 years ago
Bernaldo Mihasi 59e26dbb8d [WIP] EntityDoi table 2 years ago
Konstantina Galouni 37724380e9 #7276 - Added tableView true/false option in multiplicity 2 years ago
Bernaldo Mihasi 7d624a2daa [WIP] system deposit authentication, using default repo token 2 years ago
Bernaldo Mihasi ab66a5f1da [WIP] implement zenodo repository deposit, add authentication for depositions 2 years ago
Bernaldo Mihasi 18dcabbac2 #7892 - prefill rda field only when a new dataset is created or a new version is made 2 years ago
Bernaldo Mihasi 7dd2030eb3 [WIP] create deposit interface and implement multiple deposit repositories 2 years ago
Diamantis Tziotzios 49ce0efb40 user guide images added 2 years ago
Konstantinos Triantafyllou 9f1c0352ea Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Konstantinos Triantafyllou 4a54915a8e Fix some bugs in dataset editor while navigating with buttons and scroll in the table of contents 2 years ago
Konstantina Galouni 4dd338d08e #8149 - [Bug fix] Updated condition to check if current user is owner of DMP/ Dataset (drafts.component.ts & recent-edited-activity.component.ts & recent-edited-dataset-activity.component.ts & recent-edited-dmp-activity.component.ts & dataset-listing-item.component.ts & dmp-clone.component.ts & dmp-listing-item.component.ts). 2 years ago
Bernaldo Mihasi 20f618a5d7 fix request body examples in publicapi 2 years ago
Konstantinos Triantafyllou 3361b6aff6 Redesign steps in dataset editor #7545 2 years ago
Konstantina Galouni dc197a5abc #8143 - form-field.component.html: [Bug fix] Updated check to set disabled attribute or not in the button. 2 years ago
Diamantis Tziotzios b018dd42db fixed default language support 2 years ago
Bernaldo Mihasi 2b692fa579 fix public api paths 2 years ago
Konstantinos Triantafyllou 6720504b7b Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Konstantinos Triantafyllou fd2ec314a0 Add next-previous buttons in dataset editot in order to navigate through chapters 2 years ago
Bernaldo Mihasi ef327a0a57 expose public api 2 years ago
Konstantina Galouni 4cab6ca160 dmp-editor.component.ts: [Bug fix - #8073] Set value of "status" field of formGroup to DmpStatus.Draft, after reset() is called. 2 years ago
Bernaldo Mihasi 5087a37e15 dockerization 2 years ago
Konstantina Galouni 6a4d67de0c faqs.html & faq-content.component.html: #7972 - Updated faqs according to document. 2 years ago
argirok 0d5f6de7c7 update language to Polski 2 years ago
argirok 19d8218dea Added pl.json and update localization files 2 years ago
Konstantina Galouni 49e42e9cba h2020_dataset.docx & WordBuilder.java & DataManagementPlanManager.java & DatasetManager.java: Updated footer of Dataset template to set title of DMP and Dataset. 2 years ago
George Kalampokis 7a71110033 Fix critical issue with open file handle leak on user guide folder
(cherry picked from commit fa723c07ae)
2 years ago
George Kalampokis fa723c07ae Fix critical issue with open file handle leak on user guide folder 2 years ago
Konstantina Galouni a2228a5fb6 #7597, #7893, #7895, #7898: Updated DMP template file (h2020.docx) for export | Added Dataset template file (h2020_dataset.docx) for export | Updated indentation on exported docs.
1. h2020.docx, h2020_dataset.docx: Updated DMP template & Added Dataset template.
2. application.properties, application-devel.properties, application-production.properties, application-staging.properties: Added property for dataset template file path configuration.h2020datasettemplate=documents/h2020_dataset.docx
3. ConfigLoader.java: Added method XWPFDocument getDatasetDocument();
4. DefaultConfigLoader.java: Added fiedls and methods for loading Dataset template (h2020_dataset.docx).
5. DataManagementPlanManager.java, DatasetManager.java, , HtmlToWorldBuilder.java, WordBuilder.java: Updated header/footer/first page in exports for DMPs and Datasets  | Updated indentation in exports.
2 years ago
Konstantina Galouni 9b4c7aeb6f DataManagementPlanManager.java: #7893 - Added description of Datasets on DMP exported word file. 2 years ago
Konstantinos Triantafyllou b21693bff1 Change all buttons width: 101px to min-width: 101px 2 years ago
Konstantinos Triantafyllou 989f07787c Fix autocomplete in multiplicity items by using parent field id. 2 years ago
Konstantina Galouni e329ef763a form-section.component.html: Updated classes of comment field parent and wrapperClasses so that it looks full width in all views. 2 years ago
Konstantinos Triantafyllou 304a6cfdb3 Backend: Fix a bug with compareTo of a field throwing an error because ordinal is not exists. FrontEnd: Initialize visibility rules for multiple fields coming from service according to their parents. 2 years ago
Konstantina Galouni 18e98938d5 WordBuilder.java: #7869 - In exported file fix hidden question title and a. /b. /c for empty answers.
a. fix hidden question title when more than 1 multiplicity answers,
b. fix hidden question title when  no value in the last multiplicity answer,
c. Do not show a. / b. / c.... for empty multiplicity answers,
d. Do not show a. / b. / c.... when more than 1 multiplicity answers, but only one with value.
2 years ago
argirok b1788c2dc2 update croatian language file hr.json 2 years ago
Diamantis Tziotzios 2ecce0acb0 elastic conf changes 2 years ago
Bernaldo Mihasi 8b26ff19b6 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 2 years ago
Bernaldo Mihasi 9c4d246ef5 heading changes on export template 2 years ago
Konstantina Galouni 772a041851 WordBuilder.java: #7837 - In exported file add comment filed as ParagraphStyle.HTML instead of ParagraphStyle.COMMENT. 2 years ago
Bernaldo Mihasi 0ac5902bfd 1. export redesign based on new word template
2. orcid researchers in export are clickable
2 years ago
Konstantina Galouni 941cca8103 form-section-inner.component.html & form-section.component.html: Updated comment field to use <rich-text-editor> instead of <input> and <mat-hint>. 2 years ago
Bernaldo Mihasi 73be5d9a98 1. export redesign: multiplicity #ref 7834, multiple select #ref 7836
2. fix bug in license api export
2 years ago
Bernaldo Mihasi 3433f58506 Add ssl support for elasticsearch 2 years ago
George Kalampokis 0235406246 Improve image caption styling 2 years ago
George Kalampokis 7985b13cca Add image caption on Word/Pdf export 2 years ago
George Kalampokis 54c5017609 Add Export attribute on Dataset Profile's Field. By Default is set to true. The attribute determines if the field value will be included in the word/pdf export 2 years ago
George Kalampokis 5cd79a6368 When Exporting DMP to word/pdf sort it's Datasets based on creation date 2 years ago
George Kalampokis ea8407eece Fix critical issue when uploading Dataset Template 2 years ago
Diamantis Tziotzios 91566c9710 Merge branch 'saml2' into Development 2 years ago
Konstantina Galouni 79bc95b099 [Bug fix] DatasetProfileManager.java: In method "createNewVersionDatasetProfile()", do not set label and language from oldDatasetProfile. 2 years ago
Konstantina Galouni d7ee7b8d93 Question titles in dataset template with <textarea> | Bug fix in "Save & Continue" functionality of dataset templates | Added "Update & Continue" functionality in dataset templates | Changed placeholder text in the prefilling search box.
1. dataset-profile-editor-composite-field.component.html: #7792 - use <textarea> instead of <input> for question titles.
2. dataset-profile-editor-field.component.ts: #7790 - Set default value "unchecked" for checkbox.
3. dataset-profile.service.ts: In methods "createForm()" and "newVersion" updated response type from DatasetProfileEditorModel to string (id is returned only) and use httpClient instead of http.
4. dataset-profile-editor.component.html:
   a. [Bug fix] Fix conditions in action buttons (Save/Update/Finalize)
   b. On "Update" action button, added update dropdown options "Update & Continue", "Update & Close" and set default behavior "Update & Continue".
   c. On save dropdown options, used DATASET-PROFILE-EDITOR.ACTIONS instead of DATASET-WIZARD.ACTIONS.
5. dataset-profile-editor.component.ts:
   a. [Bug fix] #7791 - Created method "afterSave()" to be called in "onSubmit()" method when api calls return
   b. Added optional parameter "close: boolean = false" in method "updateAndFinalize".
6. i18n/:
   a. Added DATASET-WIZARD.ACTIONS.SAVE-AND-CONTINUE, DATASET-WIZARD.ACTIONS.SAVE-AND-CLOSE, DATASET-WIZARD.ACTIONS.UPDATE-AND-CONTINUE, DATASET-WIZARD.ACTIONS.UPDATE-AND-CLOSE.
   b. #7750 - Changed placeholder text in the prefilling search box (DATASET-CREATE-WIZARD.PREFIL-STEP.SEARCH).
2 years ago
George Kalampokis e8a87765ee Fix authorization issue with Dataset Templates not showing to their original creators (that are not Admins) 2 years ago
argirok 03f7afede8 update openaire publication API to accept DOI query 2 years ago
George Kalampokis 11b0db21ac Reconfigure Zenodo prefilling query in order to query doi and conceptdoi alongside the title (ref #7802) 2 years ago
George Kalampokis 757b1f70e8 Change default filterType to remote (ref #7799 & #7800) 2 years ago
George Kalampokis 66511d2ed6 Further stability improvement over external urls query 2 years ago
George Kalampokis 0f4b209427 Add {query} field for external urls with configurable queries and make ORCID query more strict (similar to orcid's website) (ref #7798) 2 years ago
George Kalampokis 3aff6ac90e Allow to update Dataset Templates by uploading dataset Template .xml files (ref #7793) 2 years ago
Bernaldo Mihasi ff6d068ddd sign artifact resolve-code + post binding 2 years ago
Diamantis Tziotzios 14c267c97e Merge branch 'Development'
# Conflicts:
#	dmp-backend/web/src/main/resources/config/application-production.properties
2 years ago
George Kalampokis 912a3cc095 Order datasets on DMP listing (ref #7746) 2 years ago
Bernaldo Mihasi 6c36253f09 artifact binding + decryption of assertion 2 years ago
Bernaldo Mihasi 3c3b9ef398 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 2 years ago
Bernaldo Mihasi cfd0707f2a bug fix: license api-fields didnt get prefilled 2 years ago
George Kalampokis 78bceeb8ae Reorganize and Rename (english only) DMP Editor Fields (ref #7700) 2 years ago
George Kalampokis b891907724 Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis afa602bf39 Fix issue with Dataset Editor when trying to save an incomplete or invalid form, the save buttons stay locked (ref #7725) 2 years ago
Konstantina Galouni 579bb58afc #7699: rich-text-editor.component.ts: Clear any formatting on paste and add plain text | Added h1-h6 tags in customClasses | Enable "removeFormat" button (clear formatting added from editor options). 2 years ago
Bernaldo Mihasi 8ac8f9588c #7680: Support SAML Authentication 2 years ago
Konstantina Galouni a5061759b8 #7665: Save and Previous buttons updated on the Dataset Template (Admin).
1. dmp-editor.component.html & dmp-clone.component.html & dataset-wizard.component.html: On next button, moved chevron_right icon to the right side of the text.
2. dataset-profile-editor.component.scss:
   a. Removed margin-top from .dataset-profile-editor.
   b. Updated position and styling of .scroll-on-top.
   c. Added .floating-btn and .progress-min-height.
3. dataset-profile-editor.component.ts:
   a. Set showScrollOnTopButton default value to true and comment intersection stepperNavigationObserver (because title is sticky now and always visible).
   b. In method "onSubmit()" added parameter close:boolean=false, to check if the router will navigate to "/dataset-profiles" or not (button "save and continue" added).
4. dataset-profile-editor.component.html:
   a. Renamed "Back" button to "Close" and use DATASET-WIZARD.ACTIONS.CLOSE.
   b. Moved "Close", "Save"/"Update" and "Finalize" buttons aligned with title on the top right.
   c. Made title with aligned buttons sticky to top with stepper.
   d. Moved buttons "Previous"/"Next" on the down right of viewport (floating buttons).
   e. Moved scroll button and update it.
   f. Updated alignment of main content when there is no sidebar on the left.
5. i18n/: In language files added "DATASET-WIZARD.ACTIONS.CLOSE" and updated "USER-PROFILE.MERGING-EMAILS-DIALOG.TITLE" (#7662).
2 years ago
Konstantina Galouni 943f84384c #7662: Popup message when merging email accounts from the user profile | [Bug fix] Truncate title of dataset and show tooltip in dmp clone popup.
1. user-profile.component.ts: Added PopupNotificationDialogComponent when email for validating account has been sent.
2. login.component.ts: Added @Input() redirect: boolean = true; - if this is false do not redirect to home page.
3. add-account-dialog.component.html: Add parameter redirect="false" in <app-login>.
4. clone-dialog.component.html: [Bug fix] Truncate title of dataset and show tooltip in dmp clone popup.
5. i18n/: In language files added "USER-PROFILE.MERGING-EMAILS-DIALOG.TITLE" and "USER-PROFILE.MERGING-EMAILS-DIALOG.MESSAGE".
2 years ago
George Kalampokis 7c933d9f32 Refactor Zenodo deposit creation. Add model for mapping instead of relying on stringBuilder 2 years ago
George Kalampokis e373baee7e Fix critical issue when importing from xml with researchers 2 years ago
George Kalampokis 2a12f1b5be Change Dataset sorting on DMP overview and editor from last modified to last created 2 years ago
argirok b9f8d2e162 #7602 Contributors: add Croation institution title 2 years ago
George Kalampokis ae7988aa13 Make DMP Editor more safe when saving and make save pop messages more consistent 2 years ago
George Kalampokis a9199ab8f0 Make Dataset Editor more safe when saving and make save pop messages more consistent 2 years ago
George Kalampokis 5faa44c015 On a new Dataset when save is pressed it will reload the editor in order to reflect better the state of the Dataset 2 years ago
George Kalampokis 4b879eb339 On DMP Overview change the color of the finalized Datasets 2 years ago
George Kalampokis ef6e3b8d7c Sort Datasets by Modified date on DMP Overview and DMP Editor 2 years ago
Bernaldo Mihasi 7cfedf24a2 add missing enums to render styles 2 years ago
Bernaldo Mihasi db8f10ac1e fix issue with upload field in xml export 2 years ago
Diamantis Tziotzios 07f499707e pt user guide update 2 years ago
Konstantinos Triantafyllou 0bb98a4009 Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Konstantinos Triantafyllou a58e926c3d Prefilling: Alphabetical order in the returning list. Autocomplete of prefilling: no search with empty value. 2 years ago
George Kalampokis afb0be5b18 Make DMP export to be more consistent with the DMP shown on the front end UI 2 years ago
George Kalampokis c41c89774b Make Dataset Validation checker to no longer be exception depedant 2 years ago
George Kalampokis 3eb27c04f6 Fix critical issue with xml import 2 years ago
George Kalampokis 72507dd1b8 Fix issue with DMP json export if it have been imported from json 2 years ago
argirok 35ea0b5d6c Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
argirok f1746e49ff Add Croatia in contributors 2 years ago
Konstantina Galouni 5ceea10c49 #7638: [Bug fix] dmp-finalize-dialog.component.html: Truncate text and show tooltip with full dataset title. 2 years ago
Konstantina Galouni 650e0ceb06 #7636: [Bug fix] Copy dataset from latest activity or dataset listing: Reverting some changes from commit:b6c28be3b3
1. DatasetListingModel.java: Added  field DatasetProfileOverviewModel profile, getter/setter and set profile in methods "fromDataModel()" and "toDataModel()".
2. RecentActivityModel.java: Added field DatasetProfileOverviewModel profile and getter/setter.
3. RecentDatasetModel.java: Set profile in methods "fromEntity()" and "fromDmpEntity()".
2 years ago
Bernaldo Mihasi 78895a1df1 no message 2 years ago
argirok 1f71681fa2 add link to RDA specifications - pop up and user guide 2 years ago
argirok 62b60b93a8 URLConfiguration add FilterType. When filterType is "local" the filtering is applied in argos backend - not throught the API 2 years ago
George Kalampokis 864b4bfec8 Make rda mapping more lax 2 years ago
Bernaldo Mihasi 116f9b99ea fix tags - distribution_format word export 2 years ago
Konstantina Galouni 8734d7c1ba #7528: Fixes in exporting images to document.
WordBuilder.java: Use media types instead of file extension for IMAGE_TYPE_MAP | Calculate image dimensions inside document according to its initial ratio and remove from page size the top, bottom, left, right margins.
2 years ago
Bernaldo Mihasi 835ccaab89 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 2 years ago
Bernaldo Mihasi ba55881830 image export: pixels to points 2 years ago
argirok d2ac550478 add croatian language in other language files 2 years ago
argirok 0393951abe add latest changes in the croatian language file 2 years ago
argirok de5d8a9553 add croatian language file 2 years ago
George Kalampokis 3101cf0e42 Optimize image export 2 years ago
George Kalampokis 3c00d47407 Fix critical issue with dataset saving 2 years ago
Bernaldo Mihasi 65b4e58aad attach images in word export 2 years ago
Konstantina Galouni 7f9e12c731 Tiff image type added in file upload types | Language files updated.
1. dataset-profile-editor-upload-field.component.ts: Added image/tiff media type in available types for Upload.
2. en.json: Updated literals for "Upload" file field type and removed literals for "Table" field type, because the field is not ready yet.
3. de.json, es.json, gr.json, pt.json, sk.json, sr.json, tr.json: Added literals for "Upload" file field type.
2 years ago
Konstantina Galouni 9671a827df Added empty folder uploads 2 years ago
Konstantina Galouni 63e27b1d4a Remove .gitkeep file 2 years ago
Konstantina Galouni 5f89c26844 Added empty folder uploads 2 years ago
Konstantina Galouni 9ab9e6abc9 #7528: [NEW] Upload files field type - frontend.
1. dataset-profile-field-view-style.ts: Include "upload" field type.
2. field-data.ts: Export interface UploadFieldData.
3. config.json: Added new property "maxFileSizeInMB":10.
4. configuration.service.ts: Added _maxFileSizeInMB field and getter for it.
5. enum-utils.service.ts: Added cases for upload and table (not ready, to be added) field types.
6. rich-text-editor.module.ts: [Bug fix] Removed import of HttpClientModule (this is imported only once in order to work with interceptor).
7. field-editor-model.ts & dataset-profile-editor.component.ts: Added case and validators for "upload" field type.
8. dataset-profile.module.ts: Imports for upload.
9.dataset-profile-editor-composite-field.component & dataset-profile-editor-field.component: Added button for upload.
10. form-field.component: Added functionality for uploading and downloading files.
11. dataset-description-form.module.ts: Added "FileService" provider and import of "NgxDropzoneModule".
12. en.json: New literals for upload and table (to be added in other language files too).
13. New files for upload field type: file.service.ts, upload-field-data-editor-model.ts, dataset-profile-editor-upload-field.component.html, dataset-profile-editor-upload-field.component.ts, dataset-profile-editor-upload-field.component.scss
2 years ago
Konstantina Galouni 2a9d8b8296 #7528: [NEW] Upload files field type.
1. Datasets.java: In "delete()" method, call also fileManager.markAllFilesOfEntityIdAsDeleted.
2. DatasetManager.java: Added method "deleteOldFilesAndAddNew()" which is called by "createOrUpdate()", to mark as deleted files that are not used any more and save the new ones.
3. DatabaseRepository.java & DatabaseRepositoryImpl.java: Include in DAOs FileUploadDAO.
4. ModelBuilder.java & ViewStyle.java: Incluse "upload" field type.
5. field-data.ts:
	a. In "getOrdinal()" method return Integer instead of int.
	b. In "getValidations()" method added null check.
	c. In methods "fromJsonObject()" and "toMap()" added special if clauses for "upload" field type.
6. application.properties:
   a. Added property "file.storage", to set the folder where the files will be permanently saved.
   b. Changed default spring.servlet.multipart.max-file-size and pring.servlet.multipart.max-request-size to 10 MB.
7. UserInvitationController.java: Deleted a print in System.out.
8. New files for upload field type: FileUploadDao.java, FileUploadDaoImpl.java, FileUpload.java, PostgreSQLEnumType.java (necessary for the enum EntityType), FileController.java, FileManager.java, UploadData.java.
2 years ago
Konstantina Galouni 744160c84a Add in DB table UploadFile 2 years ago
George Kalampokis dc06ba9201 Allow to return DMP with no Datasets for the Dataset Editor 2 years ago
George Kalampokis 4e0402df95 Fix issue with prefilling Mapper and empty array values 2 years ago
George Kalampokis 563711eae4 Fix issue saving tags from template when the field is a textField 2 years ago
George Kalampokis d3a1e85ba9 Fix issue with keeping non Admin users on Dataset Templates 2 years ago
George Kalampokis 56499223cf Fix issue with Grant authentication 2 years ago
George Kalampokis 75fc8a1d13 Update some entities based on the Db configuration 2 years ago
George Kalampokis 608c4f3fc0 Add get Parent values on json Searcher 2 years ago
George Kalampokis 5ea8b9b964 Minor fix for visibility Rules Service 2 years ago
George Kalampokis 1e572b3214 Fix issue with prefilling mapping 2 years ago
Konstantina Galouni 1dfcad7e88 dataset-profile-editor.component.html: #7519 (Additional commit) On "viewOnly" mode - finalized dataset template, change the "Save" button (left) to "Update", make it clickable and work as the "Update" button (top right on the last step) already does. 2 years ago
George Kalampokis f373c9016e Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis ea72f64ed4 Replace DB DOIFunder with a json config file 2 years ago
Konstantina Galouni b68ede8cd7 #7518 & #7519: [Bug fix] in Required indication in Rich Text Area fields & editable general info on dataset template new version & date with time shown in dataset templates.
1. rich-text-editor.component.scss: Css for .editor-wrapper .disabled added.
2. rich-text-editor.component.ts: New "editable" Input() field added, to allow rich text area to be disabled and not editable.
3. dataset-profile-editor.component.html:
   a. In <rich-text-editor-component> set [editable]="form.controls['description'].status !== 'DISABLED'"
   b. #7518 Show required message and css  in rich text area when there is error "required" and description is touched (not dirty)
4. dataset-profile-editor.component.ts: #7519 comment disable of form controls label (title), description and language.
5. dataset-profile-listing.component.html: #7519 Time added in created column of dataset templates.
6. dataset-editor.component.html & form-field.component.html: #7518 Show required message and css  in rich text area when there is error "required" and description is touched (not dirty).
7. clone-dialog.component.html: Replaced <textarea> with <rich-text-editor-component> for description field.
8. clone-dialog.module.ts: Import RichTextEditorModule.
9. clone-dialog.component.ts: #7519 comment disable of form group label (title)
10. styles.scss: Css for class .form-field-subscript-wrapper updated.
2 years ago
George Kalampokis c3aff92cd4 Don't include Funder if it's not in the Doi Funder Table 2 years ago
George Kalampokis 5a3f871c58 Remove various unnecessary info messages 2 years ago
Diamantis Tziotzios b04b35d62b Merge branch 'Development'
# Conflicts:
#	dmp-backend/web/src/main/resources/RDACommonStandards.txt
2 years ago
George Kalampokis 9f88bdae69 Possible fix for twitter login (part 2) 2 years ago
George Kalampokis 8d1c73deba Possible fix for twitter login 2 years ago
George Kalampokis 93aa2d36e5 Fix another issue with login 2 years ago
George Kalampokis 69a94fa236 Make email nullable field 2 years ago
George Kalampokis 94a225cf9f Add Description on Dataset Export 2 years ago
Bernaldo Mihasi 494ee47620 zenodo prefilling customizations 2 years ago
George Kalampokis 3c42ee3531 Improve tags pre-filling mapping 2 years ago
Bernaldo Mihasi 0bd08c2fac fixed tag prefilling 2 years ago
George Kalampokis 817ee9b44d Fixed ParsedTags 2 years ago
George Kalampokis f6cb4a40d2 Generalized (again) dataset prefilling 2 years ago
George Kalampokis d1eab0d019 Fix issue with not showing datasets on all version listing 2 years ago
George Kalampokis 4bdb27fcef Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis ad8239ca5e Improve if statement on Prefilling Mapping 2 years ago
Bernaldo Mihasi 1a43c28496 add more prefilled fields 2 years ago
George Kalampokis b6c28be3b3 Optimize Dashboard's recent activity logic, removed various unused fields from Listing Models and implement toDataModel conversion logic in some models 2 years ago
George Kalampokis 71b1010ea1 Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis d16e130dc6 Optimize general metric counter 2 years ago
George Kalampokis 11ff99fd77 Improve and generalize prefilling logic 2 years ago
argirok 3aa1c1ae59 fix issue with pub api #7326#note-5 the value was a number instaed of search 2 years ago
argirok cc926970ca Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development
 Conflicts:
	dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts
2 years ago
Konstantinos Triantafyllou e4e009f5b1 Fix after prefill datase editor behaviour - 7545 2 years ago
Bernaldo Mihasi da5ba952e1 rda export import tag bug, format preffiling fixed 2 years ago
Bernaldo Mihasi bf77a85acb Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 2 years ago
Bernaldo Mihasi eedcf0dfb0 fix freetext-format bug in prefilling temporarily 2 years ago
George Kalampokis fac6a93c0a Fix minor worldBuilder issue and a minor refactor 2 years ago
George Kalampokis 4740fbe8e0 Refactor visibilityRuleService 2 years ago
Konstantinos Triantafyllou 6cdf560713 Add clear input in rich text editor 2 years ago
Konstantinos Triantafyllou 26e10b1299 Add URL Validator type in validators. Free Text can have URL validator. 2 years ago
Bernaldo Mihasi 80e5e12f29 fix export-import dataset missing rda mappings 2 years ago
Bernaldo Mihasi 815fc05af6 fix missing section titles from word export 2 years ago
Diamantis Tziotzios 14550e0536 visibility rule fix on word builder 2 years ago
Diamantis Tziotzios 2b71cddc39 Fix for word generator not merging multiple visibility rule results 2 years ago
Diamantis Tziotzios e9b0bcf102 dataset description section id fix 2 years ago
argirok 93cb1fd1a7 Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Diamantis Tziotzios df609fd359 #501 bug fix 2 years ago
argirok 938f98100f Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Diamantis Tziotzios 85859ce078 visibiliity service performance improvements 2 years ago
Bernaldo Mihasi 048189952c format prefilling fixes 2 years ago
Konstantina Galouni bd5041e4e3 user-guide.html: Removed explanatory text next to user factsheet link. 2 years ago
George Kalampokis eaa0c67177 Add multiplicity field on Sections 2 years ago
Diamantis Tziotzios 1c318ddff5 dataset templates metric renamed 2 years ago
Bernaldo Mihasi 1967e96702 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 2 years ago
Bernaldo Mihasi 125a97baed keyword-tags exported-imported fixes, prefilling more mapping 2 years ago
Konstantina Galouni 0478484d5e #7390: Admin factsheet and handbook added in user guide page - factsheet for users moved in user guide page from media-kit page.
1. media-kit.html: Deleted factsheet (moved it to user-guide.html).
2. user-guide.html: Added Admin sections with factsheet and handbook and factsheet for users.
3. assets/media-kit: Argos-Admin-Handbook_14_01_2022.pdf (handbook) & OpenAIRE_ARGOS_Administrators.pdf (factsheet) files added.
2 years ago
George Kalampokis 229555f42c Fix critical issue with prefilling mapping 2 years ago
George Kalampokis 70d37cead1 Fix wrong metrics count for Dataset Template 2 years ago
argirok 90b49194ac Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
George Kalampokis 01d32427c3 Add additional checks when generating world documents 2 years ago
George Kalampokis f95a704787 Make remote fetcher's value normalization more type safe 2 years ago
argirok a3c4b3c143 Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development
 Conflicts:
	dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcherUtils.java
2 years ago
argirok 858fa3ee71 #7326 - static APIs
1. Rename of "Registries" to "Metadata"
2. add apis for taxonomy, licenses, publications
3. change data repositories: from querying all registered to all of type data repository
4. add separate APIs for journals and pub repositories
2 years ago
George Kalampokis 8f56b1874b Add extra prefilling mapping fields and add better support for prefilling tags 2 years ago
George Kalampokis ce386ac047 Refactor Remote Fetcher's json parser 2 years ago
Bernaldo Mihasi 61de8c4df0 dmp import fixes 2 years ago
Konstantinos Triantafyllou 99cecbc4fb Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Konstantinos Triantafyllou 6460d4087a Change gitlab links to gitea 2 years ago
George Kalampokis 64ec74363b Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis 5a70ce7602 Fix issue of not keeping dataset template users after version update 2 years ago
Bernaldo Mihasi 641088e289 Remove local configs, commited by mistake 2 years ago
DESKTOP-4ES9U2E\aldom dc1f59d8b5 Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development 2 years ago
DESKTOP-4ES9U2E\aldom 9d5d685ad6 ethical_issues added to DatasetRDAMapper, minor fixes to dmp docx export 2 years ago
George Kalampokis 91f98a8759 Rename sample tag 2 years ago
George Kalampokis db01f2d119 Add fixedMappings for prefilling 2 years ago
George Kalampokis 1d68b2a379 Minor improvement for dataset prefilling 2 years ago
Konstantinos Triantafyllou e1a4a64d81 Add hint text for prefilling. Change Empty to Manually 2 years ago
DESKTOP-4ES9U2E\aldom 16c124cc3d Merge branch 'Development' of https://code-repo.d4science.org/MaDgiK-CITE/argos into Development
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DatasetIdRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DatasetRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DistributionRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/HostRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/KeywordRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/LicenseRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/SecurityAndPrivacyRDAMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/TechnicalResourceRDAMapper.java
2 years ago
DESKTOP-4ES9U2E\aldom e675ad7c9d madmp changes 2 years ago
Konstantinos Triantafyllou 7962c6a587 Merge remote-tracking branch 'origin/Development' into Development 2 years ago
Konstantinos Triantafyllou c8b388b546 1. Change configuration of Zenodo to production.
2. Add default multiplicity placeholder and remove tooltip
3. Disable reordering of fields if template is finalized.
4. Create Dataset Wizard: Add prefilling functionality
2 years ago
Kristian Ntavidi 4c2e17e987 defect #7325 fix
*Fix on enterkey pressed  form submission issue in dmp editor
2 years ago
George Kalampokis 814a9b2fee Fix bad RDA Common Standard name and minor RDA mapper improvement 2 years ago
George Kalampokis 209b180158 Add missing file 2 years ago
George Kalampokis 22d3d131cc Even more improvements to RDA mapping (partial contribution by M.Aldo) and fixed issue with RDA Additional Options 2 years ago
George Kalampokis eb7d0d04fc Even more improvements to RDA mapping (partial contribution by M.Aldo) 2 years ago
George Kalampokis cff9af75c6 Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis 316d0903c8 Improve RDA mapping (contributed by M.Aldo) 2 years ago
Konstantinos Triantafyllou feecac994d Merge remote-tracking branch 'origin/Development' into Development 2 years ago
Konstantinos Triantafyllou ade9b42d12 Add a placeholder field in multiplicity. (BackEnd)
Add a placeholder input in editor for multiplicity add new field button.
2 years ago
George Kalampokis 42c5dbb3b2 Make distribiution to parse as list 2 years ago
George Kalampokis 6964aa1d47 Fix minor typo 2 years ago
George Kalampokis ba8bae1a88 Update some maven dependencies 2 years ago
George Kalampokis a9e7ef1798 Rename prefilling get endpoint to generate 2 years ago
George Kalampokis 728ea9a24f Add prefilling backend endpoints 2 years ago
Konstantinos Triantafyllou 4425a0bb5d Merge branch 'Development' of code-repo.d4science.org:MaDgiK-CITE/argos into Development 2 years ago
Konstantinos Triantafyllou 7b00d14a70 Rename Discard button to Back in Dataset Template Editor (Admin). #7262 2 years ago
George Kalampokis 78688420d2 Fix minor issue with elastic date parsing 2 years ago
Diamantis Tziotzios 7a8375b988 Merge commit '2cb985c23c4ceda99efc78bcc8e77b3eceeb0bcf'
# Conflicts:
#	dmp-backend/elastic/src/main/java/eu/eudat/elastic/criteria/DatasetCriteria.java
#	dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Dataset.java
#	dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Dmp.java
#	dmp-backend/elastic/src/main/java/eu/eudat/elastic/repository/DatasetRepository.java
#	dmp-backend/elastic/src/main/java/eu/eudat/elastic/repository/DmpRepository.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/mapper/elastic/criteria/DmpCriteriaMapper.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java
#	dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanListingModel.java
2 years ago
George Kalampokis 17b72cde60 Fix issue with time parsing 2 years ago
George Kalampokis 0a39e64f9a Merge remote-tracking branch 'origin/Development' into Development 2 years ago
George Kalampokis 33784f3ee2 Add missing null check up 2 years ago
Diamantis Tziotzios 2cb985c23c bug fix 2 years ago
Diamantis Tziotzios 197de17aa5 no message 2 years ago
George Kalampokis de4c430d91 Fix issue with related datasets on dashboard 2 years ago
George Kalampokis b2825c8369 Fix issue with parsing some custom auto complete sources 2 years ago
Konstantina Galouni b7d622e330 #7225: In dataset template, rename "users" to "editors" and add hint | #7226: In dataset templates, default descending sorting by "created".
1.  dataset-profile-listing.component.html: #7226: In <mat-table> added matSortActive="created" matSortDirection="desc".
2. dataset-profile-editor.component.html: #7225: Added hint in section 1.4 to make prominent when the new editors will receive an informative email.
3. assets/i18n/: #7225: In every language file, renamed "users" to "editors" (DATASET-TEMPLATE-USERS, DATASET-TEMPLATE-REMOVE-USER, DATASET-TEMPLATE-NO-USERS-YET, DATASET-TEMPLATE-VALIDATE-AND-ADD-USER) and added DATASET-TEMPLATE-USERS-HINT.
2 years ago
George Kalampokis e165259c81 Fix and improve remote fetcher caching 2 years ago
George Kalampokis 6ce7fec059 Fix critical issue with multiAutoComplete on autocomplete field types 2 years ago
George Kalampokis 19aa2bd411 Fix critical issue with public datasets 2 years ago
George Kalampokis aed23a655b When exporting DMP to xml or json get only the active/finalized datasets and not the deleted ones 2 years ago
George Kalampokis 8524bce2e0 Add support for the exported date format on wordBuilder 2 years ago
George Kalampokis fc71e95cf3 Make dataset queries to return distinct results (avoid duplicate Id issues) 2 years ago
George Kalampokis e546362f58 Fix issue with elasticsearch inconsistencies 2 years ago
George Kalampokis e8d71a8f66 Add additional null check 2 years ago
George Kalampokis 53e298f66a Fix issue with Dataset copy not working on the dataset listing 2 years ago
George Kalampokis 9dc4d52f91 Fix issue with Dataset copy status 2 years ago
Konstantina Galouni bb0c398120 #7183: In DMP invitation, return authors whose name/ email contains the query string given by user (case insensitive).
1. InvitationsManager.java:  Added method "getUsersWithCriteria()" to filter results according to "userInfoRequestItem.getCriteria().getLike()".
2. UserInvitationController.java: In method "getUsers()" added parameter "@RequestBody UserInfoRequestItem userInfoRequestItem" and call new method "invitationsManager.getUsersWithCriteria()" (instead of getUsers()).
2 years ago
Konstantina Galouni 52c7796e8e #7183: Do not query for authors (DMP invitation) until 3 letters have been typed.
1. multiple-auto-complete.component.ts:
   a. Added @Input field minLength (default 0)
   b. In method "_onInputFocus()" filter results, only if query >= minLength.
2. dmp-invitation-dialog.component.html: In <app-multiple-auto-complete>, added property [minLength]="3" (invite users to a DMP).
2 years ago
George Kalampokis c0599d5fed Fix issue of reloading externalUrls 2 years ago
George Kalampokis 38cd336bc9 Add transactional to makeFinalize on DMP and remove jackson parsing when depositing to zenodo 2 years ago
George Kalampokis 4eb15da95a Trim out hours from date picker export on xml and json(ref #7185) 2 years ago
George Kalampokis 4da99d6d83 Trim out hours from date picker export (ref #7185) 2 years ago
George Kalampokis cecc59eba6 Fix issue with file imports (ref #7184) 2 years ago
Konstantina Galouni 7a7f12b83a Fixed #7182: Required field names appearing in the warning modal.
dataset-wizard.component.ts & dmp-editor.component.ts & form-validation-errors-dialog.component.ts:
a. For 'mat-select', use placeholder instead of aria-label.
b. [Bug fix] For 'app-multiple-auto-complete' dig into 2 more levels (formControl.nativeElement.firstChild.firstChild.firstChild.children) --> reason: commit de99784b5e: moved <input> inside <mat-chip-list>.
2 years ago
George Kalampokis 7820235258 Improve html type field exports 3 years ago
Diamantis Tziotzios adeca327a2 ES lang update 3 years ago
Diamantis Tziotzios 1ec46b6840 es lang update 3 years ago
George Kalampokis 54b142000c Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 1a373bc6f8 Add email notification when a user is added to a Dataset Template (ref #7148) 3 years ago
Konstantina Galouni 71b8742b0f LicenseManager.java & LocalFetchManager.java & TagController.java: #7135: No case sensitivilty for licenses, managers and tags. 3 years ago
Konstantina Galouni de99784b5e In multiple and single autocomplete do not show "no results found" when user is typing | in multiple auto complete added parameter to check if "no results found" will be displayed | in multiple auto complete show full width for input & wrap title into multiple lines.
1. multiple-auto-complete.component.html:
   a. #7137: show full width for input ([matAutocompleteConnectedTo]="origin") | wrap title into multiple lines (added classes "title-subtitle-fn", "subtitle-fn", "subtitle-fn-inner" and updated classes "title-fn", "title-fn-inner").
   b. single-auto-complete.component.html: #7136: Show "No results found" when user is not typing and there are no results.
   c. added check to show this label according to "showNoResultsLabel" input parameter.
2. multiple-auto-complete.component.ts & single-auto-complete.component.ts:
   a. Added field "queryValue", input "showNoResultsLabel".
   b. increase "requestDelay" from 400 to 600ms.
3. multiple-auto-complete.component.scss: wrap title into multiple lines (added classes "title-subtitle-fn", "subtitle-fn", "subtitle-fn-inner" and updated classes "title-fn", "title-fn-inner").
4. dmp-invitation-dialog.component.html: In <app-multiple-auto-complete> added parameter [showNoResultsLabel]="false".
3 years ago
George Kalampokis a7badfd9d5 Add nexus prometheus metrics 3 years ago
George Kalampokis 58ecadd79b Fix issue with project creation 3 years ago
George Kalampokis 8899e1ba65 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis db4d1006c6 Fix various issues with word/PDF export 3 years ago
Konstantina Galouni ca5883724a In Dataset Template selection cut description when templates are displayed in list and show description (instead of DMP-EDITOR.DATASET-DESCRIPTION.INTRO) in template preview.
1. multiple-auto-complete.component.html: Added class "title-fn-inner" to cut the displayed description of dataset templates.
2. multiple-auto-complete.component.scss: Css for class "title-fn" updated and for class "title-fn-inner" added to cut the displayed description of dataset templates.
3. available-profiles.component.html: Added class "list-option-inner" to cut the displayed description of dataset templates.
4. available-profiles.component.scss: Css for class "list-option" updated and for class "list-option-inner" added to cut the displayed description of dataset templates.
5. dataset-preview-dialog.component.html: Added [datasetDescription]="data?.template?.description" in <app-dataset-description>
6. dataset-description.component.ts: Added in class, field "datasetDescription".
7. dataset-description.component.html: Show template datasetDescription (as html) instead of DMP-EDITOR.DATASET-DESCRIPTION.INTRO.
3 years ago
George Kalampokis 39795f177f Fix critical issue with file exports on chromium based web browsers 3 years ago
Kristian Ntavidi e46de79ec2 #7133 Multiplicity visibility rule fix
* Inherit visibility value from clone reference
3 years ago
Konstantina Galouni 7fefdd6aad Added rich text area field type for response in dataset > chapter > section > questions.
1. RichTextAreaData.java: [NEW] file to extend FieldData.
2. ModelBuilder.java: Added case for richTextarea type.
3. ExportXmlBuilderDatasetProfile.java: Added case for RICH_TEXT_AREA.
4. ViewStyle.java: Define RICH_TEXT_AREA("richTextarea").
3 years ago
Konstantina Galouni 193e7410a8 Added rich text area field type for response in dataset > chapter > section > questions.
1. dataset-profile.module.ts: Added in declarations "DatasetProfileEditorRichTextAreaFieldComponent".
2. dataset-profile-editor-composite-field.component.html: Added RichTextArea as input field type for response to a question.
3. dataset-profile-editor-composite-field.component.ts: In method "addNewInput()" added case for RichTextArea.
4. dataset-profile-field-view-style.ts & view-style-enum.ts: Added RichTextArea.
5. field-data.ts: Added interface RichTextAreaFieldData.
6. enum-utils.service.ts: In methods "toDatasetProfileFieldViewStyleString()" and "toDatasetProfileViewTypeString()" added cases for RichTextArea
7. field-editor-model.ts: Added richTextarea.
8. component-profile-editor-default-value.component.html: Added <mat-form-field> for RichTextArea (how rich text area is initialized when this type is selected as response).
9. dataset-profile-editor-field.component.html: Added <mat-option> for RichTextArea (to select it) and <app-dataset-profile-editor-rich-text-area-field-component> (to show it).
10. dataset-profile-editor-field.component.ts: Added RichTextArea case everywhere.
11. dataset-wizard.component.ts & dmp-editor.component.ts: In method "_getPlaceHolder()" added case for richTextarea.
12. dataset-description-form.module.ts: Imported RichTextEditorModule.
13. form-field.component.html: Added RichTextArea case with <rich-text-editor-component>.
14. assets/i18n/: Added DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-RICH-TEXT-AREA-TITLE, DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-RICH-TEXT-AREA-PLACEHOLDER and DMP-EDITOR.TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RICH-TEXT-AREA.
15. field-data/rich-text-area-field-data-editor-model.ts & field-type/rich-textarea/: [NEW] Files for Rich Text Area field type.
3 years ago
Konstantina Galouni 03009edaa3 Use <rich-text-editor-component> when html editor is needed - replace in dataset template descriprion, section & question descriptions.
1. dataset-profile-editor-section.component.html & dataset-profile-editor.component.html & dataset-profile-editor-composite-field.component.html: Replace <angular-editor> with <rich-text-editor-component> (custom common component when rich text editor is set).
2. dataset-profile-editor-section.component.ts & dataset-profile-editor.component.ts & dataset-profile-editor-composite-field.component.ts: Remove AngularEditorConfig (this is set in RichTextEditorComponent).
3. dataset-profile.module.ts: Instead of AngularEditorModule, import RichTextEditorModule (common component where rich text editor is set).
4. styles.scss: Moved css for angular editor to dedicated css file (src/app/library/rich-text-editor/rich-text-editor.component.scss) and keep here only "form-field-subscript-wrapper" class.
3 years ago
Konstantina Galouni 7bdfcb70af Created common component for rich text editor configuration & added rich text for dmp and dataset description.
1. library/rich-text-editor: [NEW] Common component which configures a rich text editor.
2. dataset-editor.component.html & main-info.component.html: Use <rich-text-editor-component> to allow rich text in dataset and dmp description.
3. dataset-overview.component.html & dmp-overview.component.html: Show dataset and dmp description as innerHTML.
4. dataset.module.ts & dmp.module.ts: Imported RichTextEditorModule.
3 years ago
George Kalampokis 6ff9ea2d05 When exporting to word/PDF HTML styled text, make <br> tag to be parsed once 3 years ago
George Kalampokis 0010ad846a When exporting to word/PDF HTML styled text, it will be preperly indented and it can read the change line character 3 years ago
George Kalampokis 5a66754cbd Make DMP language Mandatory and set default language to English 3 years ago
George Kalampokis fd26e2a742 Fix issue with DMP index not updating after a new user is invited 3 years ago
George Kalampokis 900a377d5f Fix critical issue with RDA Comoon Standard text load 3 years ago
George Kalampokis 93baa4a281 Add support for more html tags on the Document/PDF exporter 3 years ago
George Kalampokis 2c29469590 Allow to configure the path of the email templates (ref #7122) 3 years ago
Kristian Ntavidi ae0618d5be Fix multiplicty bug on Admin Template Editor. 3 years ago
George Kalampokis 8e2fea2ea0 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis e66362ec38 Add prometheus metric for the number of grants used based on DMP status (ref #6462) 3 years ago
George Kalampokis 35c4ec821e Add a special query logic with group by and count 3 years ago
Konstantinos Triantafyllou 81a5964a55 Remove google client id, commited by mistake 3 years ago
Konstantinos Triantafyllou 7a3f3f2fd5 Add reordering for inputs in a dataset template 3 years ago
Konstantina Galouni eeb5479a98 form-composite-title.component.html: [Bug fix] Show "view more/less" functionality only if there is extendedDescription. 3 years ago
Diamantis Tziotzios c3f28936af Dockerfile update 3 years ago
Diamantis Tziotzios 887789d9e5 Dockerfiile update 3 years ago
George Kalampokis e8366aa61a Fix critical issue with dataset pagination 3 years ago
George Kalampokis 942782fe3c Use metrics predifined names instead of plain Strings 3 years ago
George Kalampokis d0d918682b Refactor remote fetcher and made it independent of sun libraries 3 years ago
George Kalampokis 65644c3a35 Add extra sanity checks 3 years ago
George Kalampokis 045dd51014 Prevent the selection of an already selected dataset Templates 3 years ago
George Kalampokis 32e299fc45 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
Konstantina Galouni f9bf688085 dataset-wizard.component.html: Added in dropdown list "Save & Continue" option (same as Save). | assets/i18n/: Added DATASET-WIZARD.ACTIONS.SAVE-AND-CONTINUE in language files. 3 years ago
George Kalampokis a4fef8e462 Refactor PDF conversion 3 years ago
Konstantina Galouni 198061aeaa Description boxes in admin forms replaced with rich text editor <angular-editor>.
1. dataset-profile-editor-composite-field.component.ts & dataset-profile-editor-section.component.ts & dataset-profile-editor.component.ts: Initialize AngularEditorConfig.
2. dataset-profile-editor-composite-field.component.html & dataset-profile-editor-section.component.html & dataset-profile-editor.component.html: Use <angular-editor> in description.
3. multiple-auto-complete.component.html & dataset-profile-listing.component.html & form-section.component.html: Show description as html.
4. dataset-profile.module.ts: Imported HttpClientModule, AngularEditorModule (needed for <angular-editor>).
5. available-profiles.component.html: Show description as html, under the Dataset Template title, not as tooltip (matTooltip does not receive html).
6. available-profiles.component.ts: Added styleUrls: ['available-profiles.component.scss'].
7. available-profiles.component.scss: [NEW] Added css for class "list-option" to cut description if too long.
8. form-composite-title.component.html: Show description and extendedDescription as html | Add view more/less functionality to show/hide extendedDescription.
9. form-composite-title.component.ts: Added "public showExtendedDescription: boolean = false;" field.
10. form-composite-title.component.scss: Added css for "more" class, to make "view more/less" seem like link.
11. assets/i18n/: In language files added DATASET-EDITOR.QUESTION.EXTENDED-DESCRIPTION.VIEW-MORE (-LESS).
12. assets/styles.css: Added css for <angular-editor>, to be similar to the other text areas and forms.
3 years ago
George Kalampokis 1a821179db Even more Fixes over dashboard's sorting 3 years ago
George Kalampokis 6de12fd0e8 Fix issue with RDA Common Standards 3 years ago
George Kalampokis 29919f981a Fix issue with recent activity sorting 3 years ago
George Kalampokis 7fe84d7de5 Eliminate Duplicate user when making a new version 3 years ago
George Kalampokis a3af8ce3a5 Merge branch 'spring-update' into Development
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java
#	dmp-backend/web/src/main/java/eu/eudat/controllers/Login.java
#	dmp-backend/web/src/main/java/eu/eudat/controllers/UserGuideController.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/MetricsManager.java
3 years ago
George Kalampokis 0e97e6c0a8 Fix issues with external sources 3 years ago
George Kalampokis 1d48ee81b9 Add additional null check for Elastic's Dmp Repository 3 years ago
George Kalampokis 9919886c26 Fix issues with dataset sorting on Dashboard with Elasticsearch 3 years ago
George Kalampokis 77d50773b8 Merge branch 'improved_queries' into Development
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java
3 years ago
George Kalampokis 0506f2d3a3 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 524cededb6 Fix issue when exporting to docx/pdf 3 years ago
Kristian Ntavidi 74ec2126f0 Visibility Rules fix
* Reduce sourceValue visibility value based on logic.
3 years ago
George Kalampokis cb1d7b5340 Replace altChunk html to docx with direct parsing (manual) 3 years ago
George Kalampokis ef5e6a92e0 Fix critical issue with Dataset Template xml import 3 years ago
George Kalampokis 70538850a2 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 407961e137 Fix critical issue with DMP queries without elastic 3 years ago
Kristian Ntavidi 907ad14269 #7028 Text area fields minRows defaults to 3 3 years ago
George Kalampokis 3ec942cfa7 Add support for Html text when exporting to docx (alpha) 3 years ago
George Kalampokis 54c862ecbb Minor metrics refactor 3 years ago
George Kalampokis b66bde871a Fix issue of new DMPs not showing on the user's listing with elasticsearch active (#7010) 3 years ago
George Kalampokis 67b10528e3 Fix db creation scripts for linux 3 years ago
George Kalampokis 0886424b29 Fix db creation scripts for linux 3 years ago
George Kalampokis 91729bab6d Optimize queries 3 years ago
George Kalampokis defac6afcc Fix issue with date formats on RDA import 3 years ago
George Kalampokis fc7c39081a Improve configuration loader 3 years ago
George Kalampokis 99e4d231c2 Possible patch some leaks 3 years ago
George Kalampokis 06364873ca Fix issue with unordered multiplicity fields 3 years ago
Kristian Ntavidi faeb7e0d62 improvement on computing ordinal on mutliplicity fields 3 years ago
Diamantis Tziotzios 9cac208546 upgrade to Angular 12 3 years ago
Kristian Ntavidi d229189783 Visibility rule service refactor.
* Take into account other dependencies
* OR and AND logic support
3 years ago
Kristian Ntavidi b40e30ee60 Fix issue with visibility rules on multiplicity fields.
* Append new visibility rules on creation of multiplicity item
* Compute visibility rules for multiplicityItems on loading data (Researchers page)
3 years ago
Kristian Ntavidi ba865c9708 Dataset Editor (Researchers Page). Incrementing ordinals on multiplicity items. 3 years ago
George Kalampokis 1ae2788453 Fix various issues with spring update 3 years ago
Kristian Ntavidi 52c26cd864 Admin Dataset editor guard fix. 3 years ago
George Kalampokis a805e823e5 Merge branch 'spring-update' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into spring-update
# Conflicts:
#	dmp-backend/web/src/main/resources/config/application.properties
3 years ago
George Kalampokis 0257ff713b Remove the actuator from the prometheus path 3 years ago
George Kalampokis 6f92409f1e Update Spring boot framework to version 2.5.2 3 years ago
Kristian Ntavidi 0780c629c9 about how it works text updates 3 years ago
George Kalampokis 93ba59ef5a Fixed word parsing issue with datasetIdentifier and validation fields 3 years ago
George Kalampokis bfbc271b56 Fix elastic dataset consistency (impacts memory) 3 years ago
George Kalampokis c964af25b5 Fix critical issue with public dataset query 3 years ago
Diamantis Tziotzios 6bc5aaed25 pt user guide update 3 years ago
George Kalampokis 5de811a76d Vastly improve and optimize DMP and Dataset Queries (and with elastic) 3 years ago
George Kalampokis ce8b49deb0 Fix issue with DMP disappearing when editing Datasets 3 years ago
George Kalampokis 6ccdeddf65 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 4e87bd270e Improve error handling when user has no zenodo access token 3 years ago
Diamantis Tziotzios e185e94684 pt userguide update 3 years ago
George Kalampokis 6a2099c2b9 Add user role check up when it's getting dataset profiles for the manager listing 3 years ago
George Kalampokis f01e89799b Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 9da0f4e776 Allow to re insert users on Dataset profile 3 years ago
Kristian Ntavidi a7abe6c2d8 minor fix 3 years ago
Kristian Ntavidi 06961c0254 Deactivate Guard on dataset template editor 3 years ago
Kristian Ntavidi 1be8e8e8f9 Fix side actions on template editor z-index issue 3 years ago
Kristian Ntavidi 501a7175e8 Users on template editor 3 years ago
Kristian Ntavidi d8a2ad281c Animations on admin template editor (partial) 3 years ago
Kristian Ntavidi 59e3af2fa0 Fix adding dataset dropdown on datasets listing
* Get timecreated from backend
* Protect front from crashing when creationTime is not provided
3 years ago
Kristian Ntavidi 4c22799f91 Bug fixes on dataset templates editor Admin (partial)
* Make use of observables instead of setTimeouts
* Remove not nessecary calculations
3 years ago
Kristian Ntavidi 1d397d28cf Add ability to scroll on table of contents (dataset templates admin) 3 years ago
Kristian Ntavidi 008b6321ea Error dialog component on dataset wizard (update)
* On single error case, show it indepentently (not as list item)
3 years ago
Kristian Ntavidi a212f4e5a1 Subtle border on invalid emails inputs (in invitation dialog)
* Mutli auto compolete component extended
3 years ago
George Kalampokis 7ab5c56072 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 596550d3de Extend user token duration to 10 days 3 years ago
Kristian Ntavidi 1b731fdf20 Changes on multi-auto complete component.
* Give precedence on autocomplete option-selected over onblur.
* Invitation dialog on blur commit given email till that time, on emails list.
3 years ago
Kristian Ntavidi 5ddb7df2b4 Finalize dataset from dataset editor.
* Finalize dataset from dataset editor.
* Finalize dataset on dataset overview redirects you to dataset editor
* Grouping save action buttons
3 years ago
George Kalampokis c91059c854 Get latest available dataset profile instead of the version that is selected on the DMP 3 years ago
George Kalampokis 75d9726bca Fix issue with xml export of autocomplete and multiautocomplete fields 3 years ago
George Kalampokis 15af25e292 Fix issue saving array of data from dataset 3 years ago
George Kalampokis 6fd81a9809 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 016acaaa0f When counting organizations for the user count only the active ones 3 years ago
George Kalampokis 4b3468d513 Fix issue when validating dataset for finalization (needs rework) 3 years ago
George Kalampokis 1512d0c424 If BooleanDecision has no value thenm return null when exporting to docx and pdf 3 years ago
Kristian Ntavidi ee0c7df170 Pt translations on dataset-profiles-editor / listing 3 years ago
Kristian Ntavidi c33ffc153b Try translate finalize errors messages on Pt. 3 years ago
Kristian Ntavidi e793f10828 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Kristian Ntavidi cce9df8eb7 Fixes
* Feedback message on error saving dataset.
* Unsubscribe backend calls on dashboard component destroy.
3 years ago
Diamantis Tziotzios ad245dde5d Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Diamantis Tziotzios b8b78f6653 user guide path fix
(cherry picked from commit bd15b1e2c7)
3 years ago
Diamantis Tziotzios 895dbcf098 Revert "user guide path fix"
This reverts commit bd15b1e2c7.
3 years ago
Diamantis Tziotzios bd15b1e2c7 user guide path fix 3 years ago
Kristian Ntavidi 6e21ad127d Language Pt fix 3 years ago
George Kalampokis d603fed61f When new version is made keep all it's contributors 3 years ago
George Kalampokis 1c22ed2321 Add extraProperties for xml export/import and restore pdf export for zenodo deposit 3 years ago
George Kalampokis faabd343a9 Improve error handling
(cherry picked from commit d5cd90814a)
3 years ago
George Kalampokis e5a929f259 Fix issues with xml import and issues with zenodo deposit
(cherry picked from commit efe177f0b1)
3 years ago
George Kalampokis d5cd90814a Improve error handling 3 years ago
George Kalampokis efe177f0b1 Fix issues with xml import and issues with zenodo deposit 3 years ago
George Kalampokis d1fc10854c Fix issue with zenodo depositions
(cherry picked from commit c57e10a033)
3 years ago
George Kalampokis cfff87b7d0 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis c57e10a033 Fix issue with zenodo depositions 3 years ago
Kristian Ntavidi 684d784d1a Routing updates.
* Start new dmp Button navigates you to home.
* Login page redirects you to home page if user is already logged in.
3 years ago
Kristian Ntavidi 3e98297da9 Pt language updates. 3 years ago
George Kalampokis 2537923dc0 Fix various critical issues
(cherry picked from commit 244bfa5c54)
3 years ago
George Kalampokis 244bfa5c54 Fix various critical issues 3 years ago
George Kalampokis c1adbe283a Improvements over MS Word Document export
(cherry picked from commit 4e3b98f1ff)
3 years ago
George Kalampokis 1c365a191e Minor Update
(cherry picked from commit 295750684f)
3 years ago
George Kalampokis 4e3b98f1ff Improvements over MS Word Document export 3 years ago
George Kalampokis 295750684f Minor Update 3 years ago
Kristian Ntavidi 82c5586067 Dataset and dmp overview fix.
* Fix edit issue when multiple users have ownership of the same dmp/dataset.

(cherry picked from commit fd9d35aad3)
3 years ago
Kristian Ntavidi 57d1cf89b4 Dataset overview fix. Actions on unlocked dataset. 3 years ago
George Kalampokis 04f230dff1 Fix critical issue with dataset's copy dropdown
(cherry picked from commit d1e3aae36d)
3 years ago
George Kalampokis d1e3aae36d Fix critical issue with dataset's copy dropdown 3 years ago
George Kalampokis f9814d3302 Update Spring boot framework to version 2.5.2 3 years ago
George Kalampokis 72d88d9db4 Fix listing issues and improve elastic query
(cherry picked from commit dcd7f24cac)
3 years ago
George Kalampokis dcd7f24cac Fix listing issues and improve elastic query 3 years ago
George Kalampokis 143a4c0214 Reduce severity
(cherry picked from commit 03b7699973)
3 years ago
George Kalampokis 03b7699973 Reduce severity 3 years ago
George Kalampokis e7e5ed02b3 Add query db fallback for DMPs
(cherry picked from commit d1df83f689)
3 years ago
George Kalampokis d1df83f689 Add query db fallback for DMPs 3 years ago
George Kalampokis b5fcc5971e Fix various library issues with postgres and elastic
(cherry picked from commit 4a4042d621)
3 years ago
George Kalampokis 4a4042d621 Fix various library issues with postgres and elastic 3 years ago
Diamantis Tziotzios c16c35225f Merge branch 'Development' 3 years ago
Kristian Ntavidi d878562d3d Ui fixes on landpage (static pages) 3 years ago
Kristian Ntavidi e486169ae5 EOSC section added in index page (static page)
**Missing one link
3 years ago
George Kalampokis a48ac5fa0f When exporting external dataset fields, export and it's type 3 years ago
Kristian Ntavidi ef7de5efe3 External Dataset type (newly added field). 3 years ago
Kristian Ntavidi 1a6df44eeb Add deactivate guards in dataset editor and dmp editor. 3 years ago
George Kalampokis 25286603c8 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 11b4d462cf Add type to External Datasets Data 3 years ago
Kristian Ntavidi d90ab00833 DMP Profile listing. Restyle import dialog 3 years ago
Kristian Ntavidi ad0853dc20 DMP profile editor. Basic restyle 3 years ago
Kristian Ntavidi e2f262b385 Popup dialog on locked DMP/Datasets overview / editors 3 years ago
Kristian Ntavidi c9b376f76c Restyle DMP profile listing (Admin Pages) 3 years ago
Kristian Ntavidi 9cc765e7f5 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Kristian Ntavidi 72b18b7770 Remove mat select ellipses. Wrap text below. 3 years ago
George Kalampokis 42a22b4a65 Improve external researcher support 3 years ago
George Kalampokis 885f897adc Fix issue when updating researchers from DMP 3 years ago
George Kalampokis e94944abb1 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 78186fb96d If the invitation is accepted then send the user to the accepted DMP if the user click again the link from the email 3 years ago
Kristian Ntavidi 92b60c7c90 DMP editor. Show popup dialog when dmp is locked. 3 years ago
Kristian Ntavidi 9161dbda56 UI fixes and bug fixes
* Member of dmp cannot see dmp editor anymore. Redirects to overview
* Hide percentage bar in dmp editor when editor is disabled (when finalized or locked)
* Change font sizes on Resource page (static pages)
* Fix issue of indeterministic disabled on DMP editor.
3 years ago
Kristian Ntavidi 22ddc1311f Admin Template Edtor. UI fix: toolbox scroll till the end of the question card. 3 years ago
Kristian Ntavidi 19bb843fe6 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Kristian Ntavidi f4591549c2 Admin Dataset Template Editor and Dataset profile editor UI improvemenets.
[Admin Template Editor]:
* Add question underneath each question and in the table of contents
* "Make conditional question" changed position
* Small restyles in required toggler and question preview component
* Input icons update
* Scrolling on top of question

[Dataset Editor]:
* Show asterisk on required fields

Pt language updates
3 years ago
Diamantis Tziotzios 6c6cc061fc Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Diamantis Tziotzios d3d6c4a6aa prometheus fix 3 years ago
George Kalampokis 1eb9aadaea IGNORE ME 3 years ago
Kristian Ntavidi 54b2661ebd Ui fixes.
* Fix issue on table of contents in dataset editor. Invalid fields that are hidden via visibility rules, are not computed in in the validity of the tocEntry.
3 years ago
George Kalampokis c193dd2c09 Fix numbering issue with word and PDF export 3 years ago
George Kalampokis e615c403d3 Final fix over storing array of data from Datasets 3 years ago
George Kalampokis dcf88479bd Allow to store and retrieve combobox multivalues with commas 3 years ago
Kristian Ntavidi add23dab2f Grant search fix.
* Change the way the single auto complete refreshes.
* Remove some unnecessary code.
3 years ago
Kristian Ntavidi d9826095bc Dmp editor. Fix issue on selecting grant after search. 3 years ago
Kristian Ntavidi bb80cfd300 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development
# Conflicts:
#	dmp-frontend/src/assets/i18n/tr.json
3 years ago
Kristian Ntavidi a3c9df87df Add validate button on Dataset Wizard. Show in red invalid fieldsets in table of contents 3 years ago
Diamantis Tziotzios ef3c2e4e83 lang update 3 years ago
George Kalampokis be311f238b Add visibility rules checkup on dataset finalize checkup 3 years ago
Diamantis Tziotzios f5d266554b Merge commit 'ca91c14114b8994d41fdf2b97fc6d1a4d82ffa4e' 3 years ago
Diamantis Tziotzios 5483847754 culture service workaround 3 years ago
George Kalampokis 8a5f9d3536 Add support for nested sections 3 years ago
Diamantis Tziotzios ca91c14114 pt lang update 3 years ago
Kristian Ntavidi 29ad55b3f8 Invitation fix.
Fixing  issue when user opens invitation without being logged id.
3 years ago
George Kalampokis b76a787972 Hide grants without any active dmp 3 years ago
George Kalampokis 95f8eb15c9 Even more fixes for imports and exports 3 years ago
George Kalampokis b13f36afe8 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 6f658db27f Fix issues with import and export of dataset template 3 years ago
Kristian Ntavidi 9eb1c12afd DMP Overview. Provide user feedback of invalid datasets on finalize. Prevent user from submitting invalid Datasets. 3 years ago
George Kalampokis 1d5befaf6a Add new endpoint in order to validate datasets 3 years ago
George Kalampokis 15c3a6fcb5 Export properly the data for each field type on dataset templates 3 years ago
George Kalampokis af432cf329 Fixed issue with multiplicity fields 3 years ago
Kristian Ntavidi c157ecc4e7 Admin template editor. Fix invalid visibility rules case. 3 years ago
Kristian Ntavidi 9ccae4d2c7 Admin template Editor. Temporary patch. Make value unrequired in visibility rules. 3 years ago
Diamantis Tziotzios ae2168b2d7 bug fix regarding template import 3 years ago
Kristian Ntavidi b825a80e61 DMP Editor patch: Form is not invalid invalid anymore when change from createnew funder to existing 3 years ago
Kristian Ntavidi b82398d97e DMP Editor. Organizations identifier query params patch. 3 years ago
George Kalampokis a155f2cbec Allow to search organizations based on reference 3 years ago
George Kalampokis fe8a0ff109 Fix vaious issues with organizations 3 years ago
Kristian Ntavidi a8f75aafb9 DMP Editor. Prefixing queries on searching existing identifiers. 3 years ago
George Kalampokis 8a7cfab3b8 Fix various issues 3 years ago
George Kalampokis cdae5ae574 Fix minor issues when creating a researcher 3 years ago
Kristian Ntavidi b486a27e48 Unique identifiers(in references) on on researchers, organisations, funders, grants, projects (frontend) ( !! Needs configurationw with backend ). Backend error messages translate to PT. 3 years ago
George Kalampokis a28e26e594 Allow to query using exact reference 3 years ago
George Kalampokis 8f2e0539d5 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis df5281eeaa Allow to manually add reference 3 years ago
Kristian Ntavidi 57910d8271 Sort languages alphabetically 3 years ago
Kristian Ntavidi e9e953aee3 Bug fixes and language updates.
Admin Templates listing table fix. When a filter is applied, gets you to the first page. Total templates number fix .
Admin Template Editor. Enable editing Description in finalized templates.
Dataset wizard. Fix NaN in total progress when finalized. (remove all edit/save actions).
Portuguese language update.
3 years ago
George Kalampokis 501ca9fcc2 Put elastic search index into the configurations 3 years ago
George Kalampokis 77bcb95ad7 Fix issues when cloning dataset templates 3 years ago
George Kalampokis e5264780c3 When finalize DMP properly finalize it's datasets first 3 years ago
Diamantis Tziotzios ede8bbf48e metrics update 3 years ago
Kristian Ntavidi c6b8ad5639 Adrim template editor. Save and discard buttons on the left side. 3 years ago
Kristian Ntavidi 66d9f41081 Admin template editor. Move save/delete/update buttons on top. Add "Back to top" button. 3 years ago
George Kalampokis 961a4df270 Add total Users metric 3 years ago
Kristian Ntavidi e801bbf2e2 User Dataset Editor. Table of contents loads properly on saved template. Table of contents and tempalte description have the same visibilityRules service. 3 years ago
George Kalampokis 12a1f7da12 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 3d9a2b2331 Fix various issues with various template fields 3 years ago
Kristian Ntavidi 198eb838c5 User Dataset Editor. Pages/ Sections/Fieldsets that have all inputs hidden, are hidden as well (Both on template and table of contents). 3 years ago
George Kalampokis 4a1f260849 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis 48730e7937 Fix issue when accessing dataset profile users when there are no users. 3 years ago
Kristian Ntavidi d038f42021 Users listing component. Fix user roles chips 3 years ago
George Kalampokis c27ff1d446 Add missing metrics counters and made the metrics init task scheduled (per Hour) (ref #294) 3 years ago
George Kalampokis 27bf69268e Fix issue when creating new dataset profile 3 years ago
George Kalampokis aca31dc9da Add prometheus integration (ref #294) 3 years ago
Kristian Ntavidi 23d664a48b Admin Template Editor: table styling. 3 years ago
Kristian Ntavidi 167cae9e59 User guide links update. Placeholders in dataset identifier and validation. Confirmation dialog minor changes. 3 years ago
Kristian Ntavidi 20a92bea9d Dataset Editor scrollspy on Guide Steps.Language text updates. 3 years ago
George Kalampokis c57820d6b1 Remove "External References" from docx generation 3 years ago
Kristian Ntavidi a75f140893 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Kristian Ntavidi ab9bb3e8cf DMP Editor: remove modal when navigating to dataset. Minor ui fixes. 3 years ago
George Kalampokis dd88167574 Improve names and styling for dataset template users 3 years ago
Kristian Ntavidi 45227cca10 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Kristian Ntavidi 14c7770ae9 User guide patch. Sorting available profiles in dmp editor. Portuguese on guide tour. 3 years ago
George Kalampokis 4156875bae Refactor and add logic for removing users from Dataset Templates 3 years ago
George Kalampokis bc3c8b44d2 Add option to add or remove users from Dataset Templates 3 years ago
Kristian Ntavidi 037e246262 Admin template editor: reseachers multi auto-complete fix. Discard changes on dataset editor navigates back to dmp editor. 3 years ago
George Kalampokis 959479757a Add The new user role to the user role listing and editor 3 years ago
George Kalampokis 5ff57a6352 Setup the routing permissions for the dataset Profile 3 years ago
George Kalampokis af04e34b6f Add new User Role Dataset Template Editor. 3 years ago
Kristian Ntavidi 49a15d2ccc Merge branch 'WizardDescriptionRefactor' into Development
# Conflicts:
#	dmp-frontend/src/assets/i18n/pt.json
3 years ago
Kristian Ntavidi 560e6100b7 Dataset Profile Editor: when "select" is created it appends as well an empy option. Recent edited activity "LoadMore" fix. Table of contents: selected entry updates. 3 years ago
George Kalampokis c929eb3a2b When uploading to zenodo upload both pdf and the RDA json files 3 years ago
Kristian Ntavidi 6e70071a16 Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 450dbb519f Dataset profile editor. Fix: final preview in step does not affect individual previews in step 2. 3 years ago
George Kalampokis 5b930a6870 Export and Import Dataset Template description and language 3 years ago
Kristian Ntavidi 9cab64b65e Dataset Profile Editor. Patch visibility rules for select multiList, Validator and DatasetIdentifier 3 years ago
Kristian Ntavidi dc39cf9fdd Dataset Profile Editor. CheckBox default value preview patch. 3 years ago
Kristian Ntavidi ee1c09149e Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi b04e2b3482 Dataset profile Editor. Ui fixes. Visibility Rules fix. 3 years ago
Kristian Ntavidi 2df5c6820a Dataset Profile Editor. Drag n drop fix on Import Template. Feedback messages on update/save template. Code cleanups. MultiAutoComplete Preview Fix. 3 years ago
Kristian Ntavidi a3572f92ed Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi cc8c771ae5 Dataset profile editor. Ignore invalid data(if any) in previews. Fix Fieldset card changes height after the updated preview component is rendered . Update error messages.Now they use chapter-section namespace. 3 years ago
Kristian Ntavidi 7ebf61a28c Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 67223bc2f0 Dataset profile editor. Minor Fix not building issue. 3 years ago
Kristian Ntavidi a50040cbef Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi d667d574af Dataset Profile editor. Create section button on page component. Dataset profile listing: Add Download Option. Minor ui fixes. 3 years ago
Kristian Ntavidi b00e7bbcc0 Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi c849ea13fe Dataset Profile Editor. Minor ui fix. 3 years ago
Kristian Ntavidi 94ecf92a09 Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 7dac466f71 Dataset Profile Editor. Remove validate button. Toolbar next to fieldset.Update icons (most of them). Update texts(Quetions, sections and chapters). Add delete option on template listing. Preview Fieldset instead of each field(Enables multiplicity preview). 3 years ago
Kristian Ntavidi 12f9e9ede9 Dataset Profile Editor. Move validators from tempate to models. (Fixing issue of form classified as valid when not all formcontrols are rendered.) 3 years ago
Kristian Ntavidi fdf316a040 Dataset Profile Editor. VIsibility rules. Hide Sections from options. Language update for visibility rules. 3 years ago
Kristian Ntavidi 7ff2516ddc Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 8ba546fef4 Dataset Profile Table of contents drag n drop fix. DIstinct ordinals that are on the same level. 3 years ago
Kristian Ntavidi 8cd467cda8 Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi b6236b7e0d Dataset Profile editor . Scroll timing Fix 3 years ago
Kristian Ntavidi 5e77f78a1c Dataset Profile Editor. Table of contents numbering drag and drop fix. Fix issues in dragging as well. 3 years ago
Kristian Ntavidi 41a1aeaf1f Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 427c04f631 Dataset Profile Editor. Individual preview (needs backend support).
Replace static text with language translation.
Fix scrolling behaviour.
Clean up some code in table of contents.
Patch drag and drop (instant drag) issue.
UI enhancements: validate button and marking on table of contents(Pages when dont have children)
3 years ago
Kristian Ntavidi c8ce77ff81 Dataset Wizard. Fix "Previous" and "Next " steps behaviour. Uncompleted guide steps appear with red when user attempts to save. 3 years ago
Kristian Ntavidi abaf61cf02 DMP Editor. Uncompleted guide steps appear with red color when form is invalid and the user attemps to save. 3 years ago
Kristian Ntavidi 97db10be12 Dataset Wizard. Table Of Contents entries show error state (not visible yet, only implementation). Fix Bug on DMP Editor: "Save & Add" doesn't validate datasets to proceed anymore. 3 years ago
Kristian Ntavidi 6f52f77459 Dataset Wizard bug fix. On save show errors only for the semiform. 3 years ago
Kristian Ntavidi 868de6bf78 Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 19ae882af9 Cookies Consent Lax Fix 3 years ago
Kristian Ntavidi 1389b3dbf5 UI Fixes. Panels in wizard expand all the way up to page level (when selected from table of contents). Hide overflown text in table. 3 years ago
Kristian Ntavidi 72d40b0f33 UI Fix. Expansion Panels expand when the selected element is collapsed. 3 years ago
Kristian Ntavidi 9bdc426af1 Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi f6f5fd15ae Dataset Profile Editor. Ui navigation fix (clip-path instead of translateX) Use backend service to create previewForm. 3 years ago
Kristian Ntavidi ae378899e2 Dataset description and table-of-contents works with tocentries. 3 years ago
Kristian Ntavidi 720fa60f9b Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor 3 years ago
Kristian Ntavidi 4d6e4fb2cd Dataset ProfileEditor Validator fixes. More validators added. Table of contents mark invalid entries. Guided tour fix. Fix ng-deep leaks from user listing. 3 years ago
Kristian Ntavidi 615d30b977 About Page (How it works). Polishing UI. When click red dots navigate to more info tab. Sharpening images. 3 years ago
Kristian Ntavidi 1528b91736 About How it works page Redesign . Basic outline.
(cherry picked from commit e26c700cd3)
3 years ago
Kristian Ntavidi 2924db4409 Show the same numbering in wizard and editor. Sorting by ordinal in wizard description 3 years ago
Kristian Ntavidi 51228df7d5 Dataset Profile Editor. UI fixes. Stepper buttons animations. Alignments. RadioBox, Other, Select have emptyList Vaditator(custom). Numbering fix in table of contents when drag and drop. 3 years ago
Kristian Ntavidi 938e3b9554 Dataset Profile Editor. Ui fixes. Minimizing ng-deep leaks. Sidenav service. Side nav folds when create-edit template. 3 years ago
Kristian Ntavidi efc882016b Dataset profile editor. Validators are added to prevent user from proceeding with empty array of options(radio box and select). Polishing UI. 3 years ago
Kristian Ntavidi 87b79c2049 Dataset profile editor. Minor ui visibility fixes. Table of contents can slide. 3 years ago
Diamantis Tziotzios ca0babc6af added property to dataset external autocomplete criteria 3 years ago
Kristian Ntavidi a4efbb7698 Merge branch 'AdminTemplateRedesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into AdminTemplateRedesign 3 years ago
Kristian Ntavidi 70a99f0d23 Dataset Profile Editor. Error messages before each step 3 years ago
George Kalampokis 535c250bae Fix critical issue when creating comboboxes with the multiple selection untouched
(cherry picked from commit e88f88d97c)
3 years ago
Kristian Ntavidi 081995e243 Dataset Profile editor. Drag and drop navigation table of contents. 3 years ago
Kristian Ntavidi da7f91df96 Dataset Profile Editor. Pipe static text to translation. 3 years ago
Kristian Ntavidi ddd12cbba8 Dataset Profile Editor. Drag and drop with dragula. 3 years ago
Kristian Ntavidi a4db1973d3 Dataset Profile Editor. Fieldsets same level as Section Details. Show all fieldsets in one page collapsed. 3 years ago
George Kalampokis e88f88d97c Fix critical issue when creating comboboxes with the multiple selection untouched 3 years ago
Diamantis Tziotzios 389aa3031c sr lang change 3 years ago
Diamantis Tziotzios 354695f6da sr lang update 3 years ago
Diamantis Tziotzios 3d9c154416 lang update 3 years ago
Kristian Ntavidi 3dde61a379 Dataset Profile Editor. Same level drag n drop on table. UI fixes 3 years ago
Kristian Ntavidi 96ebf7c0d0 Dataset profile editor. Ui fixes. mat-stepper header fix and preview fixes. 3 years ago
Kristian Ntavidi a8074f6239 Dataset profile editor. Minor ui fixes. Languages fixes and visibilities 3 years ago
Kristian Ntavidi dd2db4ce1f Dataset profile editor. Field Preview Fixes. Summary preview supports visibility rules. Minor UI fixes. 3 years ago
Kristian Ntavidi 8579071cf7 Dataset profile editor. Preview step basic implementation. 3 years ago
Kristian Ntavidi 7445ec5042 Dataset profile editor. Dynamic progress bar and confirmation before delete 3 years ago
Kristian Ntavidi 35eb42e631 Redesign dataset profile editor changes. Basic UI outline and functionality. 3 years ago
Diamantis Tziotzios 8a9277f0e6 portuguese language addition
(cherry picked from commit 930ef59936)
3 years ago
Diamantis Tziotzios 930ef59936 portuguese language addition 3 years ago
Diamantis Tziotzios 6470a8e6a6 more dataset profile changes 3 years ago
Kristian Ntavidi 1614945185 More Dataset Profile editor changes 3 years ago
Diamantis Tziotzios 8e93a02019 dataset profile editor redesign - initial commit 3 years ago
Kristian Ntavidi a8bc5d0622 Dataset Template Admin Listing Redesign 3 years ago
Diamantis Tziotzios 3ce5302bac serbian language added 3 years ago
Diamantis Tziotzios 148bba67ce Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
Diamantis Tziotzios 3a27f66dc5 ci changes 3 years ago
George Kalampokis c56b7c59ed Fix issue with images not loading on user-guide for local development builds (plus an optional innerHTML alternative (disabled by default)) 3 years ago
George Kalampokis 0367aa0431 Minor improvements 3 years ago
George Kalampokis cf47898007 Improve support of the User guide Editor for the new User Guide htmls 3 years ago
George Kalampokis 8bc3783847 Minor fixes to the user guide htmls 3 years ago
Diamantis Tziotzios f30392864c ci updates 3 years ago
apapachristou 99f780fa4c removes unnecssary cursor pointer from user email 3 years ago
apapachristou 2ed101888d fix syntax on application-devel.properties 3 years ago
apapachristou d8b7161c73 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
apapachristou 558b506643 Add analytics to pages, οverviews, editors etc. 3 years ago
Diamantis Tziotzios af5ab43c2e db pool connection fix 3 years ago
George Kalampokis 4bbcb3d24e Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 3 years ago
George Kalampokis 3477cf25fd Change sql and sh scripts from CRLF to LF 3 years ago
Diamantis Tziotzios eb153e84bc analytics fix 3 years ago
apapachristou 7257be8629 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
apapachristou 0c60af543a Restyles user guide 3 years ago
Diamantis Tziotzios ef0a40b739 export template updated 3 years ago
apapachristou 3e4a61153f with previous commit 3 years ago
apapachristou f94d4bad2b Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development
# Conflicts:
#	dmp-frontend/src/app/ui/user-guide/user-guide-content/user-guide-content.component.ts
3 years ago
apapachristou fc689342cb Adds table of contents to user guide 3 years ago
Diamantis Tziotzios 6ea5dfff42 added matomo integration 3 years ago
George Kalampokis ca38f0b0a4 Make user guide multilingual 3 years ago
George Kalampokis 3b00b76f19 Add option to make static dataset profile fields with autocomplete to have multiple values 3 years ago
George Kalampokis b5a9aa9ad3 Fix some styling issues with users listing 3 years ago
apapachristou c62cc1068a Restyles admin page "Users" 3 years ago
George Kalampokis c18e3f8e3c Add null check for additionalInfo to UserListingModel fromDataModel 3 years ago
George Kalampokis d4672f1e60 Merge remote-tracking branch 'origin/Development' into Development 3 years ago
George Kalampokis d6970cc49a Add avatarUrl on UserListingModel 3 years ago
apapachristou f87f8e31af Makes login dialog responsive on add new account 3 years ago
apapachristou 142c9ab5ea Adds dots on all steps of datset editor table of content 3 years ago
apapachristou 2f61e47139 On focus out of autocompletes clear value if not selected option (to be reviewed) 3 years ago
apapachristou 06f156c687 Fix bug on dmp editor that prevented request grants on funder change (change on single autocomplete component to be reviewed) 3 years ago
apapachristou f5d5835edb Style fix on tour guide panel 3 years ago
apapachristou b3d820c892 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 3 years ago
apapachristou 208824f55b Adds guided tour on dashboard for new user 3 years ago
apapachristou c796745c73 Adds language 3 years ago
apapachristou 4c94b48b2b Fix style on confirmation dialog button 3 years ago
George Kalampokis fcd24fd907 Add community when depositing to zenodo (ARGOS). 3 years ago
apapachristou 0542c17aae removes unnecessary console.log and comments 3 years ago
George Kalampokis fc72c014a5 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 3 years ago
George Kalampokis 66358acfcf Replace the openDMP Affiliation on Zenodo with either a configurable
affiliation or the related organizations of the DMP
3 years ago
apapachristou 5c8c1a13b2 Fix bug on dmp filters: keep public status selected on reopen filters 3 years ago
apapachristou e3cfd47edb Fix style on filters dialog 3 years ago
apapachristou 4552525e1c On multiple autocomple inputs removes permanent placeholder inside the container, adds overflow 3 years ago
apapachristou 0159baf8ed Fix style on dialog import dmp from file 3 years ago
apapachristou 52317c10f9 Fix style of buttons on finalize dialogs 3 years ago
George Kalampokis 25d408c113 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 3 years ago
apapachristou 644d616ef8 Add notification messages on click save of user profile 3 years ago
George Kalampokis 54e0ac6ad4 Fix minor issue with DatePipe Greek culture 3 years ago
apapachristou af849b6c36 Style fixes on user profile 3 years ago
apapachristou 8e074c4ca0 Show more actions on cards of listings (max 4 actions) 3 years ago
apapachristou 36ac02e9f9 Change texts on editors 3 years ago
George Kalampokis 1e0b828a48 Prevent to check deleted Datasets when checking which Dataset Templates are in use 3 years ago
George Kalampokis a3d662aed1 Fix minor spelling mistake 4 years ago
George Kalampokis 510142763e Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis cbbfec2ccc Updated RDA Mapper's Cardinality check 4 years ago
apapachristou b2ea14787c Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
apapachristou 77b9a84105 Fix bug: discard button should disappear after save on dataset editor 4 years ago
Diamantis Tziotzios 4a82e86769 fixes 4 years ago
apapachristou 50fc4612b7 Fix bug on save dataset profile definition 4 years ago
George Kalampokis 0ad797d033 Revert last commit 4 years ago
George Kalampokis d20b8b459a Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis ffc140f84b When creating or updating Datasets return also the
DatasetProfileDefinition
4 years ago
apapachristou 188fcd539f Style fix: add hover on dialog close button 4 years ago
George Kalampokis 7973e04090 Fix minor issue with identifier validation 4 years ago
George Kalampokis fbff31d287 When changing steps on both editors reset the scroll 4 years ago
George Kalampokis d40265544d Add Validators external urls for both staging and production profiles 4 years ago
George Kalampokis f5533e1b95 Prevent user to send merge request email to itself 4 years ago
George Kalampokis 5d01519415 Fixed various styling issues 4 years ago
apapachristou 6fb7c81cd5 Fix open filters animation 4 years ago
apapachristou bfdbce54c2 Adds date pipe to translate date 4 years ago
apapachristou 8d8dce8973 Adds logout option on smaller screen account menu 4 years ago
George Kalampokis 8161d382ad Fixed minor external url issue 4 years ago
George Kalampokis cda31be0bd Allow remote fetcher to retrieve data with POST requests and added a new
OpenAire repository source
4 years ago
George Kalampokis eae7f22f72 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis 2ff9b95fdf Made identifier validation field to work properly 4 years ago
apapachristou 523a551e0a with previous commit 4 years ago
apapachristou 3a8d426d22 Adds hover on all close buttons 4 years ago
apapachristou 0bd5afffe1 Fix: on save of datset, table of contents remains open 4 years ago
apapachristou 2313cd1ca5 Fixes align of icons on listing card items 4 years ago
apapachristou aa35725823 Fixes profile/login menu on mobile mode 4 years ago
apapachristou f8753de83a Styles close button everywhere 4 years ago
George Kalampokis e061448830 Initial commit for the new Dataset Template Field (identifier
validation) part 2
4 years ago
George Kalampokis da9872576e Initial commit for the new Dataset Template Field (identifier validator) 4 years ago
Diamantis Tziotzios 078d472859 db script fix 4 years ago
George Kalampokis 2ed23c4676 Fix various issues and styling of the language editor 4 years ago
George Kalampokis 07e8c51b79 On Dataset Template Editor properly stringify error objects 4 years ago
George Kalampokis 70056bd0a9 Fix issue with login for new users 4 years ago
George Kalampokis 47d5d8cb9e Fix another minor DBVersion issue with the DB creation scripts 4 years ago
George Kalampokis 2d3dfbf919 Fix minor issue with one of the DB update scripts 4 years ago
apapachristou 0e906cb4b9 Fixes compile error 4 years ago
apapachristou b13dab598f After dmp save remain at the same position 4 years ago
apapachristou abfb6342b2 with previous commit 4 years ago
apapachristou d0d98bc520 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development
# Conflicts:
#	dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts
4 years ago
apapachristou 0e2d288478 on dataset save remain at the same position 4 years ago
apapachristou 02d79165c4 Fix: search box on listing remain on page if no result 4 years ago
George Kalampokis c391cd5521 Fix issue when saving Datasets 4 years ago
George Kalampokis 86994c73ce Make Section ordinal to be required in the Dataset Template Editor 4 years ago
apapachristou 0c9396bc11 Fix for style layout 4 years ago
apapachristou d043322014 Fix: prevent search from sending asynchronous requests 4 years ago
apapachristou 45979922d5 Fixes style on title of dataset temlate preview and adds margin on expansion panels 4 years ago
apapachristou d27f8301c6 Fixes disappearing search box on dashboard if no results 4 years ago
George Kalampokis df8af6e6cd Trim time on Dataset's modified time in order to match with the Database 4 years ago
George Kalampokis ba5c295187 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis 2354d9bb5c When calling the createOrUpdate endpoint on the Dataset Controller,
return a DatasetWizardModel instead of the dataset's id
4 years ago
apapachristou 992999a596 Fixes zenodo icon align on user profile 4 years ago
apapachristou e661eb3d0b Removes unnecessary scrollbar from editors 4 years ago
apapachristou 638d5ca98c Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
apapachristou ce6c0f3b20 Fixes position of arrow on auto complete 4 years ago
George Kalampokis 8677cc85b9 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis 03da1f3f7b When merging users delete the remaining credentials of the user to be
merged
4 years ago
apapachristou 19b751984b Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
apapachristou f1cdacbe33 Removes unnecessary padding on listing 4 years ago
George Kalampokis d77fefc7c5 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis c1d473f8d4 When merging users remove the email from the user to be merged 4 years ago
apapachristou a926d933e3 Removes auto open of autocomplete panel on invitation dialog open, replace 'invite collaborators" with "invite 4 years ago
apapachristou 2f28e0c8ac Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
apapachristou d889a527e3 Fixes zenodo icon align on profile and adds language 4 years ago
George Kalampokis 35fe6a75fe Merge remote-tracking branch 'origin/Development' into Development 4 years ago
George Kalampokis 4c60b2bb06 When creating a new credential assign the user's email 4 years ago
George Kalampokis ff169ae806 Made User Merge logic functional 4 years ago
apapachristou 7792bed7f6 Fixes invite button clicks on dmp/dataset overview and fixes style on invitation dialog 4 years ago
George Kalampokis eeca52d3ff Prevent login requests to be sent multiple times from the oauth2 dialog 4 years ago
George Kalampokis 22cc8bb3a3 Merge remote-tracking branch 'origin/Development' into Development 4 years ago
George Kalampokis 981eb48d89 Add email for Merge requests 4 years ago
George Kalampokis baf4314a33 Fixed various bugs with the new Login system (prevent to send twice the login request with some providers) 4 years ago
apapachristou 5534f4f4a9 Adds template preview on: clone dialog select template field, dmp upload select template field 4 years ago
George Kalampokis 2b89f646ee Fix emails that are sent with images 4 years ago
apapachristou 7f654cc472 Replace alert box with notification snackbar on dmp overview copy doi 4 years ago
George Kalampokis c8a163f4aa Refactor most login providers in order to work on window popups and add proper login support for the link new user 4 years ago
George Kalampokis df3a5e81a5 Merge remote-tracking branch 'origin/Development' into Development 4 years ago
George Kalampokis 8c2ae8cf46 Add null check on the Organisation fromMap mapper 4 years ago
apapachristou cd618563bf Style changes on buttons 4 years ago
apapachristou 5b78943131 Adds provider icon on listing accounts on profile page 4 years ago
apapachristou 708206c28a Replaces text from "add new account" to "link account" 4 years ago
apapachristou d512ad1389 Fixes bug on closing preview template dialog 4 years ago
apapachristou f0b9b01695 Replace input email dialog with login dialog on add new account 4 years ago
George Kalampokis 96ffbe6670 Updated DB scripts 4 years ago
apapachristou 29c6774558 Adds field "Add account" on profile 4 years ago
George Kalampokis 9674ec2b6b Add user merge related services and updates on existing services on the frontend 4 years ago
George Kalampokis e1212383ff Add expirimental logic for userMerge (+ some updates for DB) 4 years ago
apapachristou d4ca651411 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
apapachristou 8946ea2fb7 Changes style of title on dmp an dataset card 4 years ago
George Kalampokis 56d6b12555 Add Organization and roleOrganization to the User Info. Also allow to
edit the user's name from the updateSettings
4 years ago
apapachristou 8dd728a85d Fixes on profile page 4 years ago
apapachristou 2c5feb5fa9 Restyles profile page 4 years ago
apapachristou 1d0a375453 Adds preview icon on all profile multiple autocomplete fields 4 years ago
apapachristou 32caed9f6f Adds preview of dataset template, adds delete with spacebar on multiple autocomplete 4 years ago
apapachristou b8f3c5af70 with previous commit 4 years ago
apapachristou 9c2f1b12bd Adds progress bar on dataset editor 4 years ago
apapachristou a631594f5f Changes favicon 4 years ago
apapachristou e179d90f12 Adds progress bar on DMP editor 4 years ago
George Kalampokis f08d8e2e01 When checking for Form Validation errors if the control has no nativeElement then pass as name it's formGroup key, also added some additional checkup for the placeholder parser in the FormValidationComponent 4 years ago
George Kalampokis b878bf9d8f Fix issue when importing from RDA and the predefined template(s) inside the json does not exist on the database 4 years ago
George Kalampokis a78044920a Fixed issues with elastic and last public version 4 years ago
apapachristou f71f9b07e0 gr language update 4 years ago
apapachristou 4c3775232a Adds everywhere snackbar on download rda json failure 4 years ago
apapachristou 02c36c1f61 Fixes bug of actions menu on dataset cards on public listings 4 years ago
apapachristou 71a270137a Fixes flag image scale on contributors page (to be tested) 4 years ago
apapachristou 103f89c0b6 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
apapachristou f575c9550b Fixes bug: filters button dissapearing on empty result list, fixes postion if list is empty 4 years ago
Diamantis Tziotzios 2316dd9b40 sk, tr language updates 4 years ago
apapachristou 20c607d88a Fixes style of dataset description form template 4 years ago
George Kalampokis 202ba64d21 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis 78903bf930 Add the backend logic to export all users to .csv 4 years ago
apapachristou 129d5c6dda Rename browser tab prefix from "Open DMP -" to "Argos -" 4 years ago
apapachristou 4479a0df80 with previous commit 4 years ago
apapachristou 7439281c50 Adds button to export all user emails (as admin) 4 years ago
George Kalampokis f4f3099b50 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into Development 4 years ago
George Kalampokis 7a3b4a18ca Fixed compile issues 4 years ago
apapachristou 7cc584ac33 Fixes spelling of variable name 4 years ago
apapachristou d856255405 Fixes bug: after discard grant was not set to previous value 4 years ago
apapachristou 166f0f7c37 Fixes grammar of notification "Email was send!"
(cherry picked from commit 2c57e77183)
4 years ago
Diamantis Tziotzios db31597fc0 Merge branch 'Development' 4 years ago
Diamantis Tziotzios e65bce0f5a Merge branch 'ui-redesign' into Development
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java
#	dmp-backend/web/src/main/java/eu/eudat/models/data/external/ResearchersExternalSourcesModel.java
#	dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml
4 years ago
apapachristou 9fd33e421b Adds message on submit of contact form 4 years ago
George Kalampokis e2326e1070 Minor refactoring 4 years ago
apapachristou a1b067071a Backend: Fixes modified time check on save dmp without previous reload. Frontend: Adds dialog to proceed to dataset editor on "save & add dataset" 4 years ago
apapachristou 0de0888407 with previous commit 4 years ago
apapachristou 7a71b71d2e Adds link for OpenAIRE’s Guide for Researchers on dashboard card of new user 4 years ago
apapachristou 394fc15018 Fixes style of uppercase and bold subtitles on templates form 4 years ago
apapachristou 6d7a477838 Change input type email to text on field affiliation of contact form 4 years ago
apapachristou d34aef3c94 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou f6900a1085 Revert: logo navigate to /home instead of index.html 4 years ago
George Kalampokis 49cd48943a Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
George Kalampokis ae03077795 Fixed various issues with the new externalUrls restTemplate 4 years ago
Diamantis Tziotzios 66ab8a4801 lang files allignment 4 years ago
apapachristou eece6e2171 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou c990da25c0 Adds language 4 years ago
Diamantis Tziotzios 0d408ff68a fixes 4 years ago
apapachristou dfe4c38b40 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 34111fc6a9 Adds dialog to specify transition from dmp editor to dataset editor 4 years ago
George Kalampokis c02157be8c Replace HttpUrlConnection with RestTemplate for the external Urls 4 years ago
Diamantis Tziotzios 91f888829e user guide update 4 years ago
apapachristou 886342e716 Adds new Factsheet document 4 years ago
apapachristou dcc8f3823b Restyles invitation dialog and adds message on successfully sent 4 years ago
apapachristou 9c7bd9a59c Fixes style on hint of invitation dialog 4 years ago
apapachristou c4b3070edb Fixes bug: tour opened on empty filters result 4 years ago
apapachristou 1b13b5f0bf Restyles home, adds kid images on cards on listings and dashboard, logo navigates to splash home screen 4 years ago
apapachristou 90973a154b Updates feedback form 4 years ago
apapachristou d39ddd00db Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou dc8492e337 Removes unnecessary code 4 years ago
George Kalampokis b64f6e98fe Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis 1d7b886e98 Allow to upload from file array to DMP service 4 years ago
apapachristou 716610e7c3 front changes to match with changes on back-end previous commit 4 years ago
George Kalampokis 58ef4800c2 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis 674ce48b8b DMP's create or Update endpoint will return a DMP model 4 years ago
apapachristou 5af4fb4816 Differs title of editing or adding dataset 4 years ago
apapachristou a1c42931fd Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 9fe99d8f98 with previous commit 4 years ago
apapachristou 97a3338dda Fixes enumerating of editor fields, changes title of fields 1.1 4 years ago
George Kalampokis 8ea356bcdc Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis 7b9ae7c91d Add support for Zenodo license autocomplete source 4 years ago
apapachristou 9e21e73d59 Tour opens automatically on empty DMP listing 4 years ago
apapachristou 0331e4f761 Renames "SIGN IN" to "LOG IN" on splash pages 4 years ago
apapachristou 9e2404cb3e Splsh screen index button "Start your DMP" navigate to /login instead of /home 4 years ago
apapachristou bb53557f1c Fixes: dashboard style in case of none dmp 4 years ago
apapachristou ae7d62b63c Fixes style on editor fields 4 years ago
apapachristou a05d24b95b Initialise contact field on dmp editor 4 years ago
apapachristou d249eb841a Adds description text on dmp editor fields 4 years ago
apapachristou ec59f9d495 Fixes bug: start new dmp dialog remained open 4 years ago
apapachristou c150d50c33 Rename all "Dataset Description" to "Dataset" 4 years ago
apapachristou accdc06ab1 Fixes bug on dataset copy functionality 4 years ago
apapachristou e3e83bfc4d Adds new FAQ content 4 years ago
apapachristou b8ebfb0726 Removes 1.3 External Link field from dataset editor 4 years ago
apapachristou b5d29553c0 Fixes on invitation dialog 4 years ago
George Kalampokis dfd705b1d3 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis b3be89fb88 Allow to invite others with just the email even if they don't have an
user
4 years ago
apapachristou 2a5e2adf48 adds ngx-dropzone 4 years ago
apapachristou 24bbe8c2ab Restyles import DMP pop up dialog 4 years ago
George Kalampokis 9c3b87535e Further Fix for file upload 4 years ago
George Kalampokis 261b688db0 File upload fix 4 years ago
George Kalampokis 08271c88cb When getting just the email for invitation, find it's user and set it's
id to the invited user
4 years ago
George Kalampokis 5a5043f432 Show properly researchers in DMP and Dataset Overview 4 years ago
apapachristou 410583a5f2 Moves fields language, visibility, publication data, contact from license tab to main 4 years ago
apapachristou dfd7096196 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 6bc2d37bda Restyles Warnign Dialog 4 years ago
George Kalampokis 5521e4f41b Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis 3c9c9852cf On DMP Public Overview when selecting a Dataset open it's public
overview
4 years ago
apapachristou 794ef0142a Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 1caa40988d Restyles navigation buttons on editors, fixes bugs on discard changes on editors 4 years ago
Diamantis Tziotzios 38f550542a CI update 4 years ago
Diamantis Tziotzios 28feacc7ef CI Update 4 years ago
Diamantis Tziotzios fe05ac9770 jenkins files 4 years ago
George Kalampokis 0bceae3409 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis 9dd76a739d If RDA Export fail show properly an error message 4 years ago
apapachristou 4c825d80b4 Retyles button add dataset on overview and removes pop up on click 4 years ago
apapachristou eb0bf2f003 Adds "Insert manually" link instead of add ( + ) button 4 years ago
apapachristou 26fa759d81 Removes default hint subtitles on fields of editors 4 years ago
apapachristou 3c1455ecb9 Changes component with stepper with a non stepper component 4 years ago
apapachristou f38e858f72 Hides cost field on dmp editor at license tab 4 years ago
apapachristou 226420a999 Makes edit button of overview pages open in the same tab window 4 years ago
apapachristou 11bf302631 Fixes bug on dataset overview click of edit 4 years ago
apapachristou 5fe0d40b7e Adds slovak contributors on splash 4 years ago
apapachristou c5f97eb8f9 Adds slovak language 4 years ago
apapachristou edd2a64fd7 Removes console.log 4 years ago
apapachristou 49c08f5061 Removes stepper from dataset description form 4 years ago
apapachristou 7897d9072d Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 57defab591 Removes stepper from dataset description 4 years ago
George Kalampokis 040ffdc57e Fix issue with autocomplete field 4 years ago
George Kalampokis fed426e64b Fixed issue with visible rules when using multiple world list 4 years ago
MadDeCoDeR 71deb5f473 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot.git into ui-redesign 4 years ago
George Kalampokis 9a9fed37ce Add Validation button for the Dataset Template Editor 4 years ago
apapachristou b75d7606cf Discard on dataset editor 4 years ago
apapachristou 3d323615e4 Adds check for broken dataset template 4 years ago
apapachristou e7db9ee664 Adds discard on dataset editor (1st commit) 4 years ago
apapachristou bcdaf144d2 Moves enum to folder enum 4 years ago
apapachristou d48e8a984a Create new Dataset - using pop up 4 years ago
apapachristou 5944dfc005 Dataset editor changes on save 4 years ago
George Kalampokis 9b403bb480 Create or update dataset endpoint will return the id of the
created/updated dataset
4 years ago
Diamantis Tziotzios d2251d1015 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
Diamantis Tziotzios 2f1f08a83f Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html
4 years ago
George Kalampokis 61d8661309 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 36b380e738 Check if the grant can be edited only when the grant is internal 4 years ago
apapachristou 2ebf413217 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.html
4 years ago
apapachristou 9596fd1595 New seperate dataset editor (1st commit) 4 years ago
Diamantis Tziotzios 9769c5b78f dialog animation removal 4 years ago
George Kalampokis 5d9c1f47cd Fixed minor path issue with the "Show more" button on DMP items 4 years ago
George Kalampokis 5fdf1267c4 Fix minor issues with dmp and dataset pubic listing 4 years ago
George Kalampokis 33a43f1066 Prevent to add and save datasets on a finalized dmp 4 years ago
George Kalampokis da7fc0def3 Fixed various issues with DMP imports and exports (mostly RDA) 4 years ago
George Kalampokis 29c8ad8589 Fixed authService.me sometimes using invalid url (possible relation to #289) 4 years ago
George Kalampokis 31ab0747b2 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 4cc44814e2 Minor improvements to error checkups 4 years ago
apapachristou b994d3a7a7 Switches button edit-clone at overview 4 years ago
apapachristou abd8fcf25f Adds print error in case of get broken dataset profile 4 years ago
apapachristou c943a2d297 Fixes bug on multiple template select, on choosing not existing template and then click to open available profiles 4 years ago
apapachristou b3ffd39151 Changes on listing according to new designs: card appears only on empty listings. 4 years ago
apapachristou 13f41dfd8b Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 6eb797edfa Add external icon on static pages 4 years ago
George Kalampokis 7b800b2347 Fix multiList on xml export 4 years ago
George Kalampokis 2390a33a98 When uploading dataset template xmls delete the working directory copy of the file 4 years ago
George Kalampokis 418d29b7d5 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 7f83b0f19a Fixed minor issue with template import 4 years ago
apapachristou 239b91480b Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 1deaad85f1 Minor fixes on different languages responsiveness 4 years ago
George Kalampokis bc6193c7d7 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 88ea24d367 Fixed issues when retrieving data from external sources 4 years ago
George Kalampokis b66fe982f5 Update Tags field with multiple autocomplete like in the dataset editor 4 years ago
George Kalampokis 4b87ab04e8 Allow Services to use tag if they have no source 4 years ago
apapachristou 22b59ea6b6 Moves option my datasets on sidebar inner 4 years ago
apapachristou 0648dfb58d Adds more hover effects 4 years ago
apapachristou 5365aa1842 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 45e5848956 Adds hover effects on login buttons and reverts error on form-composite-field 4 years ago
George Kalampokis 17af551469 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis e9db95af4a Improve language Editor styling 4 years ago
George Kalampokis b847389b96 Add ORCID source to all the profiles and replace the content type from xml to json 4 years ago
apapachristou 43d9e2bd44 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 05fc18404a Adds library from: npmjs.com/package/ng-dialog-animation 4 years ago
apapachristou 4c1222530a Fixes path on support/feedback. Adds animation on filters of DMP listing 4 years ago
George Kalampokis cbbd8e7485 Fixed issues with tinyMCE 4 years ago
apapachristou 6bc03ccbfc Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou c0d3b471c0 Adds dashes on overview pages if fields are empty 4 years ago
George Kalampokis 3944191c4e Add EOSC Services API (ref #290) 4 years ago
George Kalampokis 2f31f4cb61 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis aac277020a Add support for zenodo source on autocomplete combobox 4 years ago
George Kalampokis 5be674d07e Allow wordlist combobox type to have multiple values 4 years ago
apapachristou 0f126ec413 Removes opacity from dataset and dmp tag of listing card 4 years ago
apapachristou 292c758a41 Reorders option on sidebar bottom and adds static urls (to be tested) 4 years ago
apapachristou b33c49ce4c Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 1680409755 Style fixes on editor template input field 4 years ago
George Kalampokis c4dc3b0836 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.component.html
4 years ago
George Kalampokis e558c99404 Fixed issue with visibility rules not working 4 years ago
apapachristou 8782b6c05d Reorders dataset editor template field 4 years ago
apapachristou b741302020 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 56cf5a7552 Adds new assets 4 years ago
George Kalampokis 73b8eb7203 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis b4b9c34de4 Remove most external references from the Dataset editor (from now on they must be defined inside the template) 4 years ago
George Kalampokis 9f8b4bb9f7 Add License info step for the DMP Editor 4 years ago
George Kalampokis 13ac3634d6 Improve compatibility for openAire sources 4 years ago
George Kalampokis f0502b94df Change the tags on the dmp editor to a multiple auto select, that allow to create tags or use existing ones 4 years ago
George Kalampokis 183ce385a9 Add OpenAire source for the external Datasets 4 years ago
George Kalampokis 2a53a0aa7d When showing researchers retrieved by ORCID source show also and their ORCID in parenthesis 4 years ago
apapachristou efaebe8574 Adds slider on static page per 3 sec, stops on option click. 4 years ago
apapachristou 1737c96621 Fixes condition visibility of remove dataset 4 years ago
apapachristou e4bef006d3 Fixes bug, cant remove finalized dataset 4 years ago
George Kalampokis 7300e2fe85 When creating a DMP with datasets, add datasets after the DMP is created 4 years ago
apapachristou f32a3db3b5 Adds functionality, remove dataset from dmp editor 4 years ago
George Kalampokis a706a9c8f6 Improve the retrieval of the datasetpagedefinition from the dmp api 4 years ago
George Kalampokis db0cee542c When creating or updating a DMP with datasets, check the datasets template validity from the datasets of the request and not from the ones in DB 4 years ago
apapachristou eb7a5571c4 Edit template on dmp-dataset editor 4 years ago
George Kalampokis 1dbe320706 Improve expiredAt calculation 4 years ago
George Kalampokis 8ffb306913 Return null principal if the expiredAt is actually expired 4 years ago
apapachristou b3bf7ab73d Fixes bug on preview of dataset template on dmp editor, dataset editor 4 years ago
apapachristou 2eb608a897 Add dataset from dmp editor 1st commit 4 years ago
George Kalampokis 7dcf2a1ef1 Minor build fix 4 years ago
George Kalampokis d890763b41 Updated The DatasetWizardModel on the backend in order to be similar to it's front end counterpart 4 years ago
apapachristou abe95e0c5e Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 89c4aac560 Modifies new version of dmp 4 years ago
George Kalampokis 072a1c8a18 Change the filename of the exported DMP (also affects DOI generation) (ref #288) 4 years ago
George Kalampokis b12261b50b Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis e4713d60bd When creating a new version of a DMP return the Id of the new DMP 4 years ago
apapachristou d150469ba4 Fixes bug on filters button position when clone dialog is open 4 years ago
apapachristou b908df98d7 Modified clone dmp 4 years ago
George Kalampokis f2613c4c87 When exporting to World and PDF with world list field return it's label instead of it's value (ref #287) 4 years ago
George Kalampokis fc7f8d4278 When exporting to World and PDF with world list field return it's label instead of it's value (ref #287) 4 years ago
George Kalampokis 8951b61b3b Return the id of the cloned dmp when calling the dmp/clone endpoint 4 years ago
apapachristou 3bcafc0dd4 Converts all links of add dataset to dmp, directing from old dataset editor to new 4 years ago
apapachristou b2977df4e5 Adds link on button "add dataset" on dmp cards 4 years ago
apapachristou 306dfa7346 Removes search field on listing, if no results 4 years ago
apapachristou e837091346 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou db006d6ad2 Fixes bugs on discard buttons 4 years ago
gpapavgeri 447fd188bc Updates styles and links for sidebar options 4 years ago
gpapavgeri 7a6228b136 Fixed error ''Cannot read property 'firstChild' of null'' after Login 4 years ago
gpapavgeri 3d9b30567d Updates styling for dmp-invitation-dialog 4 years ago
gpapavgeri 680d592c0c New Dmp Title without (Expert) 4 years ago
gpapavgeri 74099ecabc Adds comment for custom template, removes add dataset & updates style for dataset-info 4 years ago
gpapavgeri bcbb9ba606 Adds custom panelClass in matDialogConfig Object for UserDialogComponent 4 years ago
apapachristou 7fd0692608 Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 404632a337 Fixes save new dataset 4 years ago
gpapavgeri 9102123550 Changes Start Wizard link to ' /plans/new ' instead of ' /quick-wizard ' 4 years ago
gpapavgeri 2ec8e38239 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 277117b27b Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/assets/i18n/tr.json
4 years ago
George Kalampokis 1ee768c3a4 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis e1368e270a Update Zenodo's file API 4 years ago
Diamantis Tziotzios b70ba72b5b tr lang update 4 years ago
gpapavgeri 5a76d2fb2f Dashboard: Adds public usage label when user is not authenticated 4 years ago
gpapavgeri 355350c8ec Comment out Sort by: Created 4 years ago
gpapavgeri 9e0304d52e Dashboard: laptop-image fixed & routerLink added in absence of dmps 4 years ago
apapachristou 15d2958c95 Adds dataset profile definition form on new dataset page 4 years ago
apapachristou be48a150b2 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/ui/dashboard/dashboard.component.html
4 years ago
apapachristou 2c9475da2c Fixes bug of double select dropdown.
The attribute autocomplete="nope", set by downshift, is ignored in Chrome 67 and Opera 54 (latest at the time of writing)
4 years ago
apapachristou ac153477e7 Adds dataset editor on home button "Add new dataset" 4 years ago
George Kalampokis fa86258197 Fixed minor issue with Zenodo file names 4 years ago
George Kalampokis e067b3d490 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
gpapavgeri 5a0963a6f2 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 889c8b925b Toggle navbar menu on mouse hover 4 years ago
George Kalampokis 4d249eeae4 Changed the file format when creating Zenodo Deposit 4 years ago
Diamantis Tziotzios 01ea1bc63a Merge branch 'ui-redesign' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/assets/i18n/es.json
4 years ago
Diamantis Tziotzios bcae5c4401 es lang file 4 years ago
gpapavgeri 995d5d75ee Change app title on language change 4 years ago
gpapavgeri a647ce9926 Delete double entries in json files 4 years ago
gpapavgeri af1cbdf918 Invitation-dialog CSS updated 4 years ago
gpapavgeri 1961415ae7 Invitation-dialog - css for select role updated 4 years ago
gpapavgeri 736c211944 Show dashboard after statistics have loaded & add empty-list message 4 years ago
gpapavgeri 4dae734379 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 311f79b372 Placeholder changed in dataset-info 4 years ago
apapachristou cca9ac3ec9 Adds button save on DMP editor even if dataset is finalized and adds indication that a dataset is finalized 4 years ago
apapachristou 8caad8bb3e Changes on create new dataset editor (2nd commit) 4 years ago
apapachristou d7fef01391 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 5e31820e49 Fixes bug on editor in case of dataset is finalized but dmp not 4 years ago
gpapavgeri 99a89ad7d5 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 9708a0c82d Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 16390853d6 Adds new dataset editor (1st commit) 4 years ago
gpapavgeri 8fde8a684c Navigate to dmp publicOverview from dataset overview when view is public 4 years ago
gpapavgeri b3b9de6979 Add researchers to dmp in DatasetOverviewModel 4 years ago
gpapavgeri 947ecc1874 Dataset overview update finalize 4 years ago
gpapavgeri 5fd5ec9d63 Dataset overview update - finalize / reverse & delete comments 4 years ago
gpapavgeri 75a04a36d7 keeping only dmp or dataset label for their title 4 years ago
gpapavgeri fb30679f7f argos logo added in navbar 4 years ago
gpapavgeri 370360872a Guided tour comments added 4 years ago
George Kalampokis 8e473d1a9f On the Dataset Template Editor, distance the delete button in the sections from the expand/collapse button 4 years ago
George Kalampokis 70bc900f5a Replaced german flag with austrian flag (ref #285) 4 years ago
gpapavgeri 84047fc035 Guided Tour Update 4 years ago
apapachristou de10a986db Removes old dataset editor on click of edit dataset 4 years ago
apapachristou 9ffa1a5a54 Removes unecessary requests from dataset overview 4 years ago
George Kalampokis 58b193ff20 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis edf64328d9 Fix parsing issues with auto complete 4 years ago
George Kalampokis cd5295437b Fix minor issue with DMP criteria 4 years ago
apapachristou fc9f45c0aa ...with previous commit 4 years ago
apapachristou c2f1b66c25 Makes recent activity results able to open in new tab 4 years ago
apapachristou 9b837a27a8 Fixes error of mismatch model on client and server 4 years ago
apapachristou 33ea9ce2ed Some style changes on filters dialog 4 years ago
apapachristou 62145205fc Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou fd84ed317c Adds public home page: /home 4 years ago
apapachristou 3baf20f4ec 'Start new DMP button' on navbar redirect to login if not authanicated 4 years ago
gpapavgeri 24855f776b Guided tour added in dataset editor details 4 years ago
apapachristou 9ff36a1b12 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/core/common/enum/recent-activity-order.ts
4 years ago
apapachristou a7851b8371 Adds option sort by published at ( front end ) 4 years ago
George Kalampokis 1c876cbcca RecentActivity can now be sorted by finalizedAt and publishedAt 4 years ago
George Kalampokis 83bd977484 If finalized Dataset has no finalized At date then use it's DMP finalized At date 4 years ago
George Kalampokis 5d44d8bf45 Fixed issue when finalizing datasets from the DMP Overview. 4 years ago
George Kalampokis feee5b49e9 Ditto 4 years ago
George Kalampokis 2faf1a0d78 When getting public paged Datasets, allow to set custom order 4 years ago
George Kalampokis f97546ff38 Add finalized RecentActivity sort function 4 years ago
George Kalampokis 168b634681 Fix minor authentication issue 4 years ago
George Kalampokis f86ba70d24 Fixed consistency issues with the public statistics 4 years ago
apapachristou e07d79009a Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/assets/i18n/gr.json
4 years ago
apapachristou 5fc3995ba8 Adds language 4 years ago
apapachristou a0121bbda9 Temporary fix bug on input rules on dataset description 4 years ago
gpapavgeri b36621877e Guided Tour added 4 years ago
apapachristou 70d2d456ee Fixes bug on sort by label 4 years ago
apapachristou 323b74048e Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 10eccf89eb Adds dataset editor on dmp editor 4 years ago
George Kalampokis f47a3ab2a3 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 4b30d56d91 Fixed issue if dataset has no profile 4 years ago
apapachristou 00aa4ef2c6 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 721ae786b9 Adds green theme css but dont apply it yet 4 years ago
gpapavgeri e153ac44c2 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 153e53e822 toggle navbar 4 years ago
George Kalampokis dc83a3a09c Fixed Various issues when creating or updating DMP with datasets 4 years ago
gpapavgeri b3332762c5 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 15c33d8250 enable close StartNewDmpDialogComponent when click outside dialog 4 years ago
apapachristou 70e5116879 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 9602fc0340 Fixes bug on load more results with sorting 4 years ago
gpapavgeri b2aec001dc open listing items in the same page 4 years ago
gpapavgeri bd04e1b00f dashboard card width changed 4 years ago
George Kalampokis b37af110aa Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis eb8e4a96e6 Reworked Recent Activity ordering and force status to be ordered in reverse of the others 4 years ago
apapachristou 8e7d426947 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 81a7ff0955 Fixes option view all dmp versions on listings 4 years ago
gpapavgeri 7f0aeb8c07 login page - laptop image fixed 4 years ago
George Kalampokis 662bad6e47 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 22493569fa Allow to create or update DMP and it's datasets with one endpoint (post full) 4 years ago
gpapavgeri c77cd0c1c6 open links in new tab 4 years ago
gpapavgeri ca4525238e lockStatus check update [on delete click for listing components (listing-item, recent-edited, drafts) - not overview] 4 years ago
gpapavgeri 7f476ccd50 comment out private icon for dmp & dataset overview 4 years ago
gpapavgeri f059facd5a Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 62d6ac01df Change the profile of DatasetListingModel & RecentActivityModel from String to DatasetProfileModel and Update profileId in openDmpSearchDialogue() 4 years ago
George Kalampokis 3b09bef7d5 Fixed minor issues with the elastic search on recent activity 4 years ago
George Kalampokis 9c9db0b646 Improve data integrity of recent Activity data retrieval and added elastic support to it 4 years ago
George Kalampokis b7b8e0b0e8 Change the profile from DatasetListingModel from String to DatasetProfileOverviewModel 4 years ago
George Kalampokis b0067f20b5 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis db8debef86 RecentActivityModel will store profile as DatasetProfileOverviewModel instead of just string 4 years ago
gpapavgeri 89a9ae21ed Add Germany to Contributors 4 years ago
gpapavgeri 6d1ecca154 routerLink changed in dataset-listing-item & delete updated for dataset-overview 4 years ago
gpapavgeri 09d000ba74 add liber-community in zenodo link 4 years ago
gpapavgeri 762f873db1 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 3c2caee679 update of users actions (edit, delete, etc) according to their role 4 years ago
gpapavgeri 4b267f2f84 lockStatus check and icon added to all components 4 years ago
George Kalampokis ac00b01943 Fixed various issues when creating world document and storing data to the elastic 4 years ago
George Kalampokis d1992b37c4 Fixed various issues when creating world document and storing data to the elastic 4 years ago
gpapavgeri 3d1b0adc6e add status to DmpOverviewModel used in DatasetOverviewModel 4 years ago
apapachristou 87398428c5 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 2018251710 Adds language 4 years ago
George Kalampokis 80bdf5a77b Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 14df3a4bbe Add dataset filter like in getPaged on DataManagementPlanManager 4 years ago
gpapavgeri 0ff77d0121 images path for contributors updated 4 years ago
gpapavgeri 868678e03f reloadPage & delete buttons updated 4 years ago
Diamantis Tziotzios cd554dc1d1 added turkish and german languages 4 years ago
apapachristou 8d7d9c5a8b Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 2c81788a4f Fix bug on offsets of both dmp and dataset listing 4 years ago
gpapavgeri 9494e5b618 Home-myDmps-myDatasetDescriptions buttons updated according to dmp&dataset overview 4 years ago
gpapavgeri 5fc779a172 dataset-overview: dmp label changed & copy-edit urls open in new tab 4 years ago
gpapavgeri 20cd23ee35 dmp-overview: show-more deleted & dataset-label changed & clone-edit-newVersion urls open in new tab 4 years ago
apapachristou 3844c3a187 Fixes bug on load more both dmps and datasets 4 years ago
George Kalampokis f3c1244600 Separate RecentActivityTableRequest's offset to dmp and dataset offset (backend) 4 years ago
George Kalampokis a60151560b Temporary removed async gets for datasets (TODO: make them async again) 4 years ago
George Kalampokis 9000da0ee4 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis e6da46730b Improved Dataset error handling when retrieving data 4 years ago
gpapavgeri 94d8151356 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 98abb3ddd3 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 0d90209ac9 Fixes bugs on discard changes on DMP editor and renames field authors to field researchers 4 years ago
gpapavgeri 9f1ac56148 component dmp-invitation renamed to dmp-invitation-dialog & mat-select updated to show predefined role for invited user 4 years ago
gpapavgeri 04f09ef578 Add UNFINALIZE button (dmp&dataset overview) & DEPOSIT button hidden after doi creation (dmp overview) 4 years ago
gpapavgeri 578093a53c Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 4f3d71b48c dataset-overview: comment out MAKE PUBLIC button 4 years ago
apapachristou e475b265ab Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou f96a4698a1 Restyles DMP Editor 4 years ago
gpapavgeri 1dccfd834a Add opensource-licences 4 years ago
George Kalampokis d4e4d5ca13 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 5cc6a5117a Fixed path issue with externalUrls on devel (backend) 4 years ago
gpapavgeri 1fd4c8e05f get user email from Principal fixed 4 years ago
George Kalampokis ac24143c0d Sanitize user output on frontend 4 years ago
George Kalampokis 4127a05da4 Add Email Field on Principal 4 years ago
gpapavgeri 182c215069 minor changes in static pages 4 years ago
gpapavgeri 07faec3124 Add contributors.html & licences link in footer 4 years ago
gpapavgeri f08e62e5f4 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 3a2dcca4d3 minor changes in dmp-overview, dataset-overview & user-dialog components 4 years ago
George Kalampokis d40e9fadbf Removed RDA JSON export from Datasets (it doesn't and it can't (cycling dependency)) 4 years ago
George Kalampokis 69fc698866 Unified datasets and datasetWizard Controllers 4 years ago
apapachristou 367e6c33f1 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou e7a26c40ae Changes on language 4 years ago
gpapavgeri bac925a6b6 redesign_user-dialog.component_v1 4 years ago
gpapavgeri c7495cb9b2 redesign-login page_v3 & dmp-invitation placeholder fixed 4 years ago
gpapavgeri bdc55c9142 redesign-login page_v2 4 years ago
gpapavgeri f8f6bac47d Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 15e09d7994 Adds sort by field on all listings 4 years ago
George Kalampokis 74f5019ff3 Fix Language Editor 4 years ago
George Kalampokis 0d0fed6137 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 8eb054f9d2 Update language Editor (still not functional) 4 years ago
gpapavgeri 187831ec08 redesign-login page_v1 4 years ago
gpapavgeri 09f207eb6e dmp&dataset overview: orcid path for researcher fixed 4 years ago
apapachristou 872e80d4b7 Add search field on dataset descriptions tab and fixes language 4 years ago
apapachristou b605a35cd4 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 84e8a72dbb Adds searches fields on tab listings 4 years ago
gpapavgeri 987b97e802 Add select-role in dmp-invitation 4 years ago
George Kalampokis aa930f097a Fixed issue with DMPs that are having a user assigned multiple times 4 years ago
George Kalampokis 916557db0a Minor bugfix 4 years ago
George Kalampokis fcbb0dfdf8 Fixed invitation system and made it to check if a user is already invited to the DMP 4 years ago
George Kalampokis 7b039da231 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 9751d0fb78 Fixed issue with invitation properties 4 years ago
George Kalampokis caec63be38 Fixed issue when saving auto complete data 4 years ago
apapachristou 1a14ee0929 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 713c7316dd Fixes errors on build prod 4 years ago
George Kalampokis 451ed453f9 Add role to the invitation model 4 years ago
apapachristou 3af197c3aa Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou c10b124bb5 Adds select form of dmp version on dmp overview 4 years ago
gpapavgeri a7c814b0b4 'Start-new-dmp-dialog' completed 4 years ago
gpapavgeri dd0f158769 dmp&dataset overview: 'remove user from dmp' update 4 years ago
George Kalampokis 052430d97c Minor fixes 4 years ago
apapachristou 5a0c433034 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou cc04364600 Adds version listing model 4 years ago
gpapavgeri 3ce10b8e2e Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 4f6c339b37 dataset label in dmp overview (text-oveflow & tooltip) fixed 4 years ago
George Kalampokis d8d11c5394 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis b8a1ed3f07 Minor bugfix 4 years ago
gpapavgeri 10a59aa630 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri ea3b73dd9c 'Start-new-dmp-dialog' completed except of import from file 4 years ago
George Kalampokis 4e249e4b8b Add get All Versions Endpoint to the Backend 4 years ago
apapachristou a1963602df Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 397e23e4d1 fixes error shows on development mode "value changed after it was checked... " on listings 4 years ago
gpapavgeri f919a8d81a Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri a4b61c2172 dmp&dataset overview_remove user & invite user update 4 years ago
apapachristou f451314473 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou ff532c56fb Fixes bug on public dmp / datasets listing 4 years ago
George Kalampokis 7a09d85353 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis e428e8a5df When creating new DMPs pre-set the visibility (restricted) and the contact (creator). They can be changed later in the draft phase. 4 years ago
George Kalampokis 3ba34e1e69 Fixed issue when viewing the public DMPs 4 years ago
apapachristou 3d51b6bd3c Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 5aa231e2bf Adds complete dataset listing redesign 4 years ago
George Kalampokis a728e7da4a If DMP is lacking the visibility option then create a Zenodo DOI with resstricted file access and no license 4 years ago
George Kalampokis 8ffdfdba1f If DMP is lacking the visibility option then create a Zenodo DOI with resstricted file access and no license 4 years ago
gpapavgeri 097c862ab6 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri bb0c5a0391 Invite authors-pop up_v1 4 years ago
apapachristou 5c8c156220 Fixes on filters of dmp listing 4 years ago
apapachristou d3e7f57cbd Adds search on dmp listing, fixes bug on load more 4 years ago
apapachristou b94363ba5b Adds links to datasets on listings 4 years ago
apapachristou 6fa7b4a350 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts
4 years ago
apapachristou 2ab58f2926 Add filters on the side on dmp listing 4 years ago
George Kalampokis 1423f5175d Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis ace12c3140 Add updateusers end point for DMP 4 years ago
Diamantis Tziotzios c61f7417f5 splash changes 4 years ago
gpapavgeri 6a10c26c67 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 7c3f06d9f4 dataset-overview_update v4 4 years ago
George Kalampokis 029c246a4b Fixed minor issue 4 years ago
George Kalampokis 47d8c65814 Merge branch 'advanced_rda' into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/ui/dmp/dmp.module.ts
4 years ago
George Kalampokis 58e22926b1 Merge branch 'advanced_rda' into Development 4 years ago
George Kalampokis f432caa584 When getting user statistics on the dashboard make sure the DMP count to be distinct 4 years ago
George Kalampokis 84bb291cd6 Make DMP total count to use distinct in order to avoid counting duplicate entries 4 years ago
gpapavgeri 3051b6ba0a Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 75be44ee60 dataset-overview_update v3 4 years ago
George Kalampokis d10615d13a Replace dmp and grant form String to DataManagementOverviewMaodel and GrantOverviewModel on DatasetOverviewModel 4 years ago
George Kalampokis 7f56afad5f Add OpenAIRE source for external Datasets 4 years ago
apapachristou a8528ee5b1 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 132f5675d3 Adds Filters Dialog on Dmp Listing ( 2nd Commit ) 4 years ago
gpapavgeri 58df04516c Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 21d19dbf58 dataset-overview_update v2 4 years ago
apapachristou f8ab6a8024 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 6d9dcc4ec9 Dmp Listing (1st Commit) 4 years ago
gpapavgeri aec542a067 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 344e49afc4 dataset-overview_update v1 4 years ago
George Kalampokis fa15ae8774 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 372c9bb074 Add support for Dataset Overview 4 years ago
apapachristou e315bee7f7 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 16af9e8f3e Fixes bug on loadMore and fixes spelling on recent activities 4 years ago
George Kalampokis f2fb409900 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis d51099cedc Further fixes and improvements over recent activity 4 years ago
apapachristou 2cb6583bf4 Removes guest component 4 years ago
George Kalampokis 0b452d2520 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis acf8b58728 Fixed and improved the recent activity manager 4 years ago
apapachristou 2cd03e30f8 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou f1dc5f5f5f Adds language 4 years ago
George Kalampokis 7197892352 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
apapachristou 8d569d38b3 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou fbb2dc214a Adda language 4 years ago
George Kalampokis 150667350c Further Fixes over Recent Activity model 4 years ago
Diamantis Tziotzios 1615707418 Merge branch 'Development' into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/app-routing.module.ts
#	dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.scss
#	dmp-frontend/src/app/ui/navbar/navbar.component.html
#	dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.html
#	dmp-frontend/src/assets/i18n/en.json
#	dmp-frontend/src/assets/i18n/es.json
#	dmp-frontend/src/assets/i18n/gr.json
4 years ago
Diamantis Tziotzios 9f5054668e Merge branch 'Development'
* Development: (72 commits)
  splash screen fixes
  splash spell error fix
  Properly remove associate Collaborators from a DMP
  splash changes
  Fixed issue with DMP filter on public datasets
  Fixed issue when using the copy dataset dialog
  Minor styling improvement over DMP Overview
  Code clean up
  Add support for newer versions of java (11) (expirimental)
  Add Zenodo file visibility field for DMP (ref #274)
  Fixed issue not passing DMP Extra Properties on clones and new Versions
  Add DMP Zenodo license field (ref #274)
  more splash screen changes
  Allow splash to send contact emails
  splash screen changes
  Hide Uri field on Dataset Editor (ref #275)
  When logging in remove the cookie consent popup
  Fixed minor issues with RDA Mapping
  Add currency field type for dataset templates
  Add DMP language a placeholder on UI
  ...

# Conflicts:
#	dmp-backend/web/src/main/resources/RDACommonStandards.txt
#	dmp-backend/web/src/main/resources/config/application-production.properties
4 years ago
George Kalampokis 2fb270d66c Fix minor issues with the new merge 4 years ago
George Kalampokis 4531a5d61e Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts
4 years ago
George Kalampokis 71279a716e Minor changes to Recent Activity Model 4 years ago
George Kalampokis b57f6fb73c Recent Activity controller will require a custom DataTable Request 4 years ago
apapachristou ce24afd16f Adds text and button to add dataset on empty tab list on dashboard 4 years ago
apapachristou 8551e9140c Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
apapachristou 52662f33f4 Adds all recent activity 4 years ago
George Kalampokis 6d491b5930 Rda mapper will now be able to use the new DMP fields 4 years ago
George Kalampokis 7127f6dbd6 Minor fix over cost listing 4 years ago
gpapavgeri faaa57e2be dmp overview re-design -- not completed: lock, remove, versions 4 years ago
Diamantis Tziotzios 0fefc762a6 splash screen fixes 4 years ago
Diamantis Tziotzios e2c5fd5c57 splash spell error fix 4 years ago
George Kalampokis 094cff06b1 Properly remove associate Collaborators from a DMP 4 years ago
George Kalampokis 1ec90d7b52 Properly remove associate Collaborators from a DMP 4 years ago
George Kalampokis 64624ca6f1 Properly remove associate Collaborators from a DMP 4 years ago
George Kalampokis 62118179ff Update the cost listing (near finalization) and fix some issues while loading costs from the backend 4 years ago
George Kalampokis 626b499ecc Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign
# Conflicts:
#	dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts
4 years ago
George Kalampokis f5093a6995 Add type to the recent activity model 4 years ago
George Kalampokis 325979a896 Add criteria for the recent activity model 4 years ago
apapachristou 44d9cf537a Adds invite shortcut on DMPs and fixes change language bug on ui 4 years ago
George Kalampokis 747ad60fb1 Update cost listing 4 years ago
Diamantis Tziotzios 710b49fc83 splash changes 4 years ago
George Kalampokis bfb9eaf87c Add costs listing (wip) 4 years ago
gpapavgeri f5c70fdd60 Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign 4 years ago
gpapavgeri 134313eb3e dmp-overview_update 4 years ago
apapachristou 95c9e4eb4e Adds drafts tab data 4 years ago
George Kalampokis a7a8e3db35 Add contact field and "add cost" dialog 4 years ago
apapachristou 5db3485079 Adds drafts listing on dashboard 4 years ago
apapachristou 1230bd2417 Adds dashboard data on tabs 4 years ago
gpapavgeri ee61bf4ffb dmp overview_re-design_update 4 years ago
George Kalampokis 64078eb283 Add isProfileLatestVersion on DatasetListingModel 4 years ago
George Kalampokis f821938542 Created a new Recent Activity model and backend end-point that contains more details about it's objects 4 years ago
George Kalampokis 1cec40a4da Add isPublic on DtasetListingModel 4 years ago
George Kalampokis f1644d1fa0 Merge remote-tracking branch 'origin/ui-redesign' into ui-redesign 4 years ago
George Kalampokis 3c18ed4a0c Add users on DatasetListingModel 4 years ago
gpapavgeri 235096a982 redesign_update 4 years ago
George Kalampokis 08f7d4aca4 Fixed issue with DMP filter on public datasets 4 years ago
George Kalampokis 7de37fa453 Fixed issue when using the copy dataset dialog 4 years ago
George Kalampokis b4576f2b08 Minor styling improvement over DMP Overview 4 years ago
George Kalampokis ecd7898237 Code clean up 4 years ago
George Kalampokis e8c90e66a5 Add support for newer versions of java (11) (expirimental) 4 years ago
George Kalampokis 6e4e23e00d Add Zenodo file visibility field for DMP (ref #274) 4 years ago
gpapavgeri 3bf6c2d927 dmp-overview_re-design_initial commit 4 years ago
George Kalampokis 346c731aae Fixed issue not passing DMP Extra Properties on clones and new Versions 4 years ago
apapachristou 05ea4fffd5 Adds language 4 years ago
apapachristou 1bae868e5a Fixes progress bar, add some dynamic data on recent edited activities 4 years ago
apapachristou 7cf5ddfebe Redesign of landing page, sign in interface, sidebar, navbar, dashboard (still in progress) 4 years ago
George Kalampokis 2ca9eede14 Merge remote-tracking branch 'origin/Development' into Development 4 years ago
George Kalampokis b0dddeeb51 Add DMP Zenodo license field (ref #274) 4 years ago
Diamantis Tziotzios e01d51d41e more splash screen changes 4 years ago
George Kalampokis d81d6e8568 Allow splash to send contact emails 4 years ago
dtziotzios 6d27abaca8 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development 4 years ago
dtziotzios 423271713f splash screen changes 4 years ago
George Kalampokis 2e5faf5c05 Hide Uri field on Dataset Editor (ref #275) 4 years ago
George Kalampokis 92fe11b18b When logging in remove the cookie consent popup 4 years ago
George Kalampokis 55d3feb4e3 Fixed minor issues with RDA Mapping 4 years ago
George Kalampokis 791f2fee61 Add currency field type for dataset templates 4 years ago
George Kalampokis 38986ef67b no message 4 years ago
Diamantis Tziotzios bff260b85b config file changes 4 years ago
George Kalampokis 9519300dc4 Removed deprecated configurations and added additional RDA Common Standards for dataset Templates
(cherry picked from commit 5b0a66ce06)
4 years ago
George Kalampokis 9373d3e038 Fixed logback paths
(cherry picked from commit 33ec8b81c0)
4 years ago
dtziotzios d971f02a94 Merge branch 'Development'
# Conflicts:
#	dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java
#	dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java
4 years ago
Georgios Kakaletris d3915e26e7 Update LICENSE 4 years ago
George Kalampokis c028aad615 Fixed and improved file export system
(cherry picked from commit 71ccd76896)
4 years ago
Diamantis Tziotzios 4ee39074a3 Merge commit '8ca2b912d40ece8bf0fbcda5c49f1ef7f5f6fdfd' 4 years ago
Diamantis Tziotzios 1b4952a909 Merge branch 'Development' 4 years ago
Diamantis Tziotzios 3ada5a0d3d Merge branch 'Development' 4 years ago
Diamantis Tziotzios 63ee865dd9 Merge commit 'c8358f22dd5d108b7f270f97724d6bab1582c2c5' 4 years ago
Diamantis Tziotzios 2a52138124 Merge branch 'Development' 5 years ago
Diamantis Tziotzios 7cf64c18f2 Merge branch 'Development' 5 years ago
Diamantis Tziotzios 71d317bab7 license file 5 years ago
Ioannis Kalyvas cd8b3448f5 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot 6 years ago
Ioannis Kalyvas c3d4cb6fdd no message 6 years ago
Ioannis Kalyvas b0ccac191f no message 6 years ago
Ioannis Kalyvas 3b1f37ef22 no message 6 years ago
Ioannis Kalyvas b8e040ee94 Merge branch 'master' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot
# Conflicts:
#	dmp-backend/src/main/java/eu/eudat/helpers/Transformers.java
6 years ago
Ioannis Kalyvas 50444a0b73 Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot
# Conflicts:
#	dmp-backend/src/main/java/eu/eudat/helpers/Transformers.java
#	dmp-frontend/src/index.html
6 years ago
Diamantis Tziotzios 85bdb7fad1 Merge branch 'Development'
# Conflicts:
#	dmp-backend/src/main/java/eu/eudat/helpers/Transformers.java
6 years ago
annabakouli b2e49fbb8a no message 6 years ago
Diamantis Tziotzios bfc6b63067 Merge branch 'Development'
# Conflicts:
#	dmp-backend/src/main/java/rest/entities/DMPs.java
#	dmp-backend/src/main/java/rest/entities/DataRepositories.java
#	dmp-backend/src/main/java/rest/entities/DatasetProfiles.java
#	dmp-backend/src/main/java/rest/entities/Datasets.java
#	dmp-backend/src/main/java/rest/entities/DmpProfiles.java
#	dmp-backend/src/main/java/rest/entities/Organisations.java
#	dmp-backend/src/main/java/rest/entities/Projects.java
#	dmp-backend/src/main/java/rest/entities/Registries.java
#	dmp-backend/src/main/java/rest/entities/Researchers.java
#	dmp-backend/src/main/java/rest/entities/Services.java
#	dmp-backend/src/main/java/rest/entities/Users.java
#	dmp-frontend/src/app/app.component.ts
#	dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.ts
#	dmp-frontend/src/assets/custom.js
#	dmp-frontend/src/index.html
6 years ago
Nikolaos Laskaris 9941c96dc2 Minor edits 7 years ago
Nikolaos Laskaris 06272c79da -- 7 years ago
Nikolaos Laskaris a00eec68d8 fixed glitches of google-sign-in component 7 years ago

11
.env

@ -1,6 +1,5 @@
TAG=6.3.0
ENV=prod
PROFILE=production
AOT=aot
ELASTIC_VERSION=6.3.0
ELASTIC_PASSWORD=changeme
PROFILE=docker
# Version of Elastic products
ELK_VERSION=7.17.4
STACK_VERSION=7.17.4

9
.gitignore vendored

@ -40,3 +40,12 @@ dmp-frontend/.vscode/
dmp-frontend/package-lock.json
dmp-backend/logging/target/
ELK.Docker/shared/data-elk/
# Eclipse
.project
.settings/
bin/
*.classpath
openDMP/dmp-backend/uploads/
openDMP/dmp-backend/tmp/
dmp-frontend/.angular/

66
Jenkinsfile vendored

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

@ -0,0 +1,69 @@
**Important note: The deployment, troubleshooting, maintenance and operation of on-premises / self-served OpenDMP instances for development, testing or production use, shall be the sole responsibility of the adopter. No support is guaranteed by OpenDMP implentation team for issues that may be encountered during deployment, extension or operation of such installations.**
**Documentation is provided on a best-effort basis for the code and processes around the development, deployment and operation of OpenDMP. If you find any misalignment of the actual processes with the related documentation, please let us know so that the misalignment is addressed for the benefit of future adopters.**
# Using Docker Compose with Argos
ARGOS is an open extensible service that simplifies the management, validation, monitoring and maintenance and of Data Management Plans. It allows actors (researchers, managers, supervisors etc) to create actionable DMPs that may be freely exchanged among infrastructures for carrying out specific aspects of the Data management process in accordance with the intentions and commitment of Data owners.
## Before running the docker compose commands, configurations must be set
### Database
First of all, database must be configured
The only file that has to be changed is **/dmp-db-scema/Docker/dmp-db.env**
```bash
ADMIN_USER: Admin username (app)
ADMIN_PASSWORD: Admin password (app)
POSTGRES_DB: database name
POSTGRES_USER: Admin username (database)
POSTGRES_PASSWORD: Admin password (database)
```
### Backend
Secondly, a few more options should be asigned
The file **/dmp-backend/web/src/main/resources/config/application-docker.properties** contains all the necessary properties
Values to be modified:
```bash
database.url: the url that is used to connect to database (JDBC based)
database.username: database admin username
database.password: database admin password
elasticsearch.*(optional): setup elastic, check Elasticsearch(optional) section below
google.login.clientId(optional): google as login provider
```
**NOTE:** if you want to configure and integrate other providers, check this reference [Setup configurable login](https://code-repo.d4science.org/MaDgiK-CITE/argos/wiki/Page-2A:-Setup-configurable-login)
If you provide google.login.clientId, then the same value should be set in the field named **loginProviders.googleConfiguration.clientId** which belongs to **/dmp-frontend/src/assets/config/config.json**
## You are ready to build and run the entire application using Docker-compose
1. Go to the project's root directory
2. Type in the **Terminal** `docker volume create --name=dmpdata`
3. Type in the **Terminal** `docker-compose up -d --build`
4. After it's complete your application is running on [http://localhost:8080](http://localhost:8080)
### Elasticsearch(optional)
If you want to set up elasticsearch, you will need the password for the **elastic** user
After your application is running, type in the **Terminal** `docker exec -it elasticsearch /bin/sh`
Run the command `cat data/passwords.txt` in the shell and save its output
Finally, run `exit` to get back to your terminal
The elastic's password that you get has to be set in the **elasticsearch.password** property in the backend configuration
Rerun the application
1. Type in the **Terminal** `docker-compose down`
2. Type in the **Terminal** `docker-compose up -d --build`

@ -1 +1 @@
PROFILE=staging
PROFILE=docker

@ -1,22 +1,22 @@
FROM maven:3-jdk-8-alpine AS MAVEN_BUILD
FROM maven:3-jdk-11 AS MAVEN_BUILD
COPY pom.xml /build/
COPY data /build/data/
COPY elastic /build/elastic/
COPY logging /build/logging/
#COPY logging /build/logging/
COPY queryable /build/queryable/
COPY web /build/web/
WORKDIR /build/
RUN mvn package
RUN mvn package -q
FROM openjdk:8-jre-alpine
FROM amazoncorretto:11
WORKDIR /app
COPY --from=MAVEN_BUILD /build/web/target/web-1.0-SNAPSHOT.jar /app.jar

@ -0,0 +1,15 @@
FROM maven:3-openjdk-11 AS MAVEN_BUILD
COPY pom.xml /build/
COPY data /build/data/
COPY elastic /build/elastic/
COPY queryable /build/queryable/
COPY web /build/web/
WORKDIR /build/
RUN mvn package
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"]

@ -25,5 +25,10 @@
<artifactId>elastic</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.20</version>
</dependency>
</dependencies>
</project>

@ -1,9 +1,9 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.queryable.queryableentity.DataEntity;
import io.swagger.annotations.ApiModelProperty;
public abstract class Criteria<T> {
@ApiModelProperty(value = "like", name = "like", dataType = "String", allowEmptyValue = true, example = "\"\"")
private String like;
public String getLike() {

@ -0,0 +1,16 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.DMPProfile;
public class DataManagementPlanBlueprintCriteria extends Criteria<DMPProfile> {
private Integer status;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}

@ -1,6 +1,7 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.DMP;
import eu.eudat.data.entities.DMPProfile;
import eu.eudat.data.entities.Grant;
import java.util.Date;
@ -10,6 +11,7 @@ import java.util.UUID;
public class DataManagementPlanCriteria extends Criteria<DMP> {
private Date periodStart;
private Date periodEnd;
private DMPProfile profile;
private List<eu.eudat.data.entities.Grant> grants;
private boolean allVersions;
private List<UUID> groupIds;
@ -21,6 +23,7 @@ public class DataManagementPlanCriteria extends Criteria<DMP> {
private boolean isPublic;
private boolean onlyPublic;
private Short grantStatus;
private boolean hasDoi;
public Date getPeriodStart() {
return periodStart;
@ -36,6 +39,13 @@ public class DataManagementPlanCriteria extends Criteria<DMP> {
this.periodEnd = periodEnd;
}
public DMPProfile getProfile() {
return profile;
}
public void setProfile(DMPProfile profile) {
this.profile = profile;
}
public List<Grant> getGrants() {
return grants;
}
@ -114,4 +124,12 @@ public class DataManagementPlanCriteria extends Criteria<DMP> {
public void setGrantStatus(Short grantStatus) {
this.grantStatus = grantStatus;
}
public boolean hasDoi() {
return hasDoi;
}
public void setHasDoi(boolean hasDoi) {
this.hasDoi = hasDoi;
}
}

@ -25,6 +25,7 @@ public class DatasetCriteria extends Criteria<Dataset> {
private List<UUID> groupIds;
private Boolean isPublic;
private Short grantStatus;
private boolean hasDoi;
public boolean getAllVersions() {
return allVersions;
@ -132,4 +133,12 @@ public class DatasetCriteria extends Criteria<Dataset> {
public void setGrantStatus(Short grantStatus) {
this.grantStatus = grantStatus;
}
public boolean hasDoi() {
return hasDoi;
}
public void setHasDoi(boolean hasDoi) {
this.hasDoi = hasDoi;
}
}

@ -1,11 +1,13 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class DatasetProfileCriteria extends Criteria<DatasetProfile> {
public class DatasetProfileCriteria extends Criteria<DescriptionTemplate> {
public enum DatasetProfileFilter {
DMPs((short) 0), Datasets((short) 1);
@ -23,7 +25,7 @@ public class DatasetProfileCriteria extends Criteria<DatasetProfile> {
case 1:
return Datasets;
default:
throw new RuntimeException("Unsupported DatasetProfile filter");
throw new RuntimeException("Unsupported DescriptionTemplate filter");
}
}
}
@ -34,6 +36,9 @@ public class DatasetProfileCriteria extends Criteria<DatasetProfile> {
private UUID userId;
private boolean finalized;
private Integer status;
private Integer role;
private List<UUID> ids;
private Date periodStart;
public boolean getAllVersions() { return allVersions; }
public void setAllVersions(boolean allVersions) { this.allVersions = allVersions; }
@ -69,4 +74,28 @@ public class DatasetProfileCriteria extends Criteria<DatasetProfile> {
public void setStatus(Integer status) {
this.status = status;
}
public Integer getRole() {
return role;
}
public void setRole(Integer role) {
this.role = role;
}
public List<UUID> getIds() {
return ids;
}
public void setIds(List<UUID> ids) {
this.ids = ids;
}
public Date getPeriodStart() {
return periodStart;
}
public void setPeriodStart(Date periodStart) {
this.periodStart = periodStart;
}
}

@ -1,11 +1,11 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import java.util.UUID;
public class DatasetProfileWizardCriteria extends Criteria<DatasetProfile> {
public class DatasetProfileWizardCriteria extends Criteria<DescriptionTemplate> {
private UUID id;
public UUID getId() {

@ -0,0 +1,6 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.EmailConfirmation;
public class EmailConfirmationCriteria extends Criteria<EmailConfirmation>{
}

@ -2,8 +2,12 @@ package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.Funder;
import java.util.Date;
public class FunderCriteria extends Criteria<Funder> {
private String reference;
private String exactReference;
private Date periodStart;
public String getReference() {
return reference;
@ -11,4 +15,20 @@ public class FunderCriteria extends Criteria<Funder> {
public void setReference(String reference) {
this.reference = reference;
}
public String getExactReference() {
return exactReference;
}
public void setExactReference(String exactReference) {
this.exactReference = exactReference;
}
public Date getPeriodStart() {
return periodStart;
}
public void setPeriodStart(Date periodStart) {
this.periodStart = periodStart;
}
}

@ -13,6 +13,8 @@ public class GrantCriteria extends Criteria<Grant> {
private boolean isPublic;
private String funderId;
private String funderReference;
private String exactReference;
private boolean isActive;
public Date getPeriodStart() {
return periodStart;
@ -62,4 +64,20 @@ public class GrantCriteria extends Criteria<Grant> {
public void setFunderReference(String funderReference) {
this.funderReference = funderReference;
}
public String getExactReference() {
return exactReference;
}
public void setExactReference(String exactReference) {
this.exactReference = exactReference;
}
public boolean isActive() {
return isActive;
}
public void setActive(boolean active) {
isActive = active;
}
}

@ -1,6 +0,0 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.LoginConfirmationEmail;
public class LoginConfirmationEmailCriteria extends Criteria<LoginConfirmationEmail>{
}

@ -5,6 +5,7 @@ import eu.eudat.data.entities.Organisation;
public class OrganisationCriteria extends Criteria<Organisation> {
private String labelLike;
private Boolean isPublic;
private boolean isActive;
public String getLabelLike() {
return labelLike;
@ -19,4 +20,12 @@ public class OrganisationCriteria extends Criteria<Organisation> {
public void setPublic(Boolean aPublic) {
isPublic = aPublic;
}
public boolean isActive() {
return isActive;
}
public void setActive(boolean active) {
isActive = active;
}
}

@ -2,8 +2,12 @@ package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.Project;
import java.util.Date;
public class ProjectCriteria extends Criteria<Project> {
private String reference;
private String exactReference;
private Date periodStart;
public String getReference() {
return reference;
@ -11,4 +15,20 @@ public class ProjectCriteria extends Criteria<Project> {
public void setReference(String reference) {
this.reference = reference;
}
public String getExactReference() {
return exactReference;
}
public void setExactReference(String exactReference) {
this.exactReference = exactReference;
}
public Date getPeriodStart() {
return periodStart;
}
public void setPeriodStart(Date periodStart) {
this.periodStart = periodStart;
}
}

@ -2,8 +2,12 @@ package eu.eudat.data.dao.criteria;
import eu.eudat.data.entities.Researcher;
import java.util.Date;
public class ResearcherCriteria extends Criteria<Researcher> {
private String name;
private String reference;
private Date periodStart;
public String getName() {
return name;
@ -12,4 +16,20 @@ public class ResearcherCriteria extends Criteria<Researcher> {
public void setName(String name) {
this.name = name;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public Date getPeriodStart() {
return periodStart;
}
public void setPeriodStart(Date periodStart) {
this.periodStart = periodStart;
}
}

@ -7,6 +7,7 @@ import eu.eudat.queryable.queryableentity.DataEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.Set;
@ -28,6 +29,7 @@ public class DatabaseService<T extends DataEntity> {
return this.databaseCtx.getQueryable(tClass);
}
@Transactional
public T createOrUpdate(T item, Class<T> tClass) {
return this.databaseCtx.createOrUpdate(item, tClass);
}

@ -16,6 +16,7 @@ import org.springframework.stereotype.Component;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.transaction.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@ -41,6 +42,8 @@ public class DMPDaoImpl extends DatabaseAccess<DMP> implements DMPDao {
query.where((builder, root) -> builder.lessThan(root.get("created"), criteria.getPeriodEnd()));
if (criteria.getPeriodStart() != null)
query.where((builder, root) -> builder.greaterThan(root.get("created"), criteria.getPeriodStart()));
if (criteria.getProfile() != null)
query.where((builder, root) -> builder.equal(root.get("profile"), criteria.getProfile()));
if (criteria.getGrants() != null && !criteria.getGrants().isEmpty())
query.where(((builder, root) -> root.get("grant").in(criteria.getGrants())));
if (!criteria.getAllVersions())
@ -52,13 +55,14 @@ public class DMPDaoImpl extends DatabaseAccess<DMP> implements DMPDao {
query.where((builder, root) -> root.get("groupId").in(criteria.getGroupIds()));
if (criteria.getStatus() != null) {
if (criteria.getStatus() == DMP.DMPStatus.FINALISED.getValue()) {
query.where((builder, root) -> builder.and(builder.equal(root.get("status"), DMP.DMPStatus.FINALISED.getValue()), builder.notEqual(root.get("isPublic"), true)));
query.where((builder, root) -> builder.equal(root.get("status"), DMP.DMPStatus.FINALISED.getValue()));
} else if (criteria.getStatus() == DMP.DMPStatus.ACTIVE.getValue()) {
query.where((builder, root) -> builder.equal(root.get("status"), DMP.DMPStatus.ACTIVE.getValue()));
}
}
if (criteria.getIsPublic())
query.where(((builder, root) -> builder.equal(root.get("isPublic"), true)));
if (criteria.getIsPublic()) {
query.where(((builder, root) -> builder.equal(root.get("isPublic"), criteria.getIsPublic())));
}
/*if (criteria.getRole() != null) {
if (criteria.getRole().equals(UserDMP.UserDMPRoles.OWNER.getValue())) {
query.where((builder, root) -> builder.equal(root.join("users", JoinType.LEFT).get("role"), UserDMP.UserDMPRoles.OWNER.getValue()));
@ -73,7 +77,7 @@ public class DMPDaoImpl extends DatabaseAccess<DMP> implements DMPDao {
query.where((builder, root) -> root.join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators()));
}
if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty()) {
query.where((builder, root) -> root.join("associatedDmps", JoinType.LEFT).get("id").in(criteria.getDatasetTemplates()));
query.where((builder, root) -> root.join("associatedDmps", JoinType.LEFT).get("datasetprofile").get("id").in(criteria.getDatasetTemplates()));
}
if (criteria.getGrantStatus() != null) {
if (criteria.getGrantStatus().equals(GrantStateType.FINISHED.getValue().shortValue()))
@ -83,6 +87,10 @@ public class DMPDaoImpl extends DatabaseAccess<DMP> implements DMPDao {
builder.or(builder.greaterThan(root.get("grant").get("enddate"), new Date())
, builder.isNull(root.get("grant").get("enddate"))));
}
if (criteria.hasDoi()) {
query.where((builder, root) -> builder.not(builder.isNull(root.join("dois").get("id"))));
}
query.where((builder, root) -> builder.notEqual(root.get("status"), DMP.DMPStatus.DELETED.getValue()));
return query;
}
@ -101,6 +109,7 @@ public class DMPDaoImpl extends DatabaseAccess<DMP> implements DMPDao {
}
@Override
@Transactional
public DMP createOrUpdate(DMP item) {
return this.getDatabaseService().createOrUpdate(item, DMP.class);
}

@ -1,6 +1,7 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.dao.criteria.DataManagementPlanBlueprintCriteria;
import eu.eudat.data.dao.criteria.DataManagementPlanProfileCriteria;
import eu.eudat.data.entities.DMP;
import eu.eudat.data.entities.DMPProfile;
@ -15,4 +16,6 @@ public interface DMPProfileDao extends DatabaseAccessLayer<DMPProfile, UUID> {
QueryableList<DMPProfile> getWithCriteria(DataManagementPlanProfileCriteria criteria);
QueryableList<DMPProfile> getWithCriteriaBlueprint(DataManagementPlanBlueprintCriteria criteria);
}

@ -1,6 +1,7 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.criteria.DataManagementPlanBlueprintCriteria;
import eu.eudat.data.dao.criteria.DataManagementPlanProfileCriteria;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.DMPProfile;
@ -65,4 +66,20 @@ public class DMPProfileDaoImpl extends DatabaseAccess<DMPProfile> implements DMP
query.where(((builder, root) -> builder.notEqual(root.get("status"), DMPProfile.Status.DELETED.getValue())));
return query;
}
@Override
public QueryableList<DMPProfile> getWithCriteriaBlueprint(DataManagementPlanBlueprintCriteria criteria){
QueryableList<DMPProfile> query = getDatabaseService().getQueryable(DMPProfile.class);
if (criteria.getLike() != null && !criteria.getLike().isEmpty())
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"));
if (criteria.getStatus() != null) {
if (criteria.getStatus() == DMPProfile.Status.FINALIZED.getValue()) {
query.where((builder, root) -> builder.equal(root.get("status"), DMPProfile.Status.FINALIZED.getValue()));
} else if (criteria.getStatus() == DMPProfile.Status.SAVED.getValue()) {
query.where((builder, root) -> builder.equal(root.get("status"), DMPProfile.Status.SAVED.getValue()));
}
}
query.where(((builder, root) -> builder.notEqual(root.get("status"), DMPProfile.Status.DELETED.getValue())));
return query;
}
}

@ -13,6 +13,8 @@ public interface DatasetDao extends DatabaseAccessLayer<Dataset, UUID> {
QueryableList<Dataset> getWithCriteria(DatasetCriteria criteria);
QueryableList<Dataset> filterFromElastic(DatasetCriteria criteria, List<UUID> ids);
QueryableList<Dataset> getAuthenticated(QueryableList<Dataset> query, UserInfo principal, List<Integer> roles);
Dataset isPublicDataset(UUID id);

@ -35,9 +35,9 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
if (criteria.getIsPublic() != null && criteria.getIsPublic()) {
query.where((builder, root) -> builder.equal(root.get("dmp").get("isPublic"), true));
query.where((builder, root) -> builder.equal(root.get("status"), Dataset.Status.FINALISED.getValue()));
query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"),
/*query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"),
query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")),
Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));
Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));*/
}
if (criteria.getLike() != null && !criteria.getLike().isEmpty())
query.where((builder, root) -> builder.or(
@ -78,11 +78,25 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
query.where((builder, root) -> root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators()));
if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty())
query.where((builder, root) -> root.get("profile").get("id").in(criteria.getDatasetTemplates()));
if (criteria.hasDoi()) {
query.where((builder, root) -> builder.not(builder.isNull(root.join("dmp").join("dois").get("id"))));
}
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()));
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue()));
return query;
}
public QueryableList<Dataset> filterFromElastic(DatasetCriteria criteria, List<UUID> ids) {
QueryableList<Dataset> query = getDatabaseService().getQueryable(Dataset.getHints(), Dataset.class);
query.where(((builder, root) -> root.get("id").in(ids)));
if (!criteria.getAllVersions())
query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"), query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.and(builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")), builder1.notEqual(nestedRoot.get("dmp").get("status"), DMP.DMPStatus.DELETED.getValue())), Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));
return query;
}
@Override
public Dataset createOrUpdate(Dataset item) {
return getDatabaseService().createOrUpdate(item, Dataset.class);
@ -117,6 +131,7 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
});
} else {
query.where((builder, root) -> builder.equal(root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id"), principal.getId()));
}
return query;
}

@ -3,7 +3,6 @@ package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.DatasetExternalDataset;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;

@ -2,15 +2,23 @@ package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.dao.criteria.DatasetProfileCriteria;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import eu.eudat.data.entities.DescriptionTemplateType;
import eu.eudat.queryable.QueryableList;
import java.util.List;
import java.util.UUID;
public interface DatasetProfileDao extends DatabaseAccessLayer<DatasetProfile, UUID> {
public interface DatasetProfileDao extends DatabaseAccessLayer<DescriptionTemplate, UUID> {
QueryableList<DatasetProfile> getWithCriteria(DatasetProfileCriteria criteria);
QueryableList<DescriptionTemplate> getWithCriteria(DatasetProfileCriteria criteria);
QueryableList<DatasetProfile> getAll();
QueryableList<DescriptionTemplate> getAll();
QueryableList<DescriptionTemplate> getAuthenticated(QueryableList<DescriptionTemplate> query, UUID principal, List<Integer> roles);
List<DescriptionTemplate> getAllIds();
Long countWithType(DescriptionTemplateType type);
}

@ -3,7 +3,8 @@ package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.criteria.DatasetProfileCriteria;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import eu.eudat.data.entities.DescriptionTemplateType;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.types.FieldSelectionType;
import eu.eudat.queryable.types.SelectionField;
@ -11,22 +12,25 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("datasetProfileDao")
public class DatasetProfileDaoImpl extends DatabaseAccess<DatasetProfile> implements DatasetProfileDao {
public class DatasetProfileDaoImpl extends DatabaseAccess<DescriptionTemplate> implements DatasetProfileDao {
@Autowired
public DatasetProfileDaoImpl(DatabaseService<DatasetProfile> databaseService) {
public DatasetProfileDaoImpl(DatabaseService<DescriptionTemplate> databaseService) {
super(databaseService);
}
@Override
public QueryableList<DatasetProfile> getWithCriteria(DatasetProfileCriteria criteria) {
QueryableList<DatasetProfile> query = getDatabaseService().getQueryable(DatasetProfile.class);
public QueryableList<DescriptionTemplate> getWithCriteria(DatasetProfileCriteria criteria) {
QueryableList<DescriptionTemplate> query = getDatabaseService().getQueryable(DescriptionTemplate.class);
if (criteria.getLike() != null && !criteria.getLike().isEmpty())
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"));
if (!criteria.getAllVersions())
@ -55,47 +59,76 @@ public class DatasetProfileDaoImpl extends DatabaseAccess<DatasetProfile> implem
if (criteria.getStatus() != null) {
query.where(((builder, root) -> builder.equal(root.get("status"), criteria.getStatus())));
}
if (criteria.getIds() != null) {
query.where(((builder, root) -> root.get("id").in(criteria.getIds())));
}
if (criteria.getFinalized()) {
query.where(((builder, root) -> builder.equal(root.get("status"), DatasetProfile.Status.FINALIZED.getValue())));
query.where(((builder, root) -> builder.equal(root.get("status"), DescriptionTemplate.Status.FINALIZED.getValue())));
} else {
query.where(((builder, root) -> builder.notEqual(root.get("status"), DatasetProfile.Status.DELETED.getValue())));
query.where(((builder, root) -> builder.notEqual(root.get("status"), DescriptionTemplate.Status.DELETED.getValue())));
}
if (criteria.getPeriodStart() != null)
query.where((builder, root) -> builder.greaterThanOrEqualTo(root.get("created"), criteria.getPeriodStart()));
return query;
}
@Override
public DatasetProfile createOrUpdate(DatasetProfile item) {
return this.getDatabaseService().createOrUpdate(item, DatasetProfile.class);
public DescriptionTemplate createOrUpdate(DescriptionTemplate item) {
return this.getDatabaseService().createOrUpdate(item, DescriptionTemplate.class);
}
@Override
public DescriptionTemplate find(UUID id) {
return getDatabaseService().getQueryable(DescriptionTemplate.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
}
@Override
public DatasetProfile find(UUID id) {
return getDatabaseService().getQueryable(DatasetProfile.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
public QueryableList<DescriptionTemplate> getAll() {
return getDatabaseService().getQueryable(DescriptionTemplate.class);
}
@Override
public QueryableList<DatasetProfile> getAll() {
return getDatabaseService().getQueryable(DatasetProfile.class);
public List<DescriptionTemplate> getAllIds(){
return getDatabaseService().getQueryable(DescriptionTemplate.class).withFields(Collections.singletonList("id")).toList();
}
@Override
public void delete(DatasetProfile item) {
public void delete(DescriptionTemplate item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<DatasetProfile> asQueryable() {
return this.getDatabaseService().getQueryable(DatasetProfile.class);
public QueryableList<DescriptionTemplate> asQueryable() {
return this.getDatabaseService().getQueryable(DescriptionTemplate.class);
}
@Async
@Override
public CompletableFuture<DatasetProfile> createOrUpdateAsync(DatasetProfile item) {
public CompletableFuture<DescriptionTemplate> createOrUpdateAsync(DescriptionTemplate item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public DatasetProfile find(UUID id, String hint) {
public DescriptionTemplate find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
@Override
public QueryableList<DescriptionTemplate> getAuthenticated(QueryableList<DescriptionTemplate> query, UUID principal, List<Integer> roles) {
if (roles != null && !roles.isEmpty()) {
query.where((builder, root) -> {
Join userJoin = root.join("users", JoinType.LEFT);
return builder.and(builder.equal(userJoin.join("user", JoinType.LEFT).get("id"), principal), userJoin.get("role").in(roles));
});
} else {
query.where((builder, root) -> builder.equal(root.join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id"), principal));
}
return query;
}
@Override
public Long countWithType(DescriptionTemplateType type) {
return this.getDatabaseService().getQueryable(DescriptionTemplate.class).where((builder, root) -> builder.equal(root.get("type"), type)).count();
}
}

@ -1,7 +1,6 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DatasetService;
import java.util.UUID;

@ -2,8 +2,6 @@ package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.DatasetExternalDataset;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DatasetService;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;

@ -0,0 +1,10 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.DescriptionTemplateType;
import java.util.UUID;
public interface DescriptionTemplateTypeDao extends DatabaseAccessLayer<DescriptionTemplateType, UUID> {
DescriptionTemplateType findFromName(String name);
}

@ -0,0 +1,65 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.DescriptionTemplateType;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.transaction.Transactional;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("descriptionTemplateTypeDao")
public class DescriptionTemplateTypeDaoImpl extends DatabaseAccess<DescriptionTemplateType> implements DescriptionTemplateTypeDao {
@Autowired
public DescriptionTemplateTypeDaoImpl(DatabaseService<DescriptionTemplateType> databaseService) {
super(databaseService);
}
@Override
public DescriptionTemplateType findFromName(String name){
try {
return this.getDatabaseService().getQueryable(DescriptionTemplateType.class).where((builder, root) -> builder.and(builder.equal(root.get("name"), name), builder.notEqual(root.get("status"), DescriptionTemplateType.Status.DELETED.getValue()))).getSingle();
}
catch(Exception e){
return null;
}
}
@Override
@Transactional
public DescriptionTemplateType createOrUpdate(DescriptionTemplateType item) {
return this.getDatabaseService().createOrUpdate(item, DescriptionTemplateType.class);
}
@Override
public DescriptionTemplateType find(UUID id) {
return getDatabaseService().getQueryable(DescriptionTemplateType.class).where((builder, root) -> builder.equal((root.get("id")), id)).getSingle();
}
@Override
public void delete(DescriptionTemplateType item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<DescriptionTemplateType> asQueryable() {
return this.getDatabaseService().getQueryable(DescriptionTemplateType.class).where((builder, root) -> builder.notEqual((root.get("status")), DescriptionTemplateType.Status.DELETED.getValue()));
}
@Async
@Override
public CompletableFuture<DescriptionTemplateType> createOrUpdateAsync(DescriptionTemplateType item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public DescriptionTemplateType find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
}

@ -0,0 +1,9 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.DMPDatasetProfile;
import java.util.UUID;
public interface DmpDatasetProfileDao extends DatabaseAccessLayer<DMPDatasetProfile, UUID> {
}

@ -0,0 +1,52 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.Content;
import eu.eudat.data.entities.DMPDatasetProfile;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Service("dmpDatasetProfileDao")
public class DmpDatasetProfileDaoImpl extends DatabaseAccess<DMPDatasetProfile> implements DmpDatasetProfileDao {
@Autowired
public DmpDatasetProfileDaoImpl(DatabaseService<DMPDatasetProfile> databaseService) {
super(databaseService);
}
@Override
public DMPDatasetProfile createOrUpdate(DMPDatasetProfile item) {
return this.getDatabaseService().createOrUpdate(item, DMPDatasetProfile.class);
}
@Override
@Async
public CompletableFuture<DMPDatasetProfile> createOrUpdateAsync(DMPDatasetProfile item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public DMPDatasetProfile find(UUID id) {
return this.getDatabaseService().getQueryable(DMPDatasetProfile.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
}
@Override
public DMPDatasetProfile find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
@Override
public void delete(DMPDatasetProfile item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<DMPDatasetProfile> asQueryable() {
return this.getDatabaseService().getQueryable(DMPDatasetProfile.class);
}
}

@ -1,11 +0,0 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.DoiFunder;
import java.util.UUID;
public interface DoiFunderDao extends DatabaseAccessLayer<DoiFunder, UUID> {
DoiFunder findFunderByName(String name);
}

@ -1,55 +0,0 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.DoiFunder;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("DoiFunderDao")
public class DoiFunderDaoImpl extends DatabaseAccess<DoiFunder> implements DoiFunderDao {
@Autowired
public DoiFunderDaoImpl(DatabaseService<DoiFunder> databaseService) {
super(databaseService);
}
@Override
public DoiFunder findFunderByName(String name) {
return this.asQueryable().toList().stream().filter(doiFunder -> name.contains(doiFunder.getName()) || doiFunder.getName().contains(name)).findFirst().orElse(null);
}
@Override
public DoiFunder createOrUpdate(DoiFunder item) {
return this.getDatabaseService().createOrUpdate(item, DoiFunder.class);
}
@Override
public CompletableFuture<DoiFunder> createOrUpdateAsync(DoiFunder item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public DoiFunder find(UUID id) {
return this.getDatabaseService().getQueryable(DoiFunder.class).where(((builder, root) -> builder.equal(root.get("id"), id))).getSingle();
}
@Override
public DoiFunder find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
@Override
public void delete(DoiFunder item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<DoiFunder> asQueryable() {
return this.getDatabaseService().getQueryable(DoiFunder.class);
}
}

@ -0,0 +1,13 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.dao.criteria.EmailConfirmationCriteria;
import eu.eudat.data.entities.EmailConfirmation;
import eu.eudat.queryable.QueryableList;
import java.util.UUID;
public interface EmailConfirmationDao extends DatabaseAccessLayer<EmailConfirmation, UUID> {
QueryableList<EmailConfirmation> getWithCriteria(EmailConfirmationCriteria criteria);
}

@ -0,0 +1,56 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.criteria.EmailConfirmationCriteria;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.EmailConfirmation;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Service("LoginConfirmationEmailDao")
public class EmailConfirmationDaoImpl extends DatabaseAccess<EmailConfirmation> implements EmailConfirmationDao {
@Autowired
public EmailConfirmationDaoImpl(DatabaseService<EmailConfirmation> databaseService) {
super(databaseService);
}
@Override
public QueryableList<EmailConfirmation> getWithCriteria(EmailConfirmationCriteria criteria) {
return null;
}
@Override
public EmailConfirmation createOrUpdate(EmailConfirmation item) {
return this.getDatabaseService().createOrUpdate(item, EmailConfirmation.class);
}
@Override
public CompletableFuture<EmailConfirmation> createOrUpdateAsync(EmailConfirmation item) {
return null;
}
@Override
public EmailConfirmation find(UUID id) {
return this.getDatabaseService().getQueryable(EmailConfirmation.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
}
@Override
public EmailConfirmation find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
@Override
public void delete(EmailConfirmation item) {
throw new UnsupportedOperationException();
}
@Override
public QueryableList<EmailConfirmation> asQueryable() {
return this.getDatabaseService().getQueryable(EmailConfirmation.class);
}
}

@ -0,0 +1,10 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.EntityDoi;
import java.util.UUID;
public interface EntityDoiDao extends DatabaseAccessLayer<EntityDoi, UUID> {
EntityDoi findFromDoi(String doi);
}

@ -0,0 +1,56 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.EntityDoi;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("EntityDoiDao")
public class EntityDoiDaoImpl extends DatabaseAccess<EntityDoi> implements EntityDoiDao {
@Autowired
public EntityDoiDaoImpl(DatabaseService<EntityDoi> databaseService){
super(databaseService);
}
@Override
public EntityDoi createOrUpdate(EntityDoi item) {
return this.getDatabaseService().createOrUpdate(item, EntityDoi.class);
}
@Override
public CompletableFuture<EntityDoi> createOrUpdateAsync(EntityDoi item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public EntityDoi find(UUID id) {
return this.getDatabaseService().getQueryable(EntityDoi.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
}
@Override
public EntityDoi findFromDoi(String doi) {
return this.getDatabaseService().getQueryable(EntityDoi.class).where((builder, root) -> builder.equal(root.get("doi"), doi)).getSingle();
}
@Override
public EntityDoi find(UUID id, String hint) {
return null;
}
@Override
public void delete(EntityDoi item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<EntityDoi> asQueryable() {
return this.getDatabaseService().getQueryable(EntityDoi.class);
}
}

@ -0,0 +1,11 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.FileUpload;
import java.util.List;
import java.util.UUID;
public interface FileUploadDao extends DatabaseAccessLayer<FileUpload, UUID> {
List<FileUpload> getFileUploads(UUID entityId);
}

@ -0,0 +1,56 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.FileUpload;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("FileUploadDao")
public class FileUploadDaoImpl extends DatabaseAccess<FileUpload> implements FileUploadDao {
@Autowired
public FileUploadDaoImpl(DatabaseService<FileUpload> databaseService) {
super(databaseService);
}
@Override
public FileUpload createOrUpdate(FileUpload item) {
return getDatabaseService().createOrUpdate(item, FileUpload.class);
}
//
@Override
public CompletableFuture<FileUpload> createOrUpdateAsync(FileUpload item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public FileUpload find(UUID id) {
return getDatabaseService().getQueryable(FileUpload.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
}
@Override
public List<FileUpload> getFileUploads(UUID entityId) {
return this.getDatabaseService().getQueryable(FileUpload.class).where((builder, root) -> builder.equal(root.get("entityId"), entityId)).toList();
}
@Override
public FileUpload find(UUID id, String hint) {
return null;
}
@Override
public void delete(FileUpload item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<FileUpload> asQueryable() {
return this.getDatabaseService().getQueryable(FileUpload.class);
}
}

@ -29,6 +29,10 @@ public class FunderDaoImpl extends DatabaseAccess<Funder> implements FunderDao {
builder.or(builder.like(builder.upper(root.get("definition")), "%" + criteria.getLike().toUpperCase() + "%"))));
if (criteria.getReference() != null)
query.where((builder, root) -> builder.like(builder.upper(root.get("reference")), "%" + criteria.getReference().toUpperCase() + "%"));
if (criteria.getExactReference() != null)
query.where((builder, root) -> builder.like(builder.upper(root.get("reference")), criteria.getExactReference().toUpperCase()));
if (criteria.getPeriodStart() != null)
query.where((builder, root) -> builder.greaterThanOrEqualTo(root.get("created"), criteria.getPeriodStart()));
query.where((builder, root) -> builder.notEqual(root.get("status"), Funder.Status.DELETED.getValue()));
return query;
}

@ -39,6 +39,8 @@ public class GrantDaoImpl extends DatabaseAccess<Grant> implements GrantDao {
query.where((builder, root) -> builder.greaterThan(root.get("startdate"), criteria.getPeriodStart()));
if (criteria.getReference() != null)
query.where((builder, root) -> builder.like(root.get("reference"), "%" + criteria.getReference() + "%"));
if (criteria.getExactReference() != null)
query.where((builder, root) -> builder.like(root.get("reference"), criteria.getExactReference()));
if (criteria.getGrantStateType() != null) {
if (criteria.getGrantStateType().equals(GrantStateType.FINISHED.getValue()))
query.where((builder, root) -> builder.lessThan(root.get("enddate"), new Date()));
@ -50,6 +52,10 @@ public class GrantDaoImpl extends DatabaseAccess<Grant> implements GrantDao {
if (criteria.isPublic()) {
query.where((builder, root) -> builder.equal(root.join("dmps").get("status"), DMP.DMPStatus.FINALISED.getValue())).distinct();
}
if (criteria.isActive()) {
query.where((builder, root) -> builder.notEqual(root.join("dmps").get("status"), DMP.DMPStatus.DELETED.getValue())).distinct();
}
if (criteria.getFunderId() != null && !criteria.getFunderId().trim().isEmpty())
query.where((builder, root) -> builder.equal(root.get("funder").get("id"), UUID.fromString(criteria.getFunderId())));
if (criteria.getFunderReference() != null && !criteria.getFunderReference().isEmpty())
@ -79,7 +85,7 @@ public class GrantDaoImpl extends DatabaseAccess<Grant> implements GrantDao {
}
public QueryableList<Grant> getAuthenticated(QueryableList<Grant> query, UserInfo principal) {
query.where((builder, root) -> builder.or(builder.equal(root.get("creationUser"), principal), builder.equal(root.join("dmps", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id"), principal.getId()))).distinct();
query.where((builder, root) -> builder.equal(root.get("creationUser").get("id"), principal.getId())).distinct();
return query;
}

@ -1,13 +0,0 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.dao.criteria.LoginConfirmationEmailCriteria;
import eu.eudat.data.entities.LoginConfirmationEmail;
import eu.eudat.queryable.QueryableList;
import java.util.UUID;
public interface LoginConfirmationEmailDao extends DatabaseAccessLayer<LoginConfirmationEmail, UUID> {
QueryableList<LoginConfirmationEmail> getWithCriteria(LoginConfirmationEmailCriteria criteria);
}

@ -1,56 +0,0 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.criteria.LoginConfirmationEmailCriteria;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.LoginConfirmationEmail;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Service("LoginConfirmationEmailDao")
public class LoginConfirmationEmailDaoImpl extends DatabaseAccess<LoginConfirmationEmail> implements LoginConfirmationEmailDao {
@Autowired
public LoginConfirmationEmailDaoImpl(DatabaseService<LoginConfirmationEmail> databaseService) {
super(databaseService);
}
@Override
public QueryableList<LoginConfirmationEmail> getWithCriteria(LoginConfirmationEmailCriteria criteria) {
return null;
}
@Override
public LoginConfirmationEmail createOrUpdate(LoginConfirmationEmail item) {
return this.getDatabaseService().createOrUpdate(item, LoginConfirmationEmail.class);
}
@Override
public CompletableFuture<LoginConfirmationEmail> createOrUpdateAsync(LoginConfirmationEmail item) {
return null;
}
@Override
public LoginConfirmationEmail find(UUID id) {
return this.getDatabaseService().getQueryable(LoginConfirmationEmail.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingle();
}
@Override
public LoginConfirmationEmail find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
@Override
public void delete(LoginConfirmationEmail item) {
throw new UnsupportedOperationException();
}
@Override
public QueryableList<LoginConfirmationEmail> asQueryable() {
return this.getDatabaseService().getQueryable(LoginConfirmationEmail.class);
}
}

@ -26,14 +26,23 @@ public class OrganisationDaoImpl extends DatabaseAccess<Organisation> implements
@Override
public QueryableList<Organisation> getWithCriteria(OrganisationCriteria criteria) {
QueryableList<Organisation> query = this.getDatabaseService().getQueryable(Organisation.class);
if (criteria.getLike() != null)
query.where((builder, root) -> builder.equal(root.get("reference"), criteria.getLike()));
if (criteria.getLabelLike() != null) {
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLabelLike().toUpperCase() + "%"));
if (criteria.getLabelLike() != null && criteria.getLike() != null) {
query.where((builder, root) -> builder.or(builder.equal(root.get("reference"), criteria.getLike()), builder.like(builder.upper(root.get("label")), "%" + criteria.getLabelLike().toUpperCase() + "%")));
} else {
if (criteria.getLike() != null)
query.where((builder, root) -> builder.equal(root.get("reference"), criteria.getLike()));
if (criteria.getLabelLike() != null) {
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLabelLike().toUpperCase() + "%"));
}
if (criteria.getPublic() != null && criteria.getPublic()) {
query.where((builder, root) -> builder.equal(root.join("dmps", JoinType.LEFT).get("status"), DMP.DMPStatus.FINALISED.getValue()));
}
}
if (criteria.getPublic() != null && criteria.getPublic()) {
query.where((builder, root) -> builder.equal(root.join("dmps", JoinType.LEFT).get("status"), DMP.DMPStatus.FINALISED.getValue()));
if (criteria.isActive()) {
query.where((builder, root) -> builder.notEqual(root.join("dmps").get("status"), DMP.DMPStatus.DELETED.getValue())).distinct();
}
return query;
}
@ -64,7 +73,7 @@ public class OrganisationDaoImpl extends DatabaseAccess<Organisation> implements
}
public QueryableList<Organisation> getAuthenticated(QueryableList<Organisation> query, UserInfo principal) {
query.where((builder, root) -> builder.equal(root.join("dmps").get("creator"), principal));
query.where((builder, root) -> builder.equal(root.join("dmps").join("users").get("user"), principal));
return query;
}

@ -28,6 +28,10 @@ public class ProjectDaoImpl extends DatabaseAccess<Project> implements ProjectDa
builder.or(builder.like(builder.upper(root.get("description")), "%" + criteria.getLike().toUpperCase() + "%"))));
if (criteria.getReference() != null)
query.where((builder, root) -> builder.like(root.get("reference"), "%" + criteria.getReference() + "%"));
if (criteria.getExactReference() != null)
query.where((builder, root) -> builder.like(root.get("reference"), criteria.getExactReference()));
if (criteria.getPeriodStart() != null)
query.where((builder, root) -> builder.greaterThanOrEqualTo(root.get("startdate"), criteria.getPeriodStart()));
query.where((builder, root) -> builder.notEqual(root.get("status"), Project.Status.DELETED.getValue()));
return query;
}

@ -24,9 +24,13 @@ public class ResearcherDaoImpl extends DatabaseAccess<Researcher> implements Res
public QueryableList<Researcher> getWithCriteria(ResearcherCriteria criteria) {
QueryableList<Researcher> query = asQueryable();
if (criteria.getLike() != null && !criteria.getLike().isEmpty())
query.where((builder, root) ->builder.or(builder.like(builder.upper(root.get("reference")), "%" + criteria.getLike().toUpperCase() + "%")));
query.where((builder, root) ->builder.or(builder.like(builder.lower(root.get("reference")), "%" + criteria.getLike().toLowerCase() + "%")));
if (criteria.getName() != null && !criteria.getName().isEmpty())
query.where((builder, root) ->builder.or(builder.like(builder.upper(root.get("label")), "%" + criteria.getName().toUpperCase() + "%")));
query.where((builder, root) ->builder.or(builder.like(builder.lower(root.get("label")), "%" + criteria.getName().toLowerCase() + "%")));
if (criteria.getReference() != null && !criteria.getReference().isEmpty())
query.where((builder, root) ->builder.or(builder.like(root.get("reference"), criteria.getReference())));
if (criteria.getPeriodStart() != null)
query.where((builder, root) -> builder.greaterThanOrEqualTo(root.get("created"), criteria.getPeriodStart()));
return query;
}

@ -0,0 +1,13 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.UserDMP;
import eu.eudat.data.entities.UserDatasetProfile;
import java.util.UUID;
/**
* Created by ikalyvas on 2/8/2018.
*/
public interface UserDatasetProfileDao extends DatabaseAccessLayer<UserDatasetProfile, UUID> {
}

@ -0,0 +1,53 @@
package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.entities.UserDMP;
import eu.eudat.data.entities.UserDatasetProfile;
import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("userDatasetProfileDao")
public class UserDatasetProfileDaoImpl extends DatabaseAccess<UserDatasetProfile> implements UserDatasetProfileDao {
@Autowired
public UserDatasetProfileDaoImpl(DatabaseService<UserDatasetProfile> databaseService) {
super(databaseService);
}
@Override
public UserDatasetProfile createOrUpdate(UserDatasetProfile item) {
return this.getDatabaseService().createOrUpdate(item, UserDatasetProfile.class);
}
@Override
public UserDatasetProfile find(UUID id) {
return this.getDatabaseService().getQueryable(UserDatasetProfile.class).where((builder, root) -> builder.equal(root.get("id"), id)).getSingleOrDefault();
}
@Override
public void delete(UserDatasetProfile item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<UserDatasetProfile> asQueryable() {
return this.getDatabaseService().getQueryable(UserDatasetProfile.class);
}
@Async
@Override
public CompletableFuture<UserDatasetProfile> createOrUpdateAsync(UserDatasetProfile item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
@Override
public UserDatasetProfile find(UUID id, String hint) {
throw new UnsupportedOperationException();
}
}

@ -26,6 +26,7 @@ public class UserInfoDaoImpl extends DatabaseAccess<UserInfo> implements UserInf
@Override
public QueryableList<UserInfo> getWithCriteria(UserInfoCriteria criteria) {
QueryableList<UserInfo> users = this.getDatabaseService().getQueryable(UserInfo.class);
users.where(((builder, root) -> builder.equal(root.get("userStatus"), 0)));
if (criteria.getAppRoles() != null && !criteria.getAppRoles().isEmpty())
users.where((builder, root) -> root.join("userRoles").get("role").in(criteria.getAppRoles()));
if (criteria.getLike() != null)

@ -2,7 +2,6 @@ package eu.eudat.data.dao.entities.security;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.entities.Credential;
import sun.security.krb5.Credentials;
import java.util.UUID;

@ -13,7 +13,7 @@ import java.util.UUID;
*/
@Entity
@Table(name = "\"Content\"")
public class Content implements DataEntity<Content, UUID> {
public class Content implements DataEntity<Content, UUID> { //IGNORE ME
public enum ParentType {
GRANT(0);

@ -34,6 +34,8 @@ public class Credential implements DataEntity<Credential, UUID> {
private Integer provider;
@Column(name = "\"Public\"", nullable = false)
private String publicValue;
@Column(name = "\"Email\"")
private String email;
@Column(name = "\"Secret\"", nullable = false)
private String secret;
@ -88,6 +90,14 @@ public class Credential implements DataEntity<Credential, UUID> {
this.publicValue = publicValue;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSecret() {
return secret;
}
@ -139,6 +149,7 @@ public class Credential implements DataEntity<Credential, UUID> {
public void update(Credential entity) {
this.status = entity.status;
this.publicValue = entity.getPublicValue();
this.email = entity.getEmail();
this.secret = entity.getSecret();
this.lastUpdateTime = new Date();
}

@ -15,21 +15,40 @@ import java.util.stream.Collectors;
@NamedEntityGraphs({
@NamedEntityGraph(
name = "dataManagementPlanListingModel",
attributeNodes = {@NamedAttributeNode("organisations"), @NamedAttributeNode("researchers"), @NamedAttributeNode("associatedDmps"),
@NamedAttributeNode("grant"), @NamedAttributeNode(value = "users", subgraph = "users"), @NamedAttributeNode("creator"), @NamedAttributeNode("profile"), @NamedAttributeNode("dataset")},
subgraphs = {
attributeNodes = {
@NamedAttributeNode("grant"), @NamedAttributeNode("creator"), @NamedAttributeNode("profile")}/*,*/
/*subgraphs = {
@NamedSubgraph(name = "users", attributeNodes = {@NamedAttributeNode("user")}),
}
}*/
),
@NamedEntityGraph(
name = "fullyDetailed",
attributeNodes = {
@NamedAttributeNode("grant"), @NamedAttributeNode("profile"),
@NamedAttributeNode("users"), @NamedAttributeNode("organisations"), @NamedAttributeNode("researchers")}),
@NamedAttributeNode(value = "users", subgraph = "users"), @NamedAttributeNode("organisations"), @NamedAttributeNode("researchers")
},
subgraphs = {
@NamedSubgraph(name = "users", attributeNodes = {@NamedAttributeNode("user")})
}
),
@NamedEntityGraph(
name = "dmpRecentActivity",
attributeNodes = {
@NamedAttributeNode("users"), @NamedAttributeNode("creator")})
@NamedAttributeNode("users"), @NamedAttributeNode("creator")}),
@NamedEntityGraph(
name = "recentDmpModel",
attributeNodes = {@NamedAttributeNode("organisations"), @NamedAttributeNode("researchers"), @NamedAttributeNode("associatedDmps"),
@NamedAttributeNode("grant"), @NamedAttributeNode(value = "users", subgraph = "users"), @NamedAttributeNode("creator"), @NamedAttributeNode("profile"), @NamedAttributeNode(value = "dataset", subgraph = "dataset")},
subgraphs = {
@NamedSubgraph(name = "users", attributeNodes = {@NamedAttributeNode("user")}),
@NamedSubgraph(name = "dataset", attributeNodes = {@NamedAttributeNode("id"), @NamedAttributeNode("label")})
}
),
@NamedEntityGraph(
name = "versionListingModel",
attributeNodes = {@NamedAttributeNode("id"), @NamedAttributeNode("groupId"), @NamedAttributeNode("version")}
)
})
public class DMP implements DataEntity<DMP, UUID> {
@ -93,12 +112,8 @@ public class DMP implements DataEntity<DMP, UUID> {
/*@Type(type = "eu.eudat.configurations.typedefinition.XMLType")
@Column(name = "\"AssociatedDmps\"", columnDefinition = "xml", nullable = true)
private String associatedDmps;*/
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "\"DMPDatasetProfile\"",
joinColumns = {@JoinColumn(name = "\"dmp\"", referencedColumnName = "\"ID\"")},
inverseJoinColumns = {@JoinColumn(name = "\"datasetprofile\"", referencedColumnName = "\"ID\"")}
)
private Set<DatasetProfile> associatedDmps;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "dmp")
private Set<DMPDatasetProfile> associatedDmps;
@ManyToOne(fetch = FetchType.LAZY)
@ -167,8 +182,8 @@ public class DMP implements DataEntity<DMP, UUID> {
@Convert(converter = DateToUTCConverter.class)
private Date publishedAt;
@Column(name = "\"DOI\"")
private String doi;
@OneToMany(mappedBy = "entityId", fetch = FetchType.LAZY)
private Set<EntityDoi> dois;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"Project\"")
@ -255,10 +270,10 @@ public class DMP implements DataEntity<DMP, UUID> {
this.grant = grant;
}
public Set<DatasetProfile> getAssociatedDmps() {
public Set<DMPDatasetProfile> getAssociatedDmps() {
return associatedDmps;
}
public void setAssociatedDmps(Set<DatasetProfile> associatedDmps) {
public void setAssociatedDmps(Set<DMPDatasetProfile> associatedDmps) {
this.associatedDmps = associatedDmps;
}
@ -325,12 +340,12 @@ public class DMP implements DataEntity<DMP, UUID> {
this.publishedAt = publishedAt;
}
public String getDoi() {
return doi;
}
public void setDoi(String doi) {
this.doi = doi;
}
public Set<EntityDoi> getDois() {
return dois;
}
public void setDois(Set<EntityDoi> dois) {
this.dois = dois;
}
public Project getProject() {
return project;
@ -366,7 +381,7 @@ public class DMP implements DataEntity<DMP, UUID> {
if (entity.getStatus().equals(DMPStatus.FINALISED.getValue())) this.setFinalizedAt(new Date());
if (entity.isPublic) this.setPublishedAt(new Date());
if (entity.getUsers() != null) this.users = entity.getUsers();
if (entity.getDoi() != null && entity.getDoi().trim().isEmpty()) this.doi = entity.doi;
this.dois = entity.getDois();
this.extraProperties = entity.getExtraProperties();
}

@ -0,0 +1,76 @@
package eu.eudat.data.entities;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"DMPDatasetProfile\"")
public class DMPDatasetProfile implements DataEntity<DMPDatasetProfile, UUID> {
@Id
@GeneratedValue
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@ManyToOne
@JoinColumn(name = "\"dmp\"")
private DMP dmp;
@ManyToOne
@JoinColumn(name = "\"datasetprofile\"")
private DescriptionTemplate datasetprofile;
@Column(name = "\"data\"")
private String data;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public DMP getDmp() {
return dmp;
}
public void setDmp(DMP dmp) {
this.dmp = dmp;
}
public DescriptionTemplate getDatasetprofile() {
return datasetprofile;
}
public void setDatasetprofile(DescriptionTemplate datasetprofile) {
this.datasetprofile = datasetprofile;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public void update(DMPDatasetProfile entity) {
this.dmp = entity.getDmp();
this.datasetprofile = entity.getDatasetprofile();
this.data = entity.getData();
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public DMPDatasetProfile buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
this.id = UUID.fromString((String) tuple.get(0).get(base.isEmpty() ? base + "." + "id" : "id"));
return this;
}
}

@ -26,14 +26,14 @@ public class DataRepository implements Serializable, DataEntity<DataRepository,
@Column(name = "\"Abbreviation\"")
private String abbreviation;
@Column(name = "\"Reference\"", nullable = false)
@Column(name = "\"Reference\"")
private String reference;
@Column(name = "\"Uri\"")
private String uri;
@Type(type = "eu.eudat.configurations.typedefinition.XMLType")
@Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
@Column(name = "\"Definition\"", columnDefinition = "xml")
private String definition;
@OneToMany(mappedBy = "dataRepository", cascade = CascadeType.ALL, orphanRemoval = true)
@ -42,14 +42,14 @@ public class DataRepository implements Serializable, DataEntity<DataRepository,
@Column(name = "\"Status\"", nullable = false)
private Short status;
@Column(name = "\"Created\"")
@Column(name = "\"Created\"", nullable = false)
private Date created = null;
@Column(name = "\"Modified\"")
@Column(name = "\"Modified\"", nullable = false)
private Date modified = new Date();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"CreationUser\"", nullable = true)
@JoinColumn(name = "\"CreationUser\"")
private UserInfo creationUser;

@ -16,13 +16,14 @@ import java.util.stream.Collectors;
@NamedEntityGraphs({
@NamedEntityGraph(
name = "datasetListingModel",
attributeNodes = {@NamedAttributeNode("services"), @NamedAttributeNode(value = "datasetDataRepositories", subgraph = "datasetDataRepositories"),
@NamedAttributeNode(value = "datasetExternalDatasets", subgraph = "datasetExternalDatasets"), @NamedAttributeNode("registries"),
@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("profile"), @NamedAttributeNode("creator")},
attributeNodes = {/*@NamedAttributeNode("services"), @NamedAttributeNode(value = "datasetDataRepositories", subgraph = "datasetDataRepositories"),
@NamedAttributeNode(value = "datasetExternalDatasets", subgraph = "datasetExternalDatasets"), @NamedAttributeNode("registries"),*/
@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode(value = "profile", subgraph = "profile"), @NamedAttributeNode("creator")},
subgraphs = {
@NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users"), @NamedAttributeNode("grant"), @NamedAttributeNode("organisations")}),
@NamedSubgraph(name = "datasetDataRepositories", attributeNodes = {@NamedAttributeNode("dataRepository")}),
@NamedSubgraph(name = "datasetExternalDatasets", attributeNodes = {@NamedAttributeNode("externalDataset")})
@NamedSubgraph(name = "datasetExternalDatasets", attributeNodes = {@NamedAttributeNode("externalDataset")}),
@NamedSubgraph(name = "profile", attributeNodes = {@NamedAttributeNode("label")})
}),
@NamedEntityGraph(
@ -36,7 +37,17 @@ import java.util.stream.Collectors;
@NamedEntityGraph(
name = "datasetDataRepositories",
attributeNodes = {@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("creator")},
subgraphs = @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users")}))
subgraphs = @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users")})),
@NamedEntityGraph(
name = "recentDatasetModel",
attributeNodes = {@NamedAttributeNode("services"), @NamedAttributeNode(value = "datasetDataRepositories", subgraph = "datasetDataRepositories"),
@NamedAttributeNode(value = "datasetExternalDatasets", subgraph = "datasetExternalDatasets"), @NamedAttributeNode("registries"),
@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("profile"), @NamedAttributeNode("creator")},
subgraphs = {
@NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users"), @NamedAttributeNode("grant"), @NamedAttributeNode("organisations")}),
@NamedSubgraph(name = "datasetDataRepositories", attributeNodes = {@NamedAttributeNode("dataRepository")}),
@NamedSubgraph(name = "datasetExternalDatasets", attributeNodes = {@NamedAttributeNode("externalDataset")})
})
})
public class Dataset implements DataEntity<Dataset, UUID> {
@ -81,7 +92,7 @@ public class Dataset implements DataEntity<Dataset, UUID> {
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Column(name = "\"Label\"")
@Column(name = "\"Label\"", nullable = false)
private String label;
@ManyToOne(fetch = FetchType.LAZY)
@ -89,20 +100,23 @@ public class Dataset implements DataEntity<Dataset, UUID> {
@JoinColumn(name = "\"DMP\"", nullable = false)
private DMP dmp;
@Column(name = "\"DmpSectionIndex\"")
private Integer dmpSectionIndex;
@Column(name = "\"Uri\"")
private String uri;
@Type(type = "eu.eudat.configurations.typedefinition.XMLType")
@Column(name = "\"Properties\"", columnDefinition = "xml", nullable = true)
@Column(name = "\"Properties\"", columnDefinition = "xml")
private String properties;
@ManyToOne(fetch = FetchType.LAZY)
//@Cascade(value=org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "\"Profile\"", nullable = true)
private DatasetProfile profile;
@JoinColumn(name = "\"Profile\"")
private DescriptionTemplate profile;
@Type(type = "eu.eudat.configurations.typedefinition.XMLType")
@Column(name = "\"Reference\"", columnDefinition = "xml", nullable = true)
@Column(name = "\"Reference\"", columnDefinition = "xml")
private String reference;
@OneToMany(fetch = FetchType.LAZY)
@ -125,16 +139,16 @@ public class Dataset implements DataEntity<Dataset, UUID> {
private Short status;
@Column(name = "\"Created\"")
@Column(name = "\"Created\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date created = null;
@Column(name = "\"Modified\"")
@Column(name = "\"Modified\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date modified = new Date();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"Creator\"", nullable = true)
@JoinColumn(name = "\"Creator\"")
private UserInfo creator;
@Column(name = "\"Description\"")
@ -221,6 +235,12 @@ public class Dataset implements DataEntity<Dataset, UUID> {
this.dmp = dmp;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public String getUri() {
return uri;
@ -238,10 +258,10 @@ public class Dataset implements DataEntity<Dataset, UUID> {
}
public DatasetProfile getProfile() {
public DescriptionTemplate getProfile() {
return profile;
}
public void setProfile(DatasetProfile profile) {
public void setProfile(DescriptionTemplate profile) {
this.profile = profile;
}
@ -317,6 +337,7 @@ public class Dataset implements DataEntity<Dataset, UUID> {
this.setRegistries(entity.getRegistries());
this.setDmp(entity.getDmp());
this.setDmpSectionIndex(entity.getDmpSectionIndex());
this.setStatus(entity.getStatus());
this.setProfile(entity.getProfile());
this.setModified(new Date());

@ -14,8 +14,8 @@ import java.util.UUID;
@Entity
@Table(name = "\"DatasetProfile\"")
public class DatasetProfile implements DataEntity<DatasetProfile,UUID>{
@Table(name = "\"DescriptionTemplate\"")
public class DescriptionTemplate implements DataEntity<DescriptionTemplate,UUID>{
public enum Status {
SAVED((short) 0), FINALIZED((short) 1), DELETED((short) 99);
@ -49,7 +49,7 @@ public class DatasetProfile implements DataEntity<DatasetProfile,UUID>{
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Column(name = "\"Label\"")
@Column(name = "\"Label\"", nullable = false)
private String label;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "profile")
@ -79,16 +79,21 @@ public class DatasetProfile implements DataEntity<DatasetProfile,UUID>{
@Column(name = "\"Version\"", nullable = false)
private Short version;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "\"DMPDatasetProfile\"",
joinColumns = {@JoinColumn(name = "\"datasetprofile\"", referencedColumnName = "\"ID\"")},
inverseJoinColumns = {@JoinColumn(name = "\"dmp\"", referencedColumnName = "\"ID\"")}
)
private List<DMP> dmps;
@OneToMany(fetch = FetchType.LAZY)
private Set<DMP> dmps;
@Column(name = "\"Language\"", nullable = false)
private String language;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "\"Type\"", nullable = false)
private DescriptionTemplateType type;
@OneToMany(mappedBy = "descriptionTemplate", fetch = FetchType.LAZY)
private Set<UserDatasetProfile> users;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "datasetprofile")
private Set<DMPDatasetProfile> associatedDmps;
public String getDescription() {
return description;
@ -153,18 +158,31 @@ public class DatasetProfile implements DataEntity<DatasetProfile,UUID>{
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public DescriptionTemplateType getType() {
return type;
}
public void setType(DescriptionTemplateType type) {
this.type = type;
}
public Set<UserDatasetProfile> getUsers() {
return users;
}
public void setUsers(Set<UserDatasetProfile> users) {
this.users = users;
}
@Override
public String toString() {
return "DatasetProfileListingModel [id=" + id + ", label=" + label + ", dataset=" + dataset + ", definition=" + definition + ", version=" + version + ", language=" + language + "]";
return "DatasetProfileListingModel [id=" + id + ", label=" + label + ", dataset=" + dataset + ", definition=" + definition + ", version=" + version + ", language=" + language + ", type=" + type +"]";
}
@Override
public void update(DatasetProfile entity) {
public void update(DescriptionTemplate entity) {
}
@Override
@ -173,7 +191,7 @@ public class DatasetProfile implements DataEntity<DatasetProfile,UUID>{
}
@Override
public DatasetProfile buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
public DescriptionTemplate buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
this.id = UUID.fromString((String) tuple.get(0).get(base.isEmpty() ? base + "." + "id" : "id"));
return this;
}

@ -0,0 +1,89 @@
package eu.eudat.data.entities;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"DescriptionTemplateType\"")
public class DescriptionTemplateType implements DataEntity<DescriptionTemplateType, UUID> {
public enum Status {
SAVED((short) 0), FINALIZED((short) 1), DELETED((short) 99);
private short value;
private Status(short value) {
this.value = value;
}
public short getValue() {
return value;
}
public static Status fromInteger(int value) {
switch (value) {
case 0:
return SAVED;
case 1:
return FINALIZED;
case 99:
return DELETED;
default:
throw new RuntimeException("Unsupported Description Template Type Status");
}
}
}
@Id
@GeneratedValue
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Column(name = "\"Name\"", nullable = false)
private String name;
@Column(name = "\"Status\"", nullable = false)
private Short status;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getStatus() {
return status;
}
public void setStatus(Short status) {
this.status = status;
}
@Override
public void update(DescriptionTemplateType entity) {
this.name = entity.name;
this.status = entity.status;
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public DescriptionTemplateType buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
this.id = UUID.fromString((String) tuple.get(0).get(!base.isEmpty() ? base + "." + "id" : "id"));
return this;
}
}

@ -1,61 +0,0 @@
package eu.eudat.data.entities;
import eu.eudat.queryable.queryableentity.DataEntity;
import javax.persistence.*;
import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"DoiFunder\"")
public class DoiFunder implements DataEntity<DoiFunder, UUID> {
@Id
private UUID id;
@Column(name = "name")
private String name;
@Column(name = "doi")
private String doi;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDoi() {
return doi;
}
public void setDoi(String doi) {
this.doi = doi;
}
@Override
public void update(DoiFunder entity) {
this.name = entity.name;
this.doi = entity.doi;
}
@Override
public UUID getKeys() {
return id;
}
@Override
public DoiFunder buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
return null;
}
}

@ -10,8 +10,8 @@ import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"LoginConfirmationEmail\"")
public class LoginConfirmationEmail implements DataEntity<LoginConfirmationEmail, UUID> {
@Table(name = "\"EmailConfirmation\"")
public class EmailConfirmation implements DataEntity<EmailConfirmation, UUID> {
@Id
@GeneratedValue
@ -30,6 +30,9 @@ public class LoginConfirmationEmail implements DataEntity<LoginConfirmationEmail
@Column(name = "\"userId\"", nullable = false)
private UUID userId;
@Column(name = "\"data\"")
private String data;
@Column(name = "\"expiresAt\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
@ -77,9 +80,14 @@ public class LoginConfirmationEmail implements DataEntity<LoginConfirmationEmail
this.expiresAt = expiresAt;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public void update(LoginConfirmationEmail entity) {
public void update(EmailConfirmation entity) {
}
@Override
@ -88,7 +96,7 @@ public class LoginConfirmationEmail implements DataEntity<LoginConfirmationEmail
}
@Override
public LoginConfirmationEmail buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
public EmailConfirmation buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
return null;
}
}

@ -0,0 +1,121 @@
package eu.eudat.data.entities;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.entities.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.Type;
import javax.persistence.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Entity
@Table(name = "\"EntityDoi\"")
public class EntityDoi implements DataEntity<EntityDoi, UUID> {
public enum EntityType {
DMP
}
@Id
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Enumerated(EnumType.STRING)
@Type(type = "eu.eudat.configurations.typedefinition.PostgreSQLEnumType")
@Column(name = "\"EntityType\"", nullable = false)
private EntityType entityType;
@Column(name = "\"RepositoryId\"", nullable = false)
private String repositoryId;
@Column(name = "\"Doi\"", nullable = false)
private String doi;
@Column(name = "\"CreatedAt\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date createdAt;
@Column(name = "\"UpdatedAt\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date updatedAt;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"EntityId\"", nullable = false)
private DMP entityId;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public EntityType getEntityType() {
return entityType;
}
public void setEntityType(EntityType entityType) {
this.entityType = entityType;
}
public String getRepositoryId() {
return repositoryId;
}
public void setRepositoryId(String repositoryId) {
this.repositoryId = repositoryId;
}
public String getDoi() {
return doi;
}
public void setDoi(String doi) {
this.doi = doi;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
public DMP getEntityId() {
return entityId;
}
public void setEntityId(DMP entityId) {
this.entityId = entityId;
}
@Override
public void update(EntityDoi doi) {
this.entityType = doi.getEntityType();
this.repositoryId = doi.getRepositoryId();
this.doi = doi.getDoi();
this.createdAt = doi.getCreatedAt();
this.updatedAt = doi.getUpdatedAt();
this.entityId = doi.getEntityId();
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public EntityDoi buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
if (fields.contains(currentBase + "entityId"))
this.entityId = tuple.stream().map(x -> new DMP().buildFromTuple(Arrays.asList(x), fields , base.isEmpty() ? "entityId" : base + "." + "entityId")).collect(Collectors.toList()).get(0);
return this;
}
}

@ -0,0 +1,129 @@
package eu.eudat.data.entities;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.entities.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.Type;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Entity
@Table(name = "\"FileUpload\"")
public class FileUpload implements DataEntity<FileUpload, UUID> {
public enum EntityType {
DATASET, DMP
}
@Id
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Column(name = "\"Name\"", nullable = false)
private String name;
@Column(name = "\"FileType\"", nullable = false)
private String fileType;
@Column(name = "\"EntityId\"", nullable = false)
private UUID entityId;
@Enumerated(EnumType.STRING)
@Type(type = "eu.eudat.configurations.typedefinition.PostgreSQLEnumType")
@Column(name = "\"EntityType\"", nullable = false)
private EntityType entityType;
@Column(name = "\"CreatedAt\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date createdAt;
@Column(name = "\"IsDeleted\"", nullable = false)
private Boolean isDeleted;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"Creator\"")
private UserInfo creator;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public UUID getEntityId() {
return entityId;
}
public void setEntityId(UUID entityId) {
this.entityId = entityId;
}
public EntityType getEntityType() {
return entityType;
}
public void setEntityType(EntityType entityType) {
this.entityType = entityType;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Boolean getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(Boolean isDeleted) {
this.isDeleted = isDeleted;
}
public UserInfo getCreator() {
return creator;
}
public void setCreator(UserInfo creator) {
this.creator = creator;
}
@Override
public void update(FileUpload file) {
this.name = file.getName();
this.fileType = file.getFileType();
this.entityId = file.getEntityId();
this.entityType = file.getEntityType();
this.createdAt = file.getCreatedAt();
this.isDeleted = file.getIsDeleted();
this.creator = file.getCreator();
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public FileUpload buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
this.creator = tuple.stream().map(x -> new UserInfo().buildFromTuple(tuple, fields , base.isEmpty() ? "creator" : base + "." + "creator")).collect(Collectors.toList()).get(0);
return this;
}
}

@ -106,11 +106,11 @@ public class Grant implements DataEntity<Grant, UUID> {
@Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
private String definition;
@Column(name = "\"StartDate\"", nullable = false)
@Column(name = "\"StartDate\"", nullable = true)
@Convert(converter = DateToUTCConverter.class)
private Date startdate = null;
@Column(name = "\"EndDate\"", nullable = false)
@Column(name = "\"EndDate\"", nullable = true)
@Convert(converter = DateToUTCConverter.class)
private Date enddate = null;

@ -24,7 +24,7 @@ public class Researcher implements DataEntity<Researcher, UUID> {
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Column(name = "\"Label\"")
@Column(name = "\"Label\"", nullable = false, length = 250)
private String label;
@Column(name = "\"Uri\"")

@ -0,0 +1,79 @@
package eu.eudat.data.entities;
import eu.eudat.data.entities.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"UserDatasetProfile\"")
public class UserDatasetProfile implements DataEntity<UserDatasetProfile, UUID> {
@Id
@GeneratedValue
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "usr")
private UserInfo user;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"descriptionTemplate\"")
private DescriptionTemplate descriptionTemplate;
@Column(name = "role")
private Integer role;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UserInfo getUser() {
return user;
}
public void setUser(UserInfo user) {
this.user = user;
}
public DescriptionTemplate getDatasetProfile() {
return descriptionTemplate;
}
public void setDatasetProfile(DescriptionTemplate descriptionTemplate) {
this.descriptionTemplate = descriptionTemplate;
}
public Integer getRole() {
return role;
}
public void setRole(Integer role) {
this.role = role;
}
@Override
public void update(UserDatasetProfile entity) {
this.role = entity.getRole();
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public UserDatasetProfile buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
return this;
}
}

@ -15,7 +15,7 @@ import java.util.*;
@NamedEntityGraphs({
@NamedEntityGraph(
name = "userInfo",
attributeNodes = {@NamedAttributeNode("userRoles"), @NamedAttributeNode("credentials")}),
attributeNodes = {@NamedAttributeNode("userRoles"), @NamedAttributeNode("credentials"), @NamedAttributeNode("additionalinfo")}),
})
public class UserInfo implements DataEntity<UserInfo, UUID> {
@ -26,7 +26,7 @@ public class UserInfo implements DataEntity<UserInfo, UUID> {
private UUID id;
@Column(name = "email", nullable = false)
@Column(name = "email")
private String email = null;
@Column(name = "authorization_level", nullable = false)
@ -35,6 +35,9 @@ public class UserInfo implements DataEntity<UserInfo, UUID> {
@Column(name = "usertype", nullable = false)
private Short usertype; // 0 internal, 1 external
@Column(name = "userstatus", nullable = false)
private Short userStatus; // 0 active, 1 inactive
@Column(name = "verified_email", nullable = true)
private Boolean verified_email = null;
@ -187,6 +190,14 @@ public class UserInfo implements DataEntity<UserInfo, UUID> {
this.notifications = notifications;
}
public Short getUserStatus() {
return userStatus;
}
public void setUserStatus(Short userStatus) {
this.userStatus = userStatus;
}
@Override
public void update(UserInfo entity) {
this.name = entity.getName();
@ -194,6 +205,7 @@ public class UserInfo implements DataEntity<UserInfo, UUID> {
this.additionalinfo = entity.getAdditionalinfo();
this.lastloggedin = entity.getLastloggedin();
this.userRoles = entity.getUserRoles();
this.userStatus = entity.getUserStatus();
}
@Override

@ -21,9 +21,12 @@ public class PaginationService {
items.withFields(Arrays.asList(tableRequest.getSelection().getFields()));
return items;
}
public static <T extends DataEntity> void applyOrder(QueryableList<T> items, TableQuery tableRequest) {
ColumnOrderings columnOrderings = tableRequest.getOrderings();
applyOrder(items, tableRequest.getOrderings());
}
public static <T extends DataEntity> void applyOrder(QueryableList<T> items, ColumnOrderings columnOrderings) {
for (Ordering ordering : columnOrderings.getFieldOrderings()) {
if (ordering.getOrderByType() == Ordering.OrderByType.ASC)
applyAscOrder(items, ordering);

@ -3,12 +3,14 @@ package eu.eudat.data.query.definition;
import eu.eudat.data.dao.criteria.Criteria;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.queryableentity.DataEntity;
import io.swagger.annotations.ApiModelProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class Query<C extends Criteria<T>, T extends DataEntity> implements CriteriaQuery<C, T> {
private static final Logger logger = LoggerFactory.getLogger(Query.class);
private C criteria;
@ApiModelProperty(value = "query", name = "query", dataType = "String", hidden = true)
private QueryableList<T> query;
public static class QueryBuilder<C extends Criteria<T>, T extends DataEntity, Q extends Query<C, T>> {

@ -6,12 +6,16 @@ import eu.eudat.data.query.definition.helpers.ColumnOrderings;
import eu.eudat.data.query.definition.helpers.SelectionFields;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.queryableentity.DataEntity;
import io.swagger.annotations.ApiModelProperty;
public abstract class TableQuery<C extends Criteria<T>, T extends DataEntity<T, K>, K> extends Query<C, T> implements TableCriteriaQuery<C, T> {
private ColumnOrderings orderings;
@ApiModelProperty(hidden = true)
private SelectionFields selection;
@ApiModelProperty(value = "length", name = "length", dataType = "Integer", example = "2")
private Integer length;
@ApiModelProperty(value = "offset", name = "offset", dataType = "Integer", example = "0")
private Integer offset;
public Integer getLength() {

@ -1,27 +1,30 @@
package eu.eudat.data.query.definition.helpers;
import io.swagger.annotations.ApiModelProperty;
import java.util.LinkedList;
import java.util.List;
public class ColumnOrderings {
private String[] fields;
@ApiModelProperty(value = "fields", name = "fields", dataType = "List<String>", example = "[]")
private List<String> fields;
public String[] getFields() {
public List<String> getFields() {
return fields;
}
public void setFields(String[] fields) {
public void setFields(List<String> fields) {
this.fields = fields;
}
public Ordering[] getFieldOrderings() {
public List<Ordering> getFieldOrderings() {
List<Ordering> orderings = new LinkedList<>();
for (String field : fields) {
orderings.add(this.orderingFromString(field));
}
return orderings.toArray(new Ordering[orderings.size()]);
return orderings;
}
private Ordering orderingFromString(String field) {
@ -34,6 +37,10 @@ public class ColumnOrderings {
ordering.fieldName(ordering.getFieldName().replace("|count|", "")).columnType(Ordering.ColumnType.COUNT);
else if (ordering.getFieldName().contains("|join|"))
ordering.fieldName(ordering.getFieldName().replace("|join|", "")).columnType(Ordering.ColumnType.JOIN_COLUMN);
else if (ordering.getFieldName().equals("asc"))
ordering.fieldName("label").orderByType(Ordering.OrderByType.ASC);
else if (ordering.getFieldName().equals("desc"))
ordering.fieldName("label").orderByType(Ordering.OrderByType.DESC);
return ordering;
}
}

@ -1,8 +1,11 @@
package eu.eudat.data.query.definition.helpers;
import io.swagger.annotations.ApiModelProperty;
public class SelectionFields {
@ApiModelProperty(value = "fields", name = "fields", dataType = "String[]", example = "[]")
private String[] fields;
public String[] getFields() {

@ -0,0 +1,27 @@
package eu.eudat.data.query.items.dmpblueprint;
import eu.eudat.data.dao.criteria.DataManagementPlanBlueprintCriteria;
import eu.eudat.data.entities.DMPProfile;
import eu.eudat.data.query.PaginationService;
import eu.eudat.data.query.definition.TableQuery;
import eu.eudat.queryable.QueryableList;
import java.util.UUID;
public class DataManagementPlanBlueprintTableRequest extends TableQuery<DataManagementPlanBlueprintCriteria, DMPProfile, UUID> {
@Override
public QueryableList<DMPProfile> applyCriteria() {
QueryableList<DMPProfile> query = this.getQuery();
if (this.getCriteria().getLike() != null && !this.getCriteria().getLike().isEmpty())
query.where((builder, root) -> builder.like(root.get("label"), "%" + this.getCriteria().getLike() + "%"));
if (this.getCriteria().getStatus() != null)
query.where((builder, root) -> builder.equal(root.get("status"), this.getCriteria().getStatus()));
return query;
}
@Override
public QueryableList<DMPProfile> applyPaging(QueryableList<DMPProfile> items) {
return PaginationService.applyPaging(items, this);
}
}

@ -1,25 +1,24 @@
package eu.eudat.data.query.items.item.datasetprofile;
import eu.eudat.data.dao.criteria.DatasetProfileCriteria;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import eu.eudat.data.query.PaginationService;
import eu.eudat.data.query.definition.Query;
import eu.eudat.data.query.definition.TableQuery;
import eu.eudat.queryable.QueryableList;
import java.util.UUID;
public class DatasetProfileAutocompleteRequest extends TableQuery<DatasetProfileCriteria,DatasetProfile, UUID> {
public class DatasetProfileAutocompleteRequest extends TableQuery<DatasetProfileCriteria, DescriptionTemplate, UUID> {
@Override
public QueryableList<DatasetProfile> applyCriteria() {
QueryableList<DatasetProfile> query = this.getQuery();
public QueryableList<DescriptionTemplate> applyCriteria() {
QueryableList<DescriptionTemplate> query = this.getQuery();
if (this.getCriteria().getLike() != null && !this.getCriteria().getLike().isEmpty())
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + this.getCriteria().getLike().toUpperCase() + "%"));
return query;
}
@Override
public QueryableList<DatasetProfile> applyPaging(QueryableList<DatasetProfile> items) {
public QueryableList<DescriptionTemplate> applyPaging(QueryableList<DescriptionTemplate> items) {
return PaginationService.applyPaging(items, this);
}
}

@ -1,15 +1,13 @@
package eu.eudat.data.query.items.item.datasetprofile;
import eu.eudat.data.dao.criteria.DatasetProfileWizardCriteria;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import eu.eudat.data.query.definition.Query;
import eu.eudat.queryable.QueryableList;
import java.util.UUID;
public class DatasetProfileWizardAutocompleteRequest extends Query<DatasetProfileWizardCriteria,DatasetProfile> {
public class DatasetProfileWizardAutocompleteRequest extends Query<DatasetProfileWizardCriteria, DescriptionTemplate> {
@Override
public QueryableList<DatasetProfile> applyCriteria() {
public QueryableList<DescriptionTemplate> applyCriteria() {
return null;
}
}

@ -1,23 +1,23 @@
package eu.eudat.data.query.items.table.datasetprofile;
import eu.eudat.data.dao.criteria.DatasetProfileCriteria;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.data.entities.DescriptionTemplate;
import eu.eudat.data.query.definition.TableQuery;
import eu.eudat.queryable.QueryableList;
import java.util.UUID;
public class DatasetProfileTableRequestItem extends TableQuery<DatasetProfileCriteria, DatasetProfile, UUID> {
public class DatasetProfileTableRequestItem extends TableQuery<DatasetProfileCriteria, DescriptionTemplate, UUID> {
@Override
public QueryableList<DatasetProfile> applyCriteria() {
QueryableList<DatasetProfile> query = this.getQuery();
public QueryableList<DescriptionTemplate> applyCriteria() {
QueryableList<DescriptionTemplate> query = this.getQuery();
if (this.getCriteria().getLike() != null && !this.getCriteria().getLike().isEmpty())
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + this.getCriteria().getLike().toUpperCase() + "%"));
return query;
}
@Override
public QueryableList<DatasetProfile> applyPaging(QueryableList<DatasetProfile> items) {
public QueryableList<DescriptionTemplate> applyPaging(QueryableList<DescriptionTemplate> items) {
return null;
}
}

@ -4,4 +4,13 @@ import java.util.UUID;
public class DatasetProfileQuery {
private UserQuery userQuery;
public UserQuery getUserQuery() {
return userQuery;
}
public void setUserQuery(UserQuery userQuery) {
this.userQuery = userQuery;
}
}

@ -18,9 +18,13 @@ public class DatasetCriteria extends Criteria {
private List<UUID> collaborators;
private Boolean allowAllVersions;
private List<String> organiztions;
private Boolean hasTags;
private List<Tag> tags;
private boolean isPublic;
private Short grantStatus;
private int offset;
private int size;
private List<SortCriteria> sortCriteria;
public String getLike() {
return like;
@ -117,4 +121,36 @@ public class DatasetCriteria extends Criteria {
public void setGrantStatus(Short grantStatus) {
this.grantStatus = grantStatus;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public List<SortCriteria> getSortCriteria() {
return sortCriteria;
}
public void setSortCriteria(List<SortCriteria> sortCriteria) {
this.sortCriteria = sortCriteria;
}
public Boolean getHasTags() {
return hasTags;
}
public void setHasTags(Boolean hasTags) {
this.hasTags = hasTags;
}
}

@ -9,11 +9,16 @@ public class DmpCriteria extends Criteria {
private List<UUID> templates;
private List<UUID> grants;
private List<UUID> collaborators;
private List<Integer> roles;
private List<UUID> organizations;
private boolean isPublic;
private List<UUID> groupIds;
private boolean allowAllVersions;
private Short grantStatus;
private int offset;
private Integer size;
private List<SortCriteria> sortCriteria;
public String getLike() {
return like;
@ -55,6 +60,14 @@ public class DmpCriteria extends Criteria {
this.collaborators = collaborators;
}
public List<Integer> getRoles() {
return roles;
}
public void setRoles(List<Integer> roles) {
this.roles = roles;
}
public List<UUID> getOrganizations() {
return organizations;
}
@ -94,4 +107,28 @@ public class DmpCriteria extends Criteria {
public void setGrantStatus(Short grantStatus) {
this.grantStatus = grantStatus;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
this.size = size;
}
public List<SortCriteria> getSortCriteria() {
return sortCriteria;
}
public void setSortCriteria(List<SortCriteria> sortCriteria) {
this.sortCriteria = sortCriteria;
}
}

@ -0,0 +1,39 @@
package eu.eudat.elastic.criteria;
public class SortCriteria {
public enum OrderByType {
ASC, DESC
}
public enum ColumnType {
COUNT, COLUMN, JOIN_COLUMN
}
private String fieldName;
private OrderByType orderByType;
private ColumnType columnType;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public OrderByType getOrderByType() {
return orderByType;
}
public void setOrderByType(OrderByType orderByType) {
this.orderByType = orderByType;
}
public ColumnType getColumnType() {
return columnType;
}
public void setColumnType(ColumnType columnType) {
this.columnType = columnType;
}
}

@ -4,11 +4,11 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
public class Collaborator implements ElasticEntity<Collaborator> {
private String id;
private String name;
private int role;
public String getId() {
return id;
@ -26,11 +26,20 @@ public class Collaborator implements ElasticEntity<Collaborator> {
this.name = name;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
@Override
public XContentBuilder toElasticEntity(XContentBuilder builder) throws IOException {
builder.startObject();
builder.field("id", this.id);
builder.field("name", this.name);
builder.field("role", this.role);
builder.endObject();
return builder;
}
@ -39,6 +48,7 @@ public class Collaborator implements ElasticEntity<Collaborator> {
public Collaborator fromElasticEntity(Map fields) {
this.id = (String) fields.get("id");
this.name = (String) fields.get("name");
this.role = (int) fields.get("role");
return this;
}
}

@ -5,6 +5,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
@ -59,6 +60,9 @@ public class Dataset implements ElasticEntity<Dataset> {
private Boolean isPublic;
private Short grantStatus;
private String formData;
private Date created;
private Date modified;
private Date finalizedAt;
public String getId() {
return id;
@ -188,6 +192,30 @@ public class Dataset implements ElasticEntity<Dataset> {
this.formData = formData;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getModified() {
return modified;
}
public void setModified(Date modified) {
this.modified = modified;
}
public Date getFinalizedAt() {
return finalizedAt;
}
public void setFinalizedAt(Date finalizedAt) {
this.finalizedAt = finalizedAt;
}
@Override
public XContentBuilder toElasticEntity(XContentBuilder builder) throws IOException {
builder.startObject();
@ -197,10 +225,15 @@ public class Dataset implements ElasticEntity<Dataset> {
builder.field("template", this.template.toString());
builder.field("status", this.status.toString());
builder.field("dmp", this.dmp.toString());
builder.field("created", this.created);
builder.field("modified", this.modified);
builder.field("finalizedAt", this.finalizedAt);
if (this.group != null) {
builder.field("group", this.group.toString());
}
builder.field("grant", this.grant.toString());
if (this.grant != null) {
builder.field("grant", this.grant.toString());
}
if (collaborators != null) {
builder.startArray("collaborators");
this.collaborators.forEach(x -> {
@ -252,32 +285,48 @@ public class Dataset implements ElasticEntity<Dataset> {
@Override
public Dataset fromElasticEntity(Map<String, Object> fields) {
if (fields != null) {
this.id = (String) fields.get("id");
if (fields.get("tags") != null) {
this.tags = ((List<HashMap>) fields.get("tags")).stream().map(hashMap -> new Tag().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
this.label = (String) fields.get("label");
this.description = (String) fields.get("description");
this.template = UUID.fromString((String) fields.get("template"));
this.status = Short.valueOf((String) fields.get("status"));
this.dmp = UUID.fromString((String) fields.get("dmp"));
this.group = UUID.fromString((String) fields.get("group"));
this.grant = UUID.fromString((String) fields.get("grant"));
if (fields.get("collaborators") != null) {
this.collaborators = ((List<HashMap>) fields.get("collaborators")).stream().map(hashMap -> new Collaborator().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
this.lastVersion = Boolean.parseBoolean((String) fields.get("lastVersion"));
this.lastPublicVersion = Boolean.parseBoolean((String) fields.get("lastPublicVersion"));
if (fields.get("organizations") != null) {
this.organizations = ((List<HashMap>) fields.get("organizations")).stream().map(hashMap -> new Organization().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
if (fields.get("public") != null) {
this.isPublic = Boolean.valueOf((String) fields.get("public"));
}
if (fields.get("grantStatus") != null) {
this.grantStatus = Short.valueOf((String) fields.get("grantStatus"));
if (fields.size() == 1) {
if (fields.containsKey("id")) {
this.id = (String) fields.get("id");
} else if (fields.containsKey("tags")) {
this.tags = ((List<HashMap>) fields.get("tags")).stream().map(hashMap -> new Tag().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
}else if (fields.size() > 1) {
this.id = (String) fields.get("id");
if (fields.get("tags") != null) {
this.tags = ((List<HashMap>) fields.get("tags")).stream().map(hashMap -> new Tag().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
this.label = (String) fields.get("label");
this.description = (String) fields.get("description");
this.template = UUID.fromString((String) fields.get("template"));
this.status = Short.valueOf((String) fields.get("status"));
this.dmp = UUID.fromString((String) fields.get("dmp"));
this.group = UUID.fromString((String) fields.get("group"));
if (fields.get("grant") != null) {
this.grant = UUID.fromString((String) fields.get("grant"));
}
if (fields.get("created") != null)
this.created = Date.from(Instant.parse((String) fields.get("created")));
if (fields.get("modified") != null)
this.modified = Date.from(Instant.parse((String) fields.get("modified")));
if (fields.get("finalizedAt") != null)
this.finalizedAt = Date.from(Instant.parse((String) fields.get("finalizedAt")));
if (fields.get("collaborators") != null) {
this.collaborators = ((List<HashMap>) fields.get("collaborators")).stream().map(hashMap -> new Collaborator().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
this.lastVersion = Boolean.parseBoolean((String) fields.get("lastVersion"));
this.lastPublicVersion = Boolean.parseBoolean((String) fields.get("lastPublicVersion"));
if (fields.get("organizations") != null) {
this.organizations = ((List<HashMap>) fields.get("organizations")).stream().map(hashMap -> new Organization().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
if (fields.get("public") != null) {
this.isPublic = Boolean.valueOf((String) fields.get("public"));
}
if (fields.get("grantStatus") != null) {
this.grantStatus = Short.valueOf((String) fields.get("grantStatus"));
}
this.formData = (String) fields.get("formData");
}
this.formData = (String) fields.get("formData");
}
return this;
}

@ -1,14 +1,18 @@
package eu.eudat.elastic.entities;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.common.xcontent.XContentBuilder;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class DatasetTempalate implements ElasticEntity<DatasetTempalate> {
private UUID id;
private String name;
private Map<String, Object> data;
public UUID getId() {
return id;
@ -26,11 +30,25 @@ public class DatasetTempalate implements ElasticEntity<DatasetTempalate> {
this.name = name;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
@Override
public XContentBuilder toElasticEntity(XContentBuilder builder) throws IOException {
builder.startObject();
builder.field("id", this.id.toString());
builder.field("name", this.name);
if(this.data != null) {
builder.field("data", new ObjectMapper().writeValueAsString(this.data));
}
else{
builder.field("data", "");
}
builder.endObject();
return builder;
}
@ -39,6 +57,12 @@ public class DatasetTempalate implements ElasticEntity<DatasetTempalate> {
public DatasetTempalate fromElasticEntity(Map<String, Object> fields) {
this.id = UUID.fromString((String) fields.get("id"));
this.name = (String) fields.get("name");
try {
this.data = new ObjectMapper().readValue((String) fields.get("data"), new TypeReference<Map<String, Object>>() {});
}
catch (Exception e){
this.data = new HashMap<>();
}
return this;
}
}

@ -5,10 +5,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
public class Dmp implements ElasticEntity<Dmp> {
@ -55,6 +53,11 @@ public class Dmp implements ElasticEntity<Dmp> {
private List<Dataset> datasets;
private UUID grant;
private Short grantStatus;
private Date created;
private Date modified;
private Date finalizedAt;
private Date publishedAt;
private List<Doi> dois;
public UUID getId() {
return id;
@ -168,6 +171,46 @@ public class Dmp implements ElasticEntity<Dmp> {
this.grantStatus = grantStatus;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getModified() {
return modified;
}
public void setModified(Date modified) {
this.modified = modified;
}
public Date getFinalizedAt() {
return finalizedAt;
}
public void setFinalizedAt(Date finalizedAt) {
this.finalizedAt = finalizedAt;
}
public Date getPublishedAt() {
return publishedAt;
}
public void setPublishedAt(Date publishedAt) {
this.publishedAt = publishedAt;
}
public List<Doi> getDois() {
return dois;
}
public void setDois(List<Doi> dois) {
this.dois = dois;
}
@Override
public XContentBuilder toElasticEntity(XContentBuilder builder) throws IOException {
builder.startObject();
@ -233,37 +276,74 @@ public class Dmp implements ElasticEntity<Dmp> {
builder.field(MapKey.GRANT.getName(), this.grant.toString());
}
builder.field(MapKey.GRANTSTATUS.getName(), this.grantStatus);
builder.field(MapKey.CREATED.getName(), this.created);
builder.field(MapKey.MODIFIED.getName(), this.modified);
builder.field(MapKey.FINALIZEDAT.getName(), this.finalizedAt);
builder.field(MapKey.PUBLISHEDAT.getName(), this.publishedAt);
if (this.dois != null && !this.dois.isEmpty()) {
builder.startArray(MapKey.DOIS.getName());
this.dois.forEach(doi -> {
try {
doi.toElasticEntity(builder);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
});
builder.endArray();
}
builder.endObject();
return builder;
}
@Override
public Dmp fromElasticEntity(Map<String, Object> fields) {
this.id = UUID.fromString((String) fields.get(MapKey.ID.getName()));
this.label = (String) fields.get(MapKey.LABEL.getName());
this.description = (String) fields.get(MapKey.DESCRIPTION.getName());
if (fields.get(MapKey.GROUPID.getName()) != null) {
this.groupId = UUID.fromString((String) fields.get(MapKey.GROUPID.getName()));
}
this.status = Short.valueOf(fields.get(MapKey.STATUS.getName()).toString());
if (fields.get(MapKey.TEMPLATES.getName()) != null) {
this.templates = ((List<HashMap<String, Object>>) fields.get(MapKey.TEMPLATES.getName())).stream().map(hashMap -> new DatasetTempalate().fromElasticEntity(hashMap)).collect(Collectors.toList());
if (fields == null || fields.isEmpty()) {
return null;
}
if (fields.get(MapKey.COLLABORATORS.getName()) != null) {
this.collaborators = ((List<HashMap<String, Object>>) fields.get(MapKey.COLLABORATORS.getName())).stream().map(map -> new Collaborator().fromElasticEntity(map)).collect(Collectors.toList());
}
if (fields.get(MapKey.ORGANIZATIONS.getName()) != null) {
this.organizations = ((List<HashMap<String, Object>>) fields.get(MapKey.ORGANIZATIONS.getName())).stream().map(map -> new Organization().fromElasticEntity(map)).collect(Collectors.toList());
}
this.lastVersion = (Boolean) fields.get(MapKey.LASTVERSION.getName());
this.lastPublicVersion = (Boolean) fields.get(MapKey.LASTPUBLICVERSION.getName());
this.isPublic = (Boolean) fields.get(MapKey.ISPUBLIC.getName());
if (fields.get(MapKey.DATASETS.getName()) != null) {
this.datasets = ((List<HashMap<String, Object>>) fields.get(MapKey.DATASETS.getName())).stream().map(map -> new Dataset().fromElasticEntity(map)).collect(Collectors.toList());
}
this.grant = UUID.fromString((String) fields.get(MapKey.GRANT.getName()));
if (fields.get(MapKey.GRANTSTATUS.getName()) != null) {
this.grantStatus = Short.valueOf(fields.get(MapKey.GRANTSTATUS.getName()).toString());
this.id = UUID.fromString((String) fields.get(MapKey.ID.getName()));
if (fields.size() > 1) {
this.label = (String) fields.get(MapKey.LABEL.getName());
this.description = (String) fields.get(MapKey.DESCRIPTION.getName());
if (fields.get(MapKey.GROUPID.getName()) != null) {
this.groupId = UUID.fromString((String) fields.get(MapKey.GROUPID.getName()));
}
this.status = Short.valueOf(fields.get(MapKey.STATUS.getName()).toString());
if (fields.get(MapKey.TEMPLATES.getName()) != null) {
this.templates = ((List<HashMap<String, Object>>) fields.get(MapKey.TEMPLATES.getName())).stream().map(hashMap -> new DatasetTempalate().fromElasticEntity(hashMap)).collect(Collectors.toList());
}
if (fields.get(MapKey.COLLABORATORS.getName()) != null) {
this.collaborators = ((List<HashMap<String, Object>>) fields.get(MapKey.COLLABORATORS.getName())).stream().map(map -> new Collaborator().fromElasticEntity(map)).collect(Collectors.toList());
}
if (fields.get(MapKey.ORGANIZATIONS.getName()) != null) {
this.organizations = ((List<HashMap<String, Object>>) fields.get(MapKey.ORGANIZATIONS.getName())).stream().map(map -> new Organization().fromElasticEntity(map)).collect(Collectors.toList());
}
this.lastVersion = (Boolean) fields.get(MapKey.LASTVERSION.getName());
this.lastPublicVersion = (Boolean) fields.get(MapKey.LASTPUBLICVERSION.getName());
this.isPublic = (Boolean) fields.get(MapKey.ISPUBLIC.getName());
if (fields.get(MapKey.DATASETS.getName()) != null) {
this.datasets = ((List<HashMap<String, Object>>) fields.get(MapKey.DATASETS.getName())).stream().map(map -> new Dataset().fromElasticEntity(map)).collect(Collectors.toList());
}
if (fields.containsKey(MapKey.GRANT.getName()) && fields.get(MapKey.GRANT.getName()) != null) {
this.grant = UUID.fromString((String) fields.get(MapKey.GRANT.getName()));
}
if (fields.get(MapKey.GRANTSTATUS.getName()) != null) {
this.grantStatus = Short.valueOf(fields.get(MapKey.GRANTSTATUS.getName()).toString());
}
if (fields.containsKey(MapKey.CREATED.getName())) {
this.created = Date.from(Instant.parse(fields.get(MapKey.CREATED.getName()).toString()));
}
if (fields.containsKey(MapKey.MODIFIED.getName())) {
this.modified = Date.from(Instant.parse(fields.get(MapKey.MODIFIED.getName()).toString()));
}
if (fields.get(MapKey.FINALIZEDAT.getName()) != null) {
this.finalizedAt = Date.from(Instant.parse(fields.get(MapKey.FINALIZEDAT.getName()).toString()));
}
if (fields.get(MapKey.PUBLISHEDAT.getName()) != null) {
this.publishedAt = Date.from(Instant.parse(fields.get(MapKey.PUBLISHEDAT.getName()).toString()));
}
if (fields.get(MapKey.DOIS.getName()) != null) {
this.dois = ((List<HashMap<String, Object>>) fields.get(MapKey.DOIS.getName())).stream().map(map -> new Doi().fromElasticEntity(map)).collect(Collectors.toList());
}
}
return this;
}
@ -282,7 +362,12 @@ public class Dmp implements ElasticEntity<Dmp> {
ISPUBLIC ("isPublic"),
DATASETS ("datasets"),
GRANT ("grant"),
GRANTSTATUS ("grantStatus");
GRANTSTATUS ("grantStatus"),
CREATED ("created"),
MODIFIED ("modified"),
FINALIZEDAT ("finalizedAt"),
PUBLISHEDAT ("publishedAt"),
DOIS ("dois");
private final String name;

@ -0,0 +1,65 @@
package eu.eudat.elastic.entities;
import org.elasticsearch.common.xcontent.XContentBuilder;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
public class Doi implements ElasticEntity<Doi>{
private UUID id;
private String repositoryId;
private String doi;
private UUID dmp;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getRepositoryId() {
return repositoryId;
}
public void setRepositoryId(String repositoryId) {
this.repositoryId = repositoryId;
}
public String getDoi() {
return doi;
}
public void setDoi(String doi) {
this.doi = doi;
}
public UUID getDmp() {
return dmp;
}
public void setDmp(UUID dmp) {
this.dmp = dmp;
}
@Override
public XContentBuilder toElasticEntity(XContentBuilder builder) throws IOException {
builder.startObject();
builder.field("id", this.id.toString());
builder.field("repositoryId", this.repositoryId);
builder.field("doi", this.doi);
builder.field("dmp", this.dmp.toString());
builder.endObject();
return builder;
}
@Override
public Doi fromElasticEntity(Map<String, Object> fields) {
if (fields == null || fields.isEmpty()) {
return null;
}
this.id = UUID.fromString((String) fields.get("id"));
this.repositoryId = (String) fields.get("repositoryId");
this.doi = (String) fields.get("doi");
this.dmp = UUID.fromString((String) fields.get("dmp"));
return this;
}
}

@ -13,6 +13,14 @@ public class Tag implements ElasticEntity {
private String id;
private String name;
public Tag() {
}
public Tag(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}

@ -24,8 +24,13 @@ import org.elasticsearch.search.aggregations.bucket.filter.ParsedFilters;
import org.elasticsearch.search.aggregations.bucket.nested.NestedAggregationBuilder;
import org.elasticsearch.search.aggregations.bucket.nested.ParsedNested;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import java.io.IOException;
@ -37,10 +42,12 @@ import java.util.stream.Stream;
public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteria> {
private final DmpRepository dmpRepository;
private final Environment environment;
public DatasetRepository(RestHighLevelClient client, DmpRepository dmpRepository) {
public DatasetRepository(RestHighLevelClient client, DmpRepository dmpRepository, Environment environment) {
super(client);
this.dmpRepository = dmpRepository;
this.environment = environment;
}
@Override
@ -48,24 +55,26 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
if (this.getClient() != null) {
XContentBuilder builder = XContentFactory.jsonBuilder();
Dmp dmp = this.dmpRepository.findDocument(entity.getDmp().toString());
boolean found = false;
if (dmp.getDatasets() != null && !dmp.getDatasets().isEmpty()) {
for (int i = 0; i < dmp.getDatasets().size(); i++) {
if (dmp.getDatasets().get(i).getId().equals(entity.getId())) {
dmp.getDatasets().set(i, entity);
found = true;
break;
if (dmp != null) {
boolean found = false;
if (dmp.getDatasets() != null && !dmp.getDatasets().isEmpty()) {
for (int i = 0; i < dmp.getDatasets().size(); i++) {
if (dmp.getDatasets().get(i).getId().equals(entity.getId())) {
dmp.getDatasets().set(i, entity);
found = true;
break;
}
}
}
}
if (!found) {
if (dmp.getDatasets() == null) {
dmp.setDatasets(new ArrayList<>());
if (!found) {
if (dmp.getDatasets() == null) {
dmp.setDatasets(new ArrayList<>());
}
dmp.getDatasets().add(entity);
}
dmp.getDatasets().add(entity);
IndexRequest request = new IndexRequest(this.environment.getProperty("elasticsearch.index")).id(dmp.getId().toString()).source(dmp.toElasticEntity(builder));//new IndexRequest("datasets", "doc", entity.getId()).source(entity.toElasticEntity(builder));
this.getClient().index(request, RequestOptions.DEFAULT);
}
IndexRequest request = new IndexRequest("dmps").id(dmp.getId().toString()).source(dmp.toElasticEntity(builder));//new IndexRequest("datasets", "doc", entity.getId()).source(entity.toElasticEntity(builder));
this.getClient().index(request, RequestOptions.DEFAULT);
return entity;
}
return null;
@ -74,7 +83,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
@Override
public Dataset findDocument(String id) throws IOException {
if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest("dmps");
SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().should(QueryBuilders.termQuery("datasets.id.keyword", id));
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery( "datasets", boolQuery, ScoreMode.Avg).innerHit(new InnerHitBuilder());
@ -95,7 +104,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
@Override
public List<Dataset> query(DatasetCriteria criteria) throws IOException {
if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest("dmps");
SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
/*CountRequest countRequest = new CountRequest("dmps").routing("datasets").routing("id");
@ -103,7 +112,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT);
Long count = countResponse.getCount();*/
SearchRequest countRequest = new SearchRequest("dmps");
SearchRequest countRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("by_dataset", "datasets");
FiltersAggregationBuilder filtersAggregationBuilder = AggregationBuilders.filters("dataset_query", QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status.keyword", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList()))));
nestedAggregationBuilder.subAggregation(filtersAggregationBuilder);
@ -116,84 +125,209 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
searchSourceBuilder.size(count.intValue());
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList())));
if (criteria.isPublic()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.public", "true"));
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.status", Dataset.Status.FINALISED.getValue()));
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.lastPublicVersion", "true"));
}
if (criteria.getLike() != null && !criteria.getLike().isEmpty()) {
boolQuery = boolQuery.should(QueryBuilders.queryStringQuery(criteria.getLike()).allowLeadingWildcard(true).fields(Stream.of(new Object[][]{
{"datasets.label", 1.0f},
{"datasets.description", 1.0f},
{"datasets.formData", 1.0f}
}).collect(Collectors.toMap(data -> (String) data[0], data -> (Float) data[1]))));
}
List<SortBuilder> sortBuilders = new ArrayList<>();
BoolQueryBuilder boolQuery = createBoolQuery(criteria);
if (criteria.getDatasetTemplates() != null && criteria.getDatasetTemplates().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.template", criteria.getDatasetTemplates().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.status", criteria.getStatus().toString()));
}
if (criteria.getSortCriteria() != null && !criteria.getSortCriteria().isEmpty()) {
criteria.getSortCriteria().forEach(sortCriteria -> {
switch(sortCriteria.getColumnType()) {
case COLUMN:
sortBuilders.add(SortBuilders.fieldSort("datasets." + sortCriteria.getFieldName()).order(SortOrder.fromString(sortCriteria.getOrderByType().name())));
break;
case JOIN_COLUMN:
List<String> fields = Arrays.asList(sortCriteria.getFieldName().split(":"));
fields.stream().filter(name -> !name.startsWith("dmp")).forEach(field -> {
sortBuilders.add(SortBuilders.fieldSort(field).order(SortOrder.fromString(sortCriteria.getOrderByType().name())));
});
break;
}
});
if (criteria.getDmps() != null && criteria.getDmps().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.dmp", criteria.getDmps().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGroupIds() != null && criteria.getGroupIds().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.group", criteria.getGroupIds().stream().map(UUID::toString).collect(Collectors.toList())));
}
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("datasets", boolQuery, ScoreMode.Avg).innerHit(new InnerHitBuilder().setFetchSourceContext(new FetchSourceContext(true, new String[]{"datasets.tags"}, null)).setSize(this.environment.getProperty("elasticsearch.innerHitsSize", Integer.class)));
searchSourceBuilder.query(nestedQueryBuilder)/*.from(criteria.getOffset())*/.fetchSource("datasets.tags", null);
/*if (criteria.getSize() > 0) {
searchSourceBuilder.size(criteria.getSize());
}*/
sortBuilders.forEach(searchSourceBuilder::sort);
searchRequest.source(searchSourceBuilder);
SearchResponse response = this.getClient().search(searchRequest, RequestOptions.DEFAULT);
return ((Stream<Dataset>)Arrays.stream(response.getHits().getHits())
.map(hit -> hit.getInnerHits().values()).flatMap(Collection::stream)
.map(SearchHits::getHits).flatMap(Arrays::stream)
.map(x -> new Dataset().fromElasticEntity(this.transformFromString(x.getSourceAsString(), Map.class)))).collect(Collectors.toList());
}
return null;
}
if (criteria.getGrants() != null && criteria.getGrants().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.grant", criteria.getGrants().stream().map(UUID::toString).collect(Collectors.toList())));
}
public List<Dataset> queryIds(DatasetCriteria criteria) throws IOException {
if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
if (criteria.getGrantStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.grantStatus", criteria.getGrantStatus().toString()));
}
/*CountRequest countRequest = new CountRequest("dmps").routing("datasets").routing("id");
countRequest.query(QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status.keyword", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList()))));
CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT);
Long count = countResponse.getCount();*/
if (criteria.getCollaborators() != null && criteria.getCollaborators().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.collaborators.id", criteria.getCollaborators().stream().map(UUID::toString).collect(Collectors.toList())));
}
SearchRequest countRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("by_dataset", "datasets");
FiltersAggregationBuilder filtersAggregationBuilder = AggregationBuilders.filters("dataset_query", QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status.keyword", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList()))));
nestedAggregationBuilder.subAggregation(filtersAggregationBuilder);
SearchSourceBuilder countSourceBuilder = new SearchSourceBuilder();
countSourceBuilder.aggregation(nestedAggregationBuilder);
countRequest.source(countSourceBuilder);
SearchResponse countResponse = getClient().search(countRequest, RequestOptions.DEFAULT);
Long count = ((ParsedFilters)((ParsedNested)countResponse.getAggregations().asMap().get("by_dataset")).getAggregations().get("dataset_query")).getBuckets().get(0).getDocCount();
if (!criteria.isPublic()) {
if (criteria.getAllowAllVersions() != null && !criteria.getAllowAllVersions()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.lastVersion", "true"));
}
}
if (criteria.getOrganiztions() != null && criteria.getOrganiztions().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.organizations.id", criteria.getOrganiztions()));
}
searchSourceBuilder.size(count.intValue());
if (criteria.getTags() != null && criteria.getTags().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.tags.name", criteria.getTags().stream().map(Tag::getName).collect(Collectors.toList())));
}
List<SortBuilder> sortBuilders = new ArrayList<>();
BoolQueryBuilder boolQuery = createBoolQuery(criteria);
if (criteria.getSortCriteria() != null && !criteria.getSortCriteria().isEmpty()) {
criteria.getSortCriteria().forEach(sortCriteria -> {
switch(sortCriteria.getColumnType()) {
case COLUMN:
sortBuilders.add(SortBuilders.fieldSort("datasets." + sortCriteria.getFieldName()).order(SortOrder.fromString(sortCriteria.getOrderByType().name())));
break;
case JOIN_COLUMN:
List<String> fields = Arrays.asList(sortCriteria.getFieldName().split(":"));
fields.stream().filter(name -> !name.startsWith("dmp")).forEach(field -> {
sortBuilders.add(SortBuilders.fieldSort(field).order(SortOrder.fromString(sortCriteria.getOrderByType().name())));
});
break;
}
});
if (boolQuery.should().isEmpty() && boolQuery.mustNot().isEmpty()) {
boolQuery.should(QueryBuilders.matchAllQuery());
} else {
boolQuery.minimumShouldMatch(boolQuery.should().size());
}
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("datasets", boolQuery, ScoreMode.Avg).innerHit(new InnerHitBuilder());
searchSourceBuilder.query(nestedQueryBuilder);
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("datasets", boolQuery, ScoreMode.None).innerHit(new InnerHitBuilder().setFetchSourceContext(new FetchSourceContext(true, new String[]{"datasets.id"}, null)).setSize(this.environment.getProperty("elasticsearch.innerHitsSize", Integer.class)));
searchSourceBuilder.query(nestedQueryBuilder)/*.from(criteria.getOffset()).size(criteria.getSize())*/.fetchSource("datasets.id", null);
sortBuilders.forEach(searchSourceBuilder::sort);
searchRequest.source(searchSourceBuilder);
SearchResponse response = this.getClient().search(searchRequest, RequestOptions.DEFAULT);
return ((Stream<Dataset>)Arrays.stream(response.getHits().getHits())
.map(hit -> hit.getInnerHits().values()).flatMap(Collection::stream)
.map(SearchHits::getHits).flatMap(Arrays::stream)
.map(x -> new Dataset().fromElasticEntity(this.transformFromString(x.getSourceAsString(), Map.class)))).collect(Collectors.toList());
.map(hit -> hit.getInnerHits().values()).flatMap(Collection::stream)
.map(SearchHits::getHits).flatMap(Arrays::stream)
.map(x -> new Dataset().fromElasticEntity(this.transformFromString(x.getSourceAsString(), Map.class)))).collect(Collectors.toList());
}
return null;
}
@Override
public Long count(DatasetCriteria criteria) throws IOException {
if (this.getClient() != null) {
//CountRequest countRequest = new CountRequest(this.environment.getProperty("elasticsearch.index"));
SearchRequest countRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
BoolQueryBuilder boolQuery = createBoolQuery(criteria);
NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("by_dataset", "datasets");
FiltersAggregationBuilder filtersAggregationBuilder = AggregationBuilders.filters("dataset_query", boolQuery);
nestedAggregationBuilder.subAggregation(filtersAggregationBuilder);
SearchSourceBuilder countSourceBuilder = new SearchSourceBuilder();
countSourceBuilder.aggregation(nestedAggregationBuilder);
countRequest.source(countSourceBuilder);
SearchResponse countResponse = getClient().search(countRequest, RequestOptions.DEFAULT);
return ((ParsedFilters)((ParsedNested)countResponse.getAggregations().asMap().get("by_dataset")).getAggregations().get("dataset_query")).getBuckets().get(0).getDocCount();
/*NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("datasets", boolQuery, ScoreMode.None).innerHit(new InnerHitBuilder());
countRequest.query(nestedQueryBuilder);
CountResponse response = this.getClient().count(countRequest, RequestOptions.DEFAULT);
return response.getCount();*/
}
return null;
}
private BoolQueryBuilder createBoolQuery(DatasetCriteria criteria) {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList())));
if (criteria.isPublic()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.public", "true"));
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.status", Dataset.Status.FINALISED.getValue()));
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.lastPublicVersion", "true"));
}
if (criteria.getLike() != null && !criteria.getLike().isEmpty()) {
boolQuery = boolQuery.should(QueryBuilders.queryStringQuery(criteria.getLike()).allowLeadingWildcard(true).fields(Stream.of(new Object[][]{
{"datasets.label", 1.0f},
{"datasets.description", 1.0f},
{"datasets.formData", 1.0f}
}).collect(Collectors.toMap(data -> (String) data[0], data -> (Float) data[1]))));
}
if (criteria.getDatasetTemplates() != null && criteria.getDatasetTemplates().size() > 0) {
criteria.setDatasetTemplates(criteria.getDatasetTemplates().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.template", criteria.getDatasetTemplates().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.status", criteria.getStatus().toString()));
}
if (criteria.getDmps() != null && criteria.getDmps().size() > 0) {
criteria.setDmps(criteria.getDmps().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.dmp", criteria.getDmps().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGroupIds() != null && criteria.getGroupIds().size() > 0) {
criteria.setGroupIds(criteria.getGroupIds().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.group", criteria.getGroupIds().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGrants() != null && criteria.getGrants().size() > 0) {
criteria.setGrants(criteria.getGrants().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.grant", criteria.getGrants().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGrantStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.grantStatus", criteria.getGrantStatus().toString()));
}
if (criteria.getCollaborators() != null && criteria.getCollaborators().size() > 0) {
criteria.setCollaborators(criteria.getCollaborators().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.collaborators.id.keyword", criteria.getCollaborators().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (!criteria.isPublic()) {
if (criteria.getAllowAllVersions() != null && !criteria.getAllowAllVersions()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery("datasets.lastVersion", "true"));
}
}
if (criteria.getOrganiztions() != null && criteria.getOrganiztions().size() > 0) {
criteria.setOrganiztions(criteria.getOrganiztions().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.organizations.id", criteria.getOrganiztions()));
}
if (criteria.getTags() != null && criteria.getTags().size() > 0) {
criteria.setTags(criteria.getTags().stream().filter(Objects::nonNull).collect(Collectors.toList()));
boolQuery = boolQuery.should(QueryBuilders.termsQuery("datasets.tags.name", criteria.getTags().stream().map(Tag::getName).collect(Collectors.toList())));
}
if (criteria.getHasTags() != null) {
boolQuery = criteria.getHasTags() == true ? boolQuery.should(QueryBuilders.existsQuery("datasets.tags.id")) : boolQuery.mustNot(QueryBuilders.existsQuery("datasets.tags.id"));
}
if (boolQuery.should().isEmpty() && boolQuery.mustNot().isEmpty()) {
boolQuery.should(QueryBuilders.matchAllQuery());
} else {
boolQuery.minimumShouldMatch(boolQuery.should().size());
}
return boolQuery;
}
@Override
public boolean exists() throws IOException {
if (this.getClient() != null) {
GetIndexRequest request = new GetIndexRequest("dmps");
GetIndexRequest request = new GetIndexRequest(this.environment.getProperty("elasticsearch.index"));
// request.indices("datasets");
return this.getClient().indices().exists(request, RequestOptions.DEFAULT);
}

@ -23,9 +23,13 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import java.io.IOException;
@ -37,9 +41,12 @@ import java.util.stream.Stream;
public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
private static final Logger logger = LoggerFactory.getLogger(DmpRepository.class);
private final Environment environment;
@Autowired
public DmpRepository(RestHighLevelClient client) {
public DmpRepository(RestHighLevelClient client, Environment environment) {
super(client);
this.environment = environment;
}
private void generateMapping() throws IOException {
@ -52,7 +59,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
builder.endObject();
builder.endObject();
builder.endObject();
PutMappingRequest putMappingRequest = new PutMappingRequest("dmps");
PutMappingRequest putMappingRequest = new PutMappingRequest(this.environment.getProperty("elasticsearch.index"));
putMappingRequest.source(builder);
this.getClient().indices().putMapping(putMappingRequest, RequestOptions.DEFAULT);
}
@ -62,7 +69,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
public Dmp createOrUpdate(Dmp entity) throws IOException {
if (this.getClient() != null) {
XContentBuilder builder = XContentFactory.jsonBuilder();
IndexRequest request = new IndexRequest("dmps").id(entity.getId().toString()).source(entity.toElasticEntity(builder));
IndexRequest request = new IndexRequest(this.environment.getProperty("elasticsearch.index")).id(entity.getId().toString()).source(entity.toElasticEntity(builder));
IndexResponse response = this.getClient().index(request, RequestOptions.DEFAULT);
return entity;
}
@ -72,7 +79,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override
public Dmp findDocument(String id) throws IOException {
if (this.getClient() != null) {
GetRequest request = new GetRequest("dmps", id);
GetRequest request = new GetRequest(this.environment.getProperty("elasticsearch.index"), id);
GetResponse response = this.getClient().get(request, RequestOptions.DEFAULT);
return new Dmp().fromElasticEntity(response.getSourceAsMap());
}
@ -82,77 +89,118 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override
public List<Dmp> query(DmpCriteria criteria) throws IOException {
if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest("dmps");
SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
CountRequest countRequest = new CountRequest("dmps");
CountRequest countRequest = new CountRequest(this.environment.getProperty("elasticsearch.index"));
countRequest.query(QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery(Dmp.MapKey.STATUS.getName(), Collections.singletonList(Dmp.DMPStatus.DELETED.getValue()))));
CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT);
Long count = countResponse.getCount();
searchSourceBuilder.size(count.intValue());
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery(Dmp.MapKey.STATUS.getName(), Collections.singletonList(Dmp.DMPStatus.DELETED.getValue())));
if (criteria.isPublic()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.ISPUBLIC.getName(), true));
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.STATUS.getName(), Dmp.DMPStatus.FINALISED.getValue()));
List<SortBuilder> sortBuilders = new ArrayList<>();
BoolQueryBuilder boolQuery = createBoolQuery(criteria);
if (criteria.getSortCriteria() != null && !criteria.getSortCriteria().isEmpty()) {
criteria.getSortCriteria().forEach(sortCriteria -> {
switch(sortCriteria.getColumnType()) {
case COLUMN:
sortBuilders.add(SortBuilders.fieldSort(sortCriteria.getFieldName()).order(SortOrder.fromString(sortCriteria.getOrderByType().name())));
break;
case JOIN_COLUMN:
List<String> fields = Arrays.asList(sortCriteria.getFieldName().split(":"));
fields.forEach(field -> {
sortBuilders.add(SortBuilders.fieldSort(sortCriteria.getFieldName()).order(SortOrder.fromString(sortCriteria.getOrderByType().name())));
});
break;
}
});
}
if (criteria.getLike() != null && !criteria.getLike().isEmpty()) {
boolQuery = boolQuery.should(QueryBuilders.queryStringQuery(criteria.getLike()).fields(Stream.of(new Object[][]{
{Dmp.MapKey.LABEL.getName(), 1.0f},
{Dmp.MapKey.DESCRIPTION.getName(), 1.0f}
}).collect(Collectors.toMap(data -> (String) data[0], data -> (Float) data[1]))));
searchSourceBuilder.query(boolQuery).from(criteria.getOffset()).fetchSource("id", null);
if (criteria.getSize() != null && criteria.getSize() > 0) {
searchSourceBuilder.size(criteria.getSize());
}
sortBuilders.forEach(searchSourceBuilder::sort);
searchRequest.source(searchSourceBuilder);
SearchResponse response = this.getClient().search(searchRequest, RequestOptions.DEFAULT);
return Arrays.stream(response.getHits().getHits()).map(x -> new Dmp().fromElasticEntity((Map<String, Object>) this.transformFromString(x.getSourceAsString(), Map.class))).collect(Collectors.toList());
}
return null;
}
if (criteria.getTemplates() != null && criteria.getTemplates().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.TEMPLATES.getName() + ".id.keyword", criteria.getTemplates().stream().map(UUID::toString).collect(Collectors.toList())));
}
@Override
public Long count(DmpCriteria criteria) throws IOException {
if (this.getClient() != null) {
CountRequest countRequest = new CountRequest(this.environment.getProperty("elasticsearch.index"));
if (criteria.getStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.STATUS.getName(), criteria.getStatus().intValue()));
}
BoolQueryBuilder boolQuery = createBoolQuery(criteria);
if (criteria.getGroupIds() != null && criteria.getGroupIds().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.GROUPID.getName(), criteria.getGroupIds().stream().map(UUID::toString).collect(Collectors.toList())));
}
countRequest.query(boolQuery);
CountResponse response = this.getClient().count(countRequest, RequestOptions.DEFAULT);
return response.getCount();
}
return null;
}
if (criteria.getGrants() != null && criteria.getGrants().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.GRANT.getName() + ".keyword", criteria.getGrants().stream().map(UUID::toString).collect(Collectors.toList())));
}
private BoolQueryBuilder createBoolQuery(DmpCriteria criteria) {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery(Dmp.MapKey.STATUS.getName(), Collections.singletonList(Dmp.DMPStatus.DELETED.getValue())));
if (criteria.isPublic()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.ISPUBLIC.getName(), true));
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.STATUS.getName(), Dmp.DMPStatus.FINALISED.getValue()));
}
if (criteria.getLike() != null && !criteria.getLike().isEmpty()) {
boolQuery = boolQuery.should(QueryBuilders.queryStringQuery(criteria.getLike()).fields(Stream.of(new Object[][]{
{Dmp.MapKey.LABEL.getName(), 1.0f},
{Dmp.MapKey.DESCRIPTION.getName(), 1.0f}
}).collect(Collectors.toMap(data -> (String) data[0], data -> (Float) data[1]))));
}
if (criteria.getCollaborators() != null && criteria.getCollaborators().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.COLLABORATORS.getName() + ".keyword", criteria.getCollaborators().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getTemplates() != null && criteria.getTemplates().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.TEMPLATES.getName() + ".id.keyword", criteria.getTemplates().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (!criteria.isAllowAllVersions()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(criteria.isPublic() ? Dmp.MapKey.LASTPUBLICVERSION.getName() : Dmp.MapKey.LASTVERSION.getName(), true));
}
if (criteria.getStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.STATUS.getName(), criteria.getStatus().intValue()));
}
if (criteria.getOrganizations() != null && criteria.getOrganizations().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.ORGANIZATIONS.getName() + ".id.keyword", criteria.getOrganizations().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGroupIds() != null && criteria.getGroupIds().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.GROUPID.getName(), criteria.getGroupIds().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGrantStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.GRANTSTATUS.getName(), criteria.getGrantStatus()));
}
if (criteria.getGrants() != null && criteria.getGrants().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.GRANT.getName() + ".keyword", criteria.getGrants().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (boolQuery.should().isEmpty() && boolQuery.mustNot().isEmpty()) {
boolQuery = boolQuery.should(QueryBuilders.matchAllQuery());
} else {
boolQuery.minimumShouldMatch(boolQuery.should().size());
}
searchSourceBuilder.query(boolQuery);
searchRequest.source(searchSourceBuilder);
SearchResponse response = this.getClient().search(searchRequest, RequestOptions.DEFAULT);
return Arrays.stream(response.getHits().getHits()).map(x -> new Dmp().fromElasticEntity((Map<String, Object>) this.transformFromString(x.getSourceAsString(), Map.class))).collect(Collectors.toList());
if (criteria.getCollaborators() != null && criteria.getCollaborators().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.COLLABORATORS.getName() + ".id.keyword", criteria.getCollaborators().stream().filter(Objects::nonNull).map(UUID::toString).collect(Collectors.toList())));
}
return null;
if (!criteria.isAllowAllVersions()) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(criteria.isPublic() ? Dmp.MapKey.LASTPUBLICVERSION.getName() : Dmp.MapKey.LASTVERSION.getName(), true));
}
if (criteria.getOrganizations() != null && criteria.getOrganizations().size() > 0) {
boolQuery = boolQuery.should(QueryBuilders.termsQuery(Dmp.MapKey.ORGANIZATIONS.getName() + ".id.keyword", criteria.getOrganizations().stream().map(UUID::toString).collect(Collectors.toList())));
}
if (criteria.getGrantStatus() != null) {
boolQuery = boolQuery.should(QueryBuilders.termQuery(Dmp.MapKey.GRANTSTATUS.getName(), criteria.getGrantStatus()));
}
if (boolQuery.should().isEmpty() && boolQuery.mustNot().isEmpty()) {
boolQuery = boolQuery.should(QueryBuilders.matchAllQuery());
} else {
boolQuery.minimumShouldMatch(boolQuery.should().size());
}
return boolQuery;
}
public boolean createIndex() {
try {
if (!this.exists()) {
CreateIndexRequest createIndexRequest = new CreateIndexRequest("dmps");
CreateIndexRequest createIndexRequest = new CreateIndexRequest(this.environment.getProperty("elasticsearch.index"));
this.getClient().indices().create(createIndexRequest, RequestOptions.DEFAULT);
this.generateMapping();
}
@ -166,7 +214,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override
public boolean exists() throws IOException {
if (this.getClient() != null) {
GetIndexRequest request = new GetIndexRequest("dmps");
GetIndexRequest request = new GetIndexRequest(this.environment.getProperty("elasticsearch.index"));
return this.getClient().indices().exists(request, RequestOptions.DEFAULT);
}
return false;
@ -175,10 +223,10 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override
public void clear() throws IOException {
if (exists()) {
DeleteByQueryRequest delete = new DeleteByQueryRequest("dmps");
DeleteByQueryRequest delete = new DeleteByQueryRequest(this.environment.getProperty("elasticsearch.index"));
delete.setQuery(QueryBuilders.matchAllQuery());
this.getClient().deleteByQuery(delete, RequestOptions.DEFAULT);
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("dmps");
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(this.environment.getProperty("elasticsearch.index"));
this.getClient().indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
}
}

@ -30,6 +30,7 @@ public abstract class ElasticRepository<T extends ElasticEntity,C extends Criter
}
} catch (IOException e) {
logger.warn("Unable to connect to Elastic Services");
logger.error(e.getMessage(), e);
this.client = null;
}
}

@ -18,6 +18,8 @@ public interface Repository<ET extends ElasticEntity, C extends Criteria> {
List<ET> query(C criteria) throws ExecutionException, InterruptedException, IOException;
Long count(C criteria) throws ExecutionException, InterruptedException, IOException;
boolean exists() throws IOException;
void clear() throws IOException;

@ -10,7 +10,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<version>2.5.2</version>
</parent>
<modules>
@ -27,25 +27,27 @@
<java.version>1.8</java.version>
<dmp-backend-commons.version>0.0.1-SNAPSHOT</dmp-backend-commons.version>
<org.springframework.version>4.3.8.RELEASE</org.springframework.version>
<org.springframework.version>5.3.8</org.springframework.version>
<!-- <org.springframeweu.eudat.logic.securityrity.version>3.2.10.RELEASE</org.springframeweu.eudat.logic.securityrity.version> -->
<org.springframework.security.version>4.2.3.RELEASE</org.springframework.security.version>
<com.sun.jersey.version>1.19.1</com.sun.jersey.version>
<org.springframework.security.version>5.3.10.RELEASE</org.springframework.security.version>
<!--<com.sun.jersey.version>1.19.1</com.sun.jersey.version>-->
<!--
<org.apache.tomcat.tomcat-jdbc.version>7.0.35</org.apache.tomcat.tomcat-jdbc.version>
<com.fasterxml.jackson>2.8.4</com.fasterxml.jackson>
-->
<!--<com.fasterxml.jackson>2.9.0</com.fasterxml.jackson>-->
<hibernate.version>5.2.11.Final</hibernate.version>
<hibernate.version>5.5.3.Final</hibernate.version>
<commons-codec.version>1.9</commons-codec.version>
<org.junit.version>4.11</org.junit.version>
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.12</slf4j.version>
<jetty.version>9.0.7.v20131107
</jetty.version> <!-- Adapt this to a version found on http://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-maven-plugin/ -->
<log4j2.version>2.15.0</log4j2.version>
<slf4j.version>1.7.15</slf4j.version>
<!--<jetty.version>11.0.5
</jetty.version>--> <!-- Adapt this to a version found on http://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-maven-plugin/ -->
<logback.version>1.2.3</logback.version>
<javax.inject.version>1</javax.inject.version>
<javax.servlet.servlet-api.version>3.0.1</javax.servlet.servlet-api.version>
<docker.image.prefix>ikalyvas</docker.image.prefix>
<!-- <javax.inject.version>1</javax.inject.version>-->
<!--<javax.servlet.servlet-api.version>3.0.1</javax.servlet.servlet-api.version>-->
</properties>
<dependencies>
@ -58,7 +60,7 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.0.0.RELEASE</version>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -69,7 +71,39 @@
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.6.0</version>
<version>7.7.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore-nio</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore-nio</artifactId>
<version>4.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
<dependency>
@ -107,7 +141,7 @@
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.3</version>
<version>2.12.3</version>
</dependency>
@ -115,13 +149,13 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.4</version>
<version>2.12.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackeu.eudat.corecore/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
<version>2.12.3</version>
</dependency>
<!-- g/a spring -->
@ -139,13 +173,13 @@
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
<version>4.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/fop -->
@ -154,6 +188,12 @@
<artifactId>fop</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.pdf -->
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
@ -179,10 +219,10 @@
<version>2.1</version>
</dependency>
<dependency>
<!--<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
</dependency>
</dependency>-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
@ -190,11 +230,90 @@
<version>7.6.0</version>
</dependency>
<dependency>
<!--<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.8.2</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-core -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- The client -->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.11.0</version>
</dependency>
<!-- Hotspot JVM metrics-->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_hotspot</artifactId>
<version>0.11.0</version>
</dependency>
<!-- Exposition HTTPServer-->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_httpserver</artifactId>
<version>0.11.0</version>
</dependency>
<!-- Pushgateway exposition-->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_pushgateway</artifactId>
<version>0.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micormeter core dependecy -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
</dependency>
</dependencies>
@ -208,6 +327,18 @@
<packaging.type>jar</packaging.type>
</properties>
</profile>
<profile>
<id>intellij-properties-launcher</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader</artifactId>
<version>2.5.2</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>production</id>
<properties>

@ -4,8 +4,8 @@ import eu.eudat.queryable.jpa.predicates.*;
import eu.eudat.queryable.queryableentity.DataEntity;
import eu.eudat.queryable.types.SelectionField;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Subquery;
import java.util.List;
import java.util.Map;
@ -44,6 +44,8 @@ public interface QueryableList<T extends DataEntity> {
QueryableList<T> orderBy(OrderByPredicate<T> predicate);
QueryableList<T> groupBy(GroupByPredicate<T> predicate);
QueryableList<T> withHint(String hint);
Long count();
@ -67,4 +69,8 @@ public interface QueryableList<T extends DataEntity> {
<U extends Comparable> Subquery<U> subQueryMax(SinglePredicate<T> predicate, List<SelectionField> fields, Class<U> uClass);
<U extends Comparable> Subquery<U> subQueryMax(NestedQuerySinglePredicate<T> predicate, List<SelectionField> fields, Class<U> uClass);
Join getJoin(String field, JoinType type);
}

@ -1,6 +1,9 @@
package eu.eudat.queryable.collector;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.persistence.Tuple;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -9,9 +12,13 @@ import java.util.stream.Collectors;
public class Collector {
public List<Map> buildFromTuple(List<Tuple> results, Map<Object, List<Tuple>> groupedResults, List<String> fields, String key) {
return groupedResults.keySet().stream()
return results.stream().map(tuple -> {
Map<String, Object> parsedResult = new HashMap<>();
tuple.getElements().forEach(tupleElement -> parsedResult.put(tupleElement.getAlias(), tuple.get(tupleElement.getAlias())));
return parsedResult;
}).collect(Collectors.toList());/*groupedResults.keySet().stream()
.map(x -> buildOne(groupedResults.get(x), fields, key))
.collect(Collectors.toList());
.collect(Collectors.toList());*/
}
private Map buildOne(List<Tuple> tuples, List<String> fields, String key) {

@ -1,5 +1,6 @@
package eu.eudat.queryable.jpa.hibernatequeryablelist;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.collector.Collector;
import eu.eudat.queryable.exceptions.NotSingleResultException;
@ -33,6 +34,7 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
private List<NestedQuerySinglePredicate<T>> nestedPredicates = new LinkedList<>();
private boolean distinct = false;
private List<OrderByPredicate<T>> orderings = new LinkedList<>();
private List<GroupByPredicate<T>> groupings = new LinkedList<>();
private List<String> fields = new LinkedList<>();
private Integer length;
private Integer offset;
@ -62,7 +64,7 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
}
private QueryableList<T> selectFields() {
List<Selection> rootFields = fields.stream().map(field -> this.convertFieldToPath(field)).filter(x -> x != null).collect(Collectors.toList());
List<Selection> rootFields = fields.stream().map(this::convertFieldToPath).filter(Objects::nonNull).collect(Collectors.toList());
this.query.select(this.manager.getCriteriaBuilder().tuple(rootFields.toArray(new Selection[rootFields.size()])));
return this;
}
@ -93,7 +95,7 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
return join;
}
private Join getJoin(String field, JoinType type) {
public Join getJoin(String field, JoinType type) {
if (this.joinsMap.containsKey(field)) return this.joinsMap.get(field);
Join join = this.root.join(field, type);
this.joinsMap.put(field, join);
@ -133,11 +135,11 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
}
public <R> List<R> select(SelectPredicate<T, R> predicate) {
return this.toList().stream().map(item -> predicate.applySelection(item)).collect(Collectors.toList());
return this.toList().stream().map(predicate::applySelection).collect(Collectors.toList());
}
public <R> CompletableFuture<List<R>> selectAsync(SelectPredicate<T, R> predicate) {
return this.toListAsync().thenApplyAsync(items -> items.stream().map(item -> predicate.applySelection(item)).collect(Collectors.toList()));
return this.toListAsync().thenApplyAsync(items -> items.stream().map(predicate::applySelection).collect(Collectors.toList()));
}
public QueryableList<T> distinct() {
@ -150,6 +152,11 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
return this;
}
public QueryableList<T> groupBy(GroupByPredicate<T> predicate) {
this.groupings.add(predicate);
return this;
}
public Long count() {
CriteriaBuilder criteriaBuilder = this.manager.getCriteriaBuilder();
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
@ -157,8 +164,16 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
if (distinct) criteriaQuery.select(criteriaBuilder.countDistinct(this.root.get("id")));
else criteriaQuery.select(criteriaBuilder.count(this.root));
criteriaQuery.where(this.generateWherePredicates(this.singlePredicates, this.root, this.nestedPredicates, this.nestedQueryRoot));
if (!this.groupings.isEmpty()) criteriaQuery.groupBy(this.generateGroupPredicates(this.groupings, this.root));
//if (distinct) criteriaQuery.distinct(true);
return this.manager.createQuery(criteriaQuery).getSingleResult();
//GK: Group By special case. When group by is used, since it will result in a list of how many elements have the grouped field common
// then it will instead return the number of the distinct values of the grouped field
if (this.groupings.isEmpty()) {
return this.manager.createQuery(criteriaQuery).getSingleResult();
} else {
return (long) this.manager.createQuery(criteriaQuery).getResultList().size();
}
}
@Async
@ -169,8 +184,15 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
if (distinct) criteriaQuery.select(criteriaBuilder.countDistinct(this.root.get("id")));
else criteriaQuery.select(criteriaBuilder.count(this.root));
criteriaQuery.where(this.generateWherePredicates(this.singlePredicates, this.root, this.nestedPredicates, this.nestedQueryRoot));
if (!this.groupings.isEmpty()) criteriaQuery.groupBy(this.generateGroupPredicates(this.groupings, this.root));
//if (distinct) criteriaQuery.distinct(true);
return CompletableFuture.supplyAsync(() -> this.manager.createQuery(criteriaQuery).getSingleResult());
return CompletableFuture.supplyAsync(() -> {
if (this.groupings.isEmpty()) {
return this.manager.createQuery(criteriaQuery).getSingleResult();
} else {
return (long) this.manager.createQuery(criteriaQuery).getResultList().size();
}
});
}
@ -205,6 +227,14 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
return predicates.toArray(new Order[predicates.size()]);
}
private Expression[] generateGroupPredicates(List<GroupByPredicate<T>> groupByPredicates, Root<T> root) {
List<Expression> predicates = new LinkedList<>();
for (GroupByPredicate<T> groupPredicate : groupByPredicates) {
predicates.add(groupPredicate.applyPredicate(this.manager.getCriteriaBuilder(), root));
}
return predicates.toArray(new Expression[predicates.size()]);
}
public List<T> toList() {
CriteriaBuilder builder = this.manager.getCriteriaBuilder();
if (!this.fields.isEmpty()) this.query = builder.createTupleQuery();
@ -212,22 +242,20 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
this.root = this.query.from(this.tClass);
this.query.where(this.generateWherePredicates(this.singlePredicates, this.root, this.nestedPredicates, this.nestedQueryRoot));
if (!this.orderings.isEmpty()) this.query.orderBy(this.generateOrderPredicates(this.orderings, this.root));
if (!this.groupings.isEmpty()) this.query.groupBy(this.generateGroupPredicates(this.groupings, this.root));
if (!this.fields.isEmpty()) this.selectFields();
if (distinct) this.query.distinct(true);
//if (!this.fields.isEmpty()) return this.toListWithFields();
//if (!this.fields.isEmpty()) this.query.multiselect(this.parseFields(this.fields));
ObjectMapper mapper = new ObjectMapper();
if (!this.fields.isEmpty()) return this.toListWithFields().stream().map(m -> mapper.convertValue(m, this.tClass)).collect(Collectors.toList());
return this.toListWithOutFields();
}
public List<Map> toListWithFields() {
CriteriaBuilder builder = this.manager.getCriteriaBuilder();
if (!this.fields.isEmpty()) this.query = builder.createTupleQuery();
else this.query = builder.createQuery(this.tClass);
this.root = this.query.from(this.tClass);
this.query.where(this.generateWherePredicates(this.singlePredicates, this.root, this.nestedPredicates, this.nestedQueryRoot));
if (!this.orderings.isEmpty()) this.query.orderBy(this.generateOrderPredicates(this.orderings, this.root));
if (!this.fields.isEmpty()) this.selectFields();
if (distinct) this.query.distinct(true);
List<Tuple> results = this.manager.createQuery(query).getResultList();
TypedQuery<Tuple> typedQuery = this.manager.createQuery(this.query);
if (this.offset != null) typedQuery.setFirstResult(this.offset);
if (this.length != null) typedQuery.setMaxResults(this.length);
List<Tuple> results = typedQuery.getResultList();
Map<Object, List<Tuple>> groupedResults = results.stream()
.collect(Collectors.groupingBy(x -> x.get("id")));
return this.collector.buildFromTuple(results, groupedResults, this.fields, "id");
@ -252,6 +280,7 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
this.root = this.query.from(this.tClass);
this.query.where(this.generateWherePredicates(this.singlePredicates, this.root, this.nestedPredicates, this.nestedQueryRoot));
if (!this.orderings.isEmpty()) this.query.orderBy(this.generateOrderPredicates(this.orderings, this.root));
if (!this.groupings.isEmpty()) this.query.groupBy(this.generateGroupPredicates(this.groupings, this.root));
if (!this.fields.isEmpty()) this.selectFields();
if (distinct) this.query.distinct(true);
if (!this.fields.isEmpty()) return this.toListAsyncWithFields();
@ -356,6 +385,8 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
if (!this.orderings.isEmpty())
criteriaQuery.orderBy(this.generateOrderPredicates(this.orderings, criteriaRoot));
if (!this.groupings.isEmpty()) criteriaQuery.groupBy(this.generateGroupPredicates(this.groupings, this.root));
TypedQuery<T> typedQuery = this.manager.createQuery(criteriaQuery);
typedQuery.setHint("javax.persistence.fetchgraph", this.manager.getEntityGraph(this.hint));
return typedQuery;
@ -466,4 +497,11 @@ public class QueryableHibernateList<T extends DataEntity> implements QueryableLi
.createQuery(update)
.executeUpdate();
}
private Path[] parseFields(List<String> selectedFields) {
List<Path> paths = new ArrayList<>();
selectedFields.forEach(s -> paths.add(root.get(s)));
return paths.toArray(new Path[0]);
}
}

@ -0,0 +1,10 @@
package eu.eudat.queryable.jpa.predicates;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Root;
public interface GroupByPredicate<T> {
Expression<T> applyPredicate(CriteriaBuilder builder, Root<T> root);
}

@ -26,13 +26,16 @@
<artifactId>queryable</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>eu.eudat</groupId>
<artifactId>elastic</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>gr.cite.opendmp</groupId>
<artifactId>repositorydepositbase</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
@ -43,6 +46,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
@ -50,44 +57,60 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
<version>2.12.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<!--<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<version>5.3.8</version>
</dependency>-->
<!-- guava eu.eudat.cache -->
<dependency>
<!-- <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<version>30.1.1-jre</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
<version>42.2.22</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!-- facebook Login -->
@ -101,7 +124,7 @@
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-linkedin</artifactId>
<version>1.0.0.RELEASE</version>
<version>1.0.2.RELEASE</version>
</dependency>
<!-- tweeter login-->
@ -114,6 +137,66 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-core</artifactId>
<version>${opensaml.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-saml-api</artifactId>
<version>${opensaml.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-saml-impl</artifactId>
<version>${opensaml.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-soap-api</artifactId>
<version>${opensaml.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-xmlsec-api</artifactId>
<version>${opensaml.version}</version>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-security-api</artifactId>
<version>${opensaml.version}</version>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-security-impl</artifactId>
<version>${opensaml.version}</version>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-profile-api</artifactId>
<version>${opensaml.version}</version>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>xmltooling</artifactId>
<version>1.4.4</version>
</dependency>
<dependency>
<groupId>jakarta.xml.soap</groupId>
<artifactId>jakarta.xml.soap-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>3.0.0-M2</version>
</dependency>
</dependencies>
<build>
@ -134,6 +217,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
@ -142,11 +226,46 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.9.RELEASE</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>eu.eudat.EuDatApplication</mainClass>
<classpathPrefix>dependency-jars/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/dependency-jars/
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<start-class>eu.eudat.EuDatApplication</start-class>
<opensaml.version>4.0.1</opensaml.version>
</properties>
</project>

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

Loading…
Cancel
Save