Merge branch 'Development'
# Conflicts: # dmp-backend/web/src/main/resources/RDACommonStandards.txt
This commit is contained in:
commit
b04b35d62b
|
@ -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(
|
||||
|
|
|
@ -34,7 +34,7 @@ public class Credential implements DataEntity<Credential, UUID> {
|
|||
private Integer provider;
|
||||
@Column(name = "\"Public\"", nullable = false)
|
||||
private String publicValue;
|
||||
@Column(name = "\"Email\"", nullable = false)
|
||||
@Column(name = "\"Email\"")
|
||||
private String email;
|
||||
@Column(name = "\"Secret\"", nullable = false)
|
||||
private String secret;
|
||||
|
|
|
@ -31,7 +31,7 @@ public class EmailConfirmation implements DataEntity<EmailConfirmation, UUID> {
|
|||
@Column(name = "\"userId\"", nullable = false)
|
||||
private UUID userId;
|
||||
|
||||
@Column(name = "\"data\"", nullable = false)
|
||||
@Column(name = "\"data\"")
|
||||
private String data;
|
||||
|
||||
@Column(name = "\"expiresAt\"", nullable = false)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -317,8 +317,12 @@ public class Dmp implements ElasticEntity<Dmp> {
|
|||
if (fields.get(MapKey.GRANTSTATUS.getName()) != null) {
|
||||
this.grantStatus = Short.valueOf(fields.get(MapKey.GRANTSTATUS.getName()).toString());
|
||||
}
|
||||
this.created = Date.from(Instant.parse(fields.get(MapKey.CREATED.getName()).toString()));
|
||||
this.modified = Date.from(Instant.parse(fields.get(MapKey.MODIFIED.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()));
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
<commons-codec.version>1.9</commons-codec.version>
|
||||
<org.junit.version>4.11</org.junit.version>
|
||||
<log4j.version>1.2.17</log4j.version>
|
||||
<log4j2.version>2.15.0</log4j2.version>
|
||||
<slf4j.version>1.7.12</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/ -->
|
||||
|
@ -218,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>
|
||||
|
@ -229,11 +230,11 @@
|
|||
<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>
|
||||
</dependency>-->
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
|
||||
<dependency>
|
||||
|
|
|
@ -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;
|
||||
|
@ -69,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);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -64,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;
|
||||
}
|
||||
|
@ -95,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);
|
||||
|
@ -135,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() {
|
||||
|
|
|
@ -32,6 +32,10 @@ public class ResponsesCache {
|
|||
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
|
||||
List<CaffeineCache> caches = new ArrayList<CaffeineCache>();
|
||||
caches.add(new CaffeineCache("repositories", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("pubrepos", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("journals", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("taxonomies", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("publications", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("grants", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("projects", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
caches.add(new CaffeineCache("funders", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
||||
|
|
|
@ -73,7 +73,8 @@ public class Admin extends BaseController {
|
|||
userDatasetProfile.setRole(0);
|
||||
getApiContext().getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile);
|
||||
datasetProfileManager.storeDatasetProfileUsers(datasetProfile, profile);
|
||||
metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricNames.TOTAL);
|
||||
|
||||
metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricsManager.datasetTemplateStatus.get(datasetProfile.getStatus()) );
|
||||
return ResponseEntity.status(HttpStatus.OK).body(modelDefinition.getId());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.criteria.RecentActivityCriteria;
|
||||
import eu.eudat.logic.managers.DashBoardManager;
|
||||
import eu.eudat.logic.security.claims.ClaimedAuthorities;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
|
@ -49,7 +48,7 @@ public class DashBoardController extends BaseController {
|
|||
@RequestMapping(method = RequestMethod.POST, value = {"/dashboard/recentActivity"}, produces = "application/json")
|
||||
@Transactional
|
||||
public ResponseEntity<ResponseItem<List<RecentActivityModel>>> getNewRecentActivity(@RequestBody RecentActivityTableRequest tableRequest,
|
||||
@ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) {
|
||||
@ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws Exception {
|
||||
List<RecentActivityModel> statistics = dashBoardManager.getNewRecentActivity(tableRequest, principal);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<RecentActivityModel>>().status(ApiMessageCode.NO_MESSAGE).payload(statistics));
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
|||
import eu.eudat.logic.security.claims.ClaimedAuthorities;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleServiceImpl;
|
||||
import eu.eudat.logic.utilities.documents.helpers.FileEnvelope;
|
||||
import eu.eudat.logic.utilities.documents.pdf.PDFUtils;
|
||||
import eu.eudat.models.data.dataset.DatasetOverviewModel;
|
||||
|
@ -126,11 +127,11 @@ public class Datasets extends BaseController {
|
|||
public @ResponseBody
|
||||
ResponseEntity getSingle(@PathVariable String id, @RequestHeader("Content-Type") String contentType, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IllegalAccessException, IOException, InstantiationException {
|
||||
try {
|
||||
VisibilityRuleService visibilityRuleService = new VisibilityRuleServiceImpl();
|
||||
if (contentType.equals("application/xml")) {
|
||||
VisibilityRuleService visibilityRuleService = this.getApiContext().getUtilitiesService().getVisibilityRuleService();
|
||||
return this.datasetManager.getDocument(id, visibilityRuleService, contentType, principal);
|
||||
} else if (contentType.equals("application/msword")) {
|
||||
FileEnvelope file = datasetManager.getWordDocumentFile(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService(), principal);
|
||||
FileEnvelope file = datasetManager.getWordDocumentFile(this.configLoader, id, visibilityRuleService, principal);
|
||||
InputStream resource = new FileInputStream(file.getFile());
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
responseHeaders.setContentLength(file.getFile().length());
|
||||
|
@ -218,7 +219,7 @@ public class Datasets extends BaseController {
|
|||
@RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"})
|
||||
public @ResponseBody
|
||||
ResponseEntity<byte[]> getPDFDocument(@PathVariable String id, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IllegalAccessException, IOException, InstantiationException, InterruptedException {
|
||||
FileEnvelope file = datasetManager.getWordDocumentFile(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService(), principal);
|
||||
FileEnvelope file = datasetManager.getWordDocumentFile(this.configLoader, id, new VisibilityRuleServiceImpl(), principal);
|
||||
String fileName = file.getFilename().replace(" ", "_").replace(",", "_");
|
||||
if (fileName.endsWith(".docx")){
|
||||
fileName = fileName.substring(0, fileName.length() - 5);
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.data.entities.DataRepository;
|
||||
import eu.eudat.logic.managers.DataRepositoryManager;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.datarepository.DataRepositoryModel;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.models.data.security.Principal;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping(value = {"/api/external/journals"})
|
||||
public class JournalsController extends BaseController {
|
||||
|
||||
private DataRepositoryManager dataRepositoryManager;
|
||||
|
||||
@Autowired
|
||||
public JournalsController(ApiContext apiContext, DataRepositoryManager dataRepositoryManager) {
|
||||
super(apiContext);
|
||||
this.dataRepositoryManager = dataRepositoryManager;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
|
||||
public @ResponseBody
|
||||
ResponseEntity<ResponseItem<List<DataRepositoryModel>>> listExternalDataRepositories(
|
||||
@RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type, Principal principal
|
||||
) throws HugeResultSet, NoURLFound {
|
||||
List<DataRepositoryModel> dataRepositoryModels = this.dataRepositoryManager.getJournals(query, type, principal);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<DataRepositoryModel>>().status(ApiMessageCode.NO_MESSAGE).payload(dataRepositoryModels));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.logic.managers.PrefillingManager;
|
||||
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.models.data.prefilling.Prefilling;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping(value = {"/api"})
|
||||
public class Prefillings {
|
||||
|
||||
private final PrefillingManager prefillingManager;
|
||||
|
||||
@Autowired
|
||||
public Prefillings(PrefillingManager prefillingManager) {
|
||||
this.prefillingManager = prefillingManager;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, value = {"/prefilling/list"}, produces = "application/json")
|
||||
public ResponseEntity<ResponseItem<List<Prefilling>>> getPrefillingList(@RequestParam String like, @RequestParam String configId) {
|
||||
List<Prefilling> prefillingList = prefillingManager.getPrefillings(like, configId);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<Prefilling>>().payload(prefillingList).status(ApiMessageCode.NO_MESSAGE));
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, value = {"/prefilling/generate/{id}"}, produces = "application/json")
|
||||
public ResponseEntity<ResponseItem<DatasetWizardModel>> getPrefillingDataset(@PathVariable String id, @RequestParam String configId, @RequestParam UUID profileId) throws Exception {
|
||||
DatasetWizardModel datasetWizardModel = prefillingManager.getPrefilledDataset(id, configId, profileId);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DatasetWizardModel>().payload(datasetWizardModel).status(ApiMessageCode.NO_MESSAGE));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.logic.managers.DataRepositoryManager;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.datarepository.DataRepositoryModel;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.models.data.security.Principal;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping(value = {"/api/external/pubrepos"})
|
||||
public class PubRepositoriesController extends BaseController {
|
||||
|
||||
private DataRepositoryManager dataRepositoryManager;
|
||||
|
||||
@Autowired
|
||||
public PubRepositoriesController(ApiContext apiContext, DataRepositoryManager dataRepositoryManager) {
|
||||
super(apiContext);
|
||||
this.dataRepositoryManager = dataRepositoryManager;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
|
||||
public @ResponseBody
|
||||
ResponseEntity<ResponseItem<List<DataRepositoryModel>>> listExternalDataRepositories(
|
||||
@RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type, Principal principal
|
||||
) throws HugeResultSet, NoURLFound {
|
||||
List<DataRepositoryModel> dataRepositoryModels = this.dataRepositoryManager.getPubRepositories(query, type, principal);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<DataRepositoryModel>>().status(ApiMessageCode.NO_MESSAGE).payload(dataRepositoryModels));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.logic.managers.PublicationManager;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.models.data.publication.PublicationModel;
|
||||
import eu.eudat.models.data.security.Principal;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping(value = {"/api/external/publications"})
|
||||
public class PublicationsController extends BaseController {
|
||||
|
||||
private PublicationManager publicationManager;
|
||||
|
||||
@Autowired
|
||||
public PublicationsController(ApiContext apiContext, PublicationManager publicationManager) {
|
||||
super(apiContext);
|
||||
this.publicationManager = publicationManager;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
|
||||
public @ResponseBody
|
||||
ResponseEntity<ResponseItem<List<PublicationModel>>> listExternalPublications(
|
||||
@RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type, Principal principal
|
||||
) throws HugeResultSet, NoURLFound {
|
||||
List<PublicationModel> publicationModels = this.publicationManager.getPublications(query, type);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<PublicationModel>>().status(ApiMessageCode.NO_MESSAGE).payload(publicationModels));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.logic.managers.TaxonomyManager;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.models.data.security.Principal;
|
||||
import eu.eudat.models.data.taxonomy.TaxonomyModel;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping(value = {"/api/external/taxonomies"})
|
||||
public class TaxonomiesController extends BaseController {
|
||||
|
||||
private TaxonomyManager taxonomyManager;
|
||||
|
||||
@Autowired
|
||||
public TaxonomiesController(ApiContext apiContext, TaxonomyManager taxonomyManager) {
|
||||
super(apiContext);
|
||||
this.taxonomyManager = taxonomyManager;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
|
||||
public @ResponseBody
|
||||
ResponseEntity<ResponseItem<List<TaxonomyModel>>> listExternalPublications(
|
||||
@RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type, Principal principal
|
||||
) throws HugeResultSet, NoURLFound {
|
||||
List<TaxonomyModel> taxonomyModels = this.taxonomyManager.getTaxonomies(query, type);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<TaxonomyModel>>().status(ApiMessageCode.NO_MESSAGE).payload(taxonomyModels));
|
||||
}
|
||||
}
|
||||
|
|
@ -8,16 +8,15 @@ import eu.eudat.data.dao.entities.DMPDao;
|
|||
import eu.eudat.data.dao.entities.DatasetDao;
|
||||
import eu.eudat.data.dao.entities.GrantDao;
|
||||
import eu.eudat.data.dao.entities.OrganisationDao;
|
||||
import eu.eudat.data.entities.*;
|
||||
import eu.eudat.data.query.PaginationService;
|
||||
import eu.eudat.data.entities.DMP;
|
||||
import eu.eudat.data.entities.Dataset;
|
||||
import eu.eudat.data.entities.Grant;
|
||||
import eu.eudat.data.entities.UserInfo;
|
||||
import eu.eudat.data.query.items.table.dataset.DatasetTableRequest;
|
||||
import eu.eudat.elastic.criteria.SortCriteria;
|
||||
import eu.eudat.elastic.entities.Dmp;
|
||||
import eu.eudat.data.query.items.table.dmp.DataManagementPlanTableRequest;
|
||||
import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder;
|
||||
import eu.eudat.logic.mapper.elastic.criteria.DmpCriteriaMapper;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.operations.DatabaseRepository;
|
||||
import eu.eudat.models.HintedModelFactory;
|
||||
import eu.eudat.models.data.dashboard.recent.RecentActivity;
|
||||
import eu.eudat.models.data.dashboard.recent.RecentActivityData;
|
||||
import eu.eudat.models.data.dashboard.recent.model.RecentActivityModel;
|
||||
|
@ -26,10 +25,10 @@ import eu.eudat.models.data.dashboard.recent.model.RecentDmpModel;
|
|||
import eu.eudat.models.data.dashboard.recent.tablerequest.RecentActivityTableRequest;
|
||||
import eu.eudat.models.data.dashboard.searchbar.SearchBarItem;
|
||||
import eu.eudat.models.data.dashboard.statistics.DashBoardStatistics;
|
||||
import eu.eudat.models.data.helpers.common.DataTableData;
|
||||
import eu.eudat.models.data.listingmodels.DataManagementPlanListingModel;
|
||||
import eu.eudat.models.data.listingmodels.DatasetListingModel;
|
||||
import eu.eudat.models.data.security.Principal;
|
||||
import eu.eudat.queryable.QueryableList;
|
||||
import eu.eudat.types.searchbar.SearchBarItemType;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -42,7 +41,6 @@ import java.lang.reflect.InvocationTargetException;
|
|||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Component
|
||||
|
@ -60,11 +58,15 @@ public class DashBoardManager {
|
|||
|
||||
private ApiContext apiContext;
|
||||
private DatabaseRepository databaseRepository;
|
||||
private final DataManagementPlanManager dataManagementPlanManager;
|
||||
private final DatasetManager datasetManager;
|
||||
|
||||
@Autowired
|
||||
public DashBoardManager(ApiContext apiContext) {
|
||||
public DashBoardManager(ApiContext apiContext, DataManagementPlanManager dataManagementPlanManager, DatasetManager datasetManager) {
|
||||
this.apiContext = apiContext;
|
||||
this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository();
|
||||
this.dataManagementPlanManager = dataManagementPlanManager;
|
||||
this.datasetManager = datasetManager;
|
||||
}
|
||||
|
||||
public DashBoardStatistics getStatistics() {
|
||||
|
@ -210,11 +212,9 @@ public class DashBoardManager {
|
|||
}
|
||||
|
||||
@Transactional
|
||||
public List<RecentActivityModel> getNewRecentActivity(RecentActivityTableRequest tableRequest, Principal principal) {
|
||||
public List<RecentActivityModel> getNewRecentActivity(RecentActivityTableRequest tableRequest, Principal principal) throws Exception {
|
||||
boolean isAuthenticated = principal.getId() != null;
|
||||
List<RecentActivityModel> recentActivityModels = new ArrayList<>();
|
||||
DMPDao dataManagementPlanRepository = databaseRepository.getDmpDao();
|
||||
DatasetDao datasetRepository = databaseRepository.getDatasetDao();
|
||||
List<RecentActivityModel> recentActivityModels = new ArrayList<>();
|
||||
UserInfo user = new UserInfo();
|
||||
if (isAuthenticated) {
|
||||
user.setId(principal.getId());
|
||||
|
@ -229,117 +229,24 @@ public class DashBoardManager {
|
|||
dataManagementPlanCriteria.setIsPublic(!isAuthenticated);
|
||||
dataManagementPlanCriteria.setOnlyPublic(!isAuthenticated);
|
||||
|
||||
QueryableList<DMP> dmpList;
|
||||
QueryableList<Dataset> datasetList;
|
||||
|
||||
List<eu.eudat.elastic.entities.Dataset> datasets = null;
|
||||
List<eu.eudat.elastic.entities.Dmp> dmps = null;
|
||||
|
||||
if (apiContext.getOperationsContext().getElasticRepository().getDatasetRepository() != null) {
|
||||
try {
|
||||
eu.eudat.elastic.criteria.DatasetCriteria datasetElasticCriteria = new eu.eudat.elastic.criteria.DatasetCriteria();
|
||||
datasetElasticCriteria.setLike(tableRequest.getCriteria().getLike());
|
||||
datasetElasticCriteria.setAllowAllVersions(false);
|
||||
datasetElasticCriteria.setPublic(!isAuthenticated);
|
||||
datasetElasticCriteria.setOffset(tableRequest.getDatasetOffset());
|
||||
datasetElasticCriteria.setSize(tableRequest.getLength());
|
||||
if (isAuthenticated) {
|
||||
datasetElasticCriteria.setCollaborators(Collections.singletonList(principal.getId()));
|
||||
}
|
||||
datasetElasticCriteria.setSortCriteria(DmpCriteriaMapper.toElasticSorting(tableRequest.getOrderings()));
|
||||
datasetElasticCriteria.getSortCriteria().stream().filter(sortCriteria -> sortCriteria.getFieldName().equals("publishedAt")).forEach(sortCriteria -> {
|
||||
sortCriteria.setFieldName("dmp:" + sortCriteria.getFieldName());
|
||||
sortCriteria.setColumnType(SortCriteria.ColumnType.JOIN_COLUMN);
|
||||
});
|
||||
datasets = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().queryIds(datasetElasticCriteria);
|
||||
}catch (Exception e) {
|
||||
logger.warn(e.getMessage(), e);
|
||||
datasets = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (apiContext.getOperationsContext().getElasticRepository().getDmpRepository() != null) {
|
||||
try {
|
||||
eu.eudat.elastic.criteria.DmpCriteria dmpElasticCriteria = new eu.eudat.elastic.criteria.DmpCriteria();
|
||||
dmpElasticCriteria.setLike(tableRequest.getCriteria().getLike());
|
||||
dmpElasticCriteria.setAllowAllVersions(false);
|
||||
dmpElasticCriteria.setPublic(!isAuthenticated);
|
||||
dmpElasticCriteria.setOffset(tableRequest.getDmpOffset());
|
||||
dmpElasticCriteria.setSize(tableRequest.getLength());
|
||||
if (isAuthenticated) {
|
||||
dmpElasticCriteria.setCollaborators(Collections.singletonList(principal.getId()));
|
||||
}
|
||||
dmpElasticCriteria.setSortCriteria(DmpCriteriaMapper.toElasticSorting(tableRequest.getOrderings()));
|
||||
dmps = apiContext.getOperationsContext().getElasticRepository().getDmpRepository().query(dmpElasticCriteria);
|
||||
}catch (Exception e) {
|
||||
logger.warn(e.getMessage(), e);
|
||||
dmps = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (dmps != null && !dmps.isEmpty()) {
|
||||
List<Dmp> finalDmps = dmps;
|
||||
dmpList = dataManagementPlanRepository.asQueryable().where((builder, root) -> root.get("id").in(finalDmps.stream().map(Dmp::getId).collect(Collectors.toList()))).distinct();
|
||||
} else {
|
||||
dmpList = dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria).distinct();
|
||||
PaginationService.applyOrder(dmpList, tableRequest.getOrderings());
|
||||
dmpList.skip(tableRequest.getDmpOffset()).take(tableRequest.getLength());
|
||||
}
|
||||
|
||||
if (datasets != null && !datasets.isEmpty()) {
|
||||
List<eu.eudat.elastic.entities.Dataset> finalDatasets = datasets;
|
||||
datasetList = datasetRepository.asQueryable().where((builder, root) -> root.get("id").in(finalDatasets.stream().map(x -> UUID.fromString(x.getId())).collect(Collectors.toList())));
|
||||
} else {
|
||||
datasetList = datasetRepository.getWithCriteria(datasetCriteria);
|
||||
}
|
||||
IntStream.range(0, tableRequest.getOrderings().getFields().size()).filter(i -> tableRequest.getOrderings().getFields().get(i).contains("publishedAt"))
|
||||
.forEach(i -> tableRequest.getOrderings().getFields().set(i, tableRequest.getOrderings().getFields().get(i).toCharArray()[0] + "dmp:publishedAt|join|"));
|
||||
// tableRequest.getOrderings().getFields().stream().filter(s -> s.contains("publishedAt")).forEach(s -> s = s.toCharArray()[0] + "dmp:publishedAt|join|" );
|
||||
/*for (int i = 0; i< tableRequest.getOrderings().getFields().size(); i++) {
|
||||
if (tableRequest.getOrderings().getFields().get(i).contains("publishedAt")) {
|
||||
String newField = tableRequest.getOrderings().getFields().get(i).toCharArray()[0] + "dmp:publishedAt|join|";
|
||||
tableRequest.getOrderings().getFields().set(i, newField);
|
||||
}
|
||||
}*/
|
||||
/*if (tableRequest.getOrderings().getFields().get(0).contains("publishedAt")) {
|
||||
tableRequest.getOrderings().getFields().set(0, tableRequest.getOrderings().getFields().get(0).charAt(0) + "dmp:" + tableRequest.getOrderings().getFields().get(0).substring(1) + "|join|");
|
||||
}*/
|
||||
PaginationService.applyOrder(datasetList, tableRequest.getOrderings());
|
||||
datasetList.skip(tableRequest.getDatasetOffset()).take(tableRequest.getLength());
|
||||
|
||||
if (isAuthenticated) {
|
||||
|
||||
List<Integer> roles = new LinkedList<>();
|
||||
roles.add(UserDMP.UserDMPRoles.USER.getValue());
|
||||
roles.add(UserDMP.UserDMPRoles.OWNER.getValue());
|
||||
dmpList = dataManagementPlanRepository.getAuthenticated(dmpList, principal.getId(), roles);
|
||||
datasetList = datasetRepository.getAuthenticated(datasetList, user, roles).distinct();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*CompletableFuture future = CompletableFuture.runAsync(() -> */{
|
||||
List<DMP> dmps1 = dmpList.withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class))
|
||||
.distinct().toList();
|
||||
recentActivityModels.addAll(dmps1.stream().map(dmp -> {
|
||||
DatasetCriteria datasetCriteria1 = new DatasetCriteria();
|
||||
datasetCriteria1.setDmpIds(Collections.singletonList(dmp.getId()));
|
||||
datasetCriteria1.setAllVersions(false);
|
||||
if (isAuthenticated) {
|
||||
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria1, principal.getId()));
|
||||
} else {
|
||||
datasetCriteria1.setIsPublic(true);
|
||||
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria1));
|
||||
}
|
||||
return new RecentDmpModel().fromDataModel(dmp);
|
||||
}).collect(Collectors.toList()));
|
||||
|
||||
List<RecentActivityModel> recentDatasetModels = datasetList
|
||||
.withHint(HintedModelFactory.getHint(DatasetListingModel.class))
|
||||
.select(item -> new RecentDatasetModel().fromEntity(item));
|
||||
recentActivityModels.addAll(recentDatasetModels);
|
||||
}/*);*/
|
||||
//GK: Use the managers to get the data in order to be better synced with other lists
|
||||
DataManagementPlanTableRequest dataManagementPlanTableRequest = new DataManagementPlanTableRequest();
|
||||
dataManagementPlanTableRequest.setCriteria(dataManagementPlanCriteria);
|
||||
dataManagementPlanTableRequest.setOrderings(tableRequest.getOrderings());
|
||||
dataManagementPlanTableRequest.setLength(tableRequest.getLength());
|
||||
dataManagementPlanTableRequest.setOffset(tableRequest.getDmpOffset());
|
||||
DataTableData<DataManagementPlanListingModel> dmps = this.dataManagementPlanManager.getPaged(dataManagementPlanTableRequest, principal, "listing");
|
||||
recentActivityModels.addAll(dmps.getData().stream().map(dataManagementPlanListingModel -> new RecentDmpModel().fromDataModel(dataManagementPlanListingModel.toDataModel())).collect(Collectors.toList()));
|
||||
DatasetTableRequest datasetTableRequest = new DatasetTableRequest();
|
||||
datasetCriteria.setCollaborators(new ArrayList<>());
|
||||
datasetTableRequest.setCriteria(datasetCriteria);
|
||||
datasetTableRequest.setOrderings(tableRequest.getOrderings());
|
||||
datasetTableRequest.getOrderings().getFields().addAll(datasetTableRequest.getOrderings().getFields().stream().filter(s -> s.contains("publishedAt")).map(s -> s.charAt(0) + "dmp:" + s.substring(1) + "|join|").collect(Collectors.toList()));
|
||||
datasetTableRequest.getOrderings().getFields().removeIf(s -> s.contains("publishedAt") && !s.endsWith("|join|"));
|
||||
datasetTableRequest.setLength(tableRequest.getLength());
|
||||
datasetTableRequest.setOffset(tableRequest.getDatasetOffset());
|
||||
DataTableData<DatasetListingModel> datasets = this.datasetManager.getPaged(datasetTableRequest, principal);
|
||||
recentActivityModels.addAll(datasets.getData().stream().map(datasetListingModel -> new RecentDatasetModel().fromDataModel(datasetListingModel.toDataModel())).collect(Collectors.toList()));
|
||||
|
||||
//GK: Shuffle the deck otherwise we will summon the DMPodia when sorting with status
|
||||
/*int pos = -1;
|
||||
|
@ -355,25 +262,23 @@ public class DashBoardManager {
|
|||
}*/
|
||||
//GK: No one likes to play shuffle with the recent activities. So just re-sort them based on how they have been sorted already
|
||||
|
||||
String order = tableRequest.getOrderings().getFields().get(0).toCharArray()[0] + "";
|
||||
String field = tableRequest.getOrderings().getFields().get(0).substring(1);
|
||||
if (field.contains(":") && field.contains("|")) {
|
||||
field = field.substring(field.lastIndexOf(":") + 1, field.indexOf("|"));
|
||||
}
|
||||
field = field.equals("label") ? "title" : field;
|
||||
field = field.substring(0, 1).toUpperCase() + field.substring(1);
|
||||
String finalField = field;
|
||||
recentActivityModels = recentActivityModels.stream().sorted((o1, o2) -> {
|
||||
try {
|
||||
String order = tableRequest.getOrderings().getFields().get(0).toCharArray()[0] + "";
|
||||
String field = tableRequest.getOrderings().getFields().get(0).substring(1);
|
||||
if (field.contains(":") && field.contains("|")) {
|
||||
field = field.substring(field.lastIndexOf(":") + 1, field.indexOf("|"));
|
||||
}
|
||||
field = field.equals("label") ? "title" : field;
|
||||
field = field.substring(0, 1).toUpperCase() + field.substring(1);
|
||||
return (order.equals("+") ? 1 : -1 ) * ((Comparable)o1.getClass().getMethod("get" + field).invoke(o1)).compareTo(o2.getClass().getMethod("get" + field).invoke(o2));
|
||||
return (order.equals("+") ? 1 : -1 ) * ((Comparable)o1.getClass().getMethod("get" + finalField).invoke(o1)).compareTo(o2.getClass().getMethod("get" + finalField).invoke(o2));
|
||||
} catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
|
||||
logger.error(e.getLocalizedMessage(), e);
|
||||
}
|
||||
return 0;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
//CompletableFuture.allOf(future).join();
|
||||
// CompletableFuture.allOf(dmps, datasets).join();
|
||||
|
||||
return recentActivityModels;
|
||||
}
|
||||
|
||||
|
@ -435,38 +340,4 @@ public class DashBoardManager {
|
|||
|
||||
return searchBarItems;
|
||||
}
|
||||
|
||||
private Set<Dataset> retrieveRelevantDatasets(DatasetCriteria datasetCriteria) {
|
||||
return retrieveRelevantDatasets(datasetCriteria, null);
|
||||
}
|
||||
|
||||
private Set<Dataset> retrieveRelevantDatasets (DatasetCriteria datasetCriteria, UUID principal) {
|
||||
QueryableList<Dataset> datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria);
|
||||
if (principal != null) {
|
||||
UserInfo userInfo = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal);
|
||||
List<Integer> roles = new ArrayList<>();
|
||||
roles.add(0);
|
||||
roles.add(1);
|
||||
datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getAuthenticated(datasetItems, userInfo, roles);
|
||||
}
|
||||
Long maxDatasets = datasetItems.distinct().count();
|
||||
DatasetTableRequest datasetTableRequest = new DatasetTableRequest();
|
||||
datasetTableRequest.setOffset(0);
|
||||
datasetTableRequest.setLength(3);
|
||||
Set<Dataset> datasetsSet = new LinkedHashSet<>();
|
||||
try {
|
||||
datasetItems = PaginationManager.applyPaging(datasetItems, datasetTableRequest);
|
||||
List<Dataset> datasets = datasetItems.distinct().toList();
|
||||
datasetsSet.addAll(datasets);
|
||||
for (int i = 0; i < maxDatasets - datasets.size(); i++) {
|
||||
Dataset fakedataset = new Dataset();
|
||||
fakedataset.setId(UUID.randomUUID());
|
||||
datasetsSet.add(fakedataset);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
return datasetsSet;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package eu.eudat.logic.managers;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import eu.eudat.configurations.dynamicgrant.DynamicGrantConfiguration;
|
||||
import eu.eudat.configurations.dynamicgrant.entities.Property;
|
||||
|
@ -33,6 +31,7 @@ import eu.eudat.logic.mapper.elastic.criteria.DmpCriteriaMapper;
|
|||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleServiceImpl;
|
||||
import eu.eudat.logic.services.operations.DatabaseRepository;
|
||||
import eu.eudat.logic.services.utilities.UtilitiesService;
|
||||
import eu.eudat.logic.utilities.builders.XmlBuilder;
|
||||
|
@ -106,7 +105,6 @@ public class DataManagementPlanManager {
|
|||
|
||||
private ApiContext apiContext;
|
||||
private DatasetManager datasetManager;
|
||||
private UtilitiesService utilitiesService;
|
||||
private DatabaseRepository databaseRepository;
|
||||
private Environment environment;
|
||||
private RDAManager rdaManager;
|
||||
|
@ -117,7 +115,6 @@ public class DataManagementPlanManager {
|
|||
public DataManagementPlanManager(ApiContext apiContext, DatasetManager datasetManager, Environment environment, RDAManager rdaManager, UserManager userManager, MetricsManager metricsManager) {
|
||||
this.apiContext = apiContext;
|
||||
this.datasetManager = datasetManager;
|
||||
this.utilitiesService = apiContext.getUtilitiesService();
|
||||
this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository();
|
||||
this.environment = environment;
|
||||
this.rdaManager = rdaManager;
|
||||
|
@ -185,8 +182,9 @@ public class DataManagementPlanManager {
|
|||
dataTable.setData(dmps1.stream().map(dmp -> {
|
||||
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
||||
datasetCriteria.setDmpIds(Collections.singletonList(dmp.getId()));
|
||||
datasetCriteria.setAllVersions(false);
|
||||
datasetCriteria.setAllVersions(dataManagementPlanTableRequest.getCriteria().getAllVersions());
|
||||
datasetCriteria.setIsPublic(dataManagementPlanTableRequest.getCriteria().getIsPublic());
|
||||
datasetCriteria.setGroupIds(Collections.singletonList(dmp.getGroupId()));
|
||||
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria, principalID));
|
||||
|
||||
|
||||
|
@ -210,6 +208,8 @@ public class DataManagementPlanManager {
|
|||
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
||||
datasetCriteria.setDmpIds(Collections.singletonList(dmp.getId()));
|
||||
datasetCriteria.setIsPublic(true);
|
||||
datasetCriteria.setAllVersions(dataManagementPlanTableRequest.getCriteria().getAllVersions());
|
||||
datasetCriteria.setGroupIds(Collections.singletonList(dmp.getGroupId()));
|
||||
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria));
|
||||
|
||||
|
||||
|
@ -1172,7 +1172,7 @@ public class DataManagementPlanManager {
|
|||
|
||||
public FileEnvelope getWordDocument(String id, Principal principal, ConfigLoader configLoader, Boolean versioned) throws IOException {
|
||||
WordBuilder wordBuilder = new WordBuilder();
|
||||
VisibilityRuleService visibilityRuleService = this.utilitiesService.getVisibilityRuleService();
|
||||
VisibilityRuleService visibilityRuleService = new VisibilityRuleServiceImpl();
|
||||
DatasetWizardModel dataset = new DatasetWizardModel();
|
||||
XWPFDocument document = configLoader.getDocument();
|
||||
|
||||
|
@ -1341,7 +1341,7 @@ public class DataManagementPlanManager {
|
|||
|
||||
private FileEnvelope getXmlDocument(String id, Principal principal) throws InstantiationException, IllegalAccessException, IOException {
|
||||
ExportXmlBuilder xmlBuilder = new ExportXmlBuilder();
|
||||
VisibilityRuleService visibilityRuleService = utilitiesService.getVisibilityRuleService();
|
||||
VisibilityRuleService visibilityRuleService = new VisibilityRuleServiceImpl();
|
||||
eu.eudat.data.entities.DMP dmp = databaseRepository.getDmpDao().find(UUID.fromString(id));
|
||||
if (!dmp.isPublic() && dmp.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
|
||||
throw new UnauthorisedException();
|
||||
|
|
|
@ -164,18 +164,23 @@ public class DataManagementProfileManager {
|
|||
}
|
||||
|
||||
private List<Tuple<String, String>> externalAutocompleteRequest(DmpProfileExternalAutoComplete data, String like) {
|
||||
List<Tuple<String, String>> result = new LinkedList<>();
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setAccept(Collections.singletonList(MediaType.valueOf("application/vnd.api+json; charset=utf-8")));
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
|
||||
|
||||
ResponseEntity<Object> response = restTemplate.exchange(data.getUrl() + "?search=" + like, HttpMethod.GET, entity, Object.class);
|
||||
DocumentContext jsonContext = JsonPath.parse(response.getBody());
|
||||
|
||||
List<Map<String, String>> jsonItems = jsonContext.read(data.getOptionsRoot() + "['" + data.getLabel() + "','" + data.getValue() + "']");
|
||||
jsonItems.forEach(item -> result.add(new Tuple<>(item.get(data.getValue()), item.get(data.getLabel()))));
|
||||
return result;
|
||||
return externalAutocompleteRequest(data.getUrl(), data.getOptionsRoot(), data.getLabel(), data.getValue(), like);
|
||||
}
|
||||
|
||||
public static List<Tuple<String, String>> externalAutocompleteRequest(String url, String optionsRoot, String label, String value, String like) {
|
||||
List<Tuple<String, String>> result = new LinkedList<>();
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setAccept(Collections.singletonList(MediaType.valueOf("application/vnd.api+json; charset=utf-8")));
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
|
||||
|
||||
ResponseEntity<Object> response = restTemplate.exchange(url + "?search=" + like, HttpMethod.GET, entity, Object.class);
|
||||
DocumentContext jsonContext = JsonPath.parse(response.getBody());
|
||||
|
||||
List<Map<String, String>> jsonItems = jsonContext.read(optionsRoot + "['" + label + "','" + value + "']");
|
||||
jsonItems.forEach(item -> result.add(new Tuple<>(item.get(value), item.get(label))));
|
||||
return result;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,6 +53,44 @@ public class DataRepositoryManager {
|
|||
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
dataRepositoryModels.addAll(remoteRepos.stream().map(item -> mapper.convertValue(item, DataRepositoryModel.class)).collect(Collectors.toList()));
|
||||
|
||||
return dataRepositoryModels;
|
||||
}
|
||||
public List<DataRepositoryModel> getPubRepositories(String query, String type, Principal principal) throws HugeResultSet, NoURLFound {
|
||||
ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query);
|
||||
List<Map<String, String>> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getPubRepositories(externalUrlCriteria, type);
|
||||
|
||||
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
|
||||
if (!query.isEmpty()) criteria.setLike(query);
|
||||
criteria.setCreationUserId(principal.getId());
|
||||
|
||||
List<DataRepositoryModel> dataRepositoryModels = new LinkedList<>();
|
||||
if (type.equals("")) {
|
||||
List<DataRepository> dataRepositoryList = (this.apiContext.getOperationsContext().getDatabaseRepository().getDataRepositoryDao().getWithCriteria(criteria)).toList();
|
||||
dataRepositoryModels = dataRepositoryList.stream().map(item -> new DataRepositoryModel().fromDataModel(item)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
dataRepositoryModels.addAll(remoteRepos.stream().map(item -> mapper.convertValue(item, DataRepositoryModel.class)).collect(Collectors.toList()));
|
||||
|
||||
return dataRepositoryModels;
|
||||
}
|
||||
public List<DataRepositoryModel> getJournals(String query, String type, Principal principal) throws HugeResultSet, NoURLFound {
|
||||
ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query);
|
||||
List<Map<String, String>> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getJournals(externalUrlCriteria, type);
|
||||
|
||||
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
|
||||
if (!query.isEmpty()) criteria.setLike(query);
|
||||
criteria.setCreationUserId(principal.getId());
|
||||
|
||||
List<DataRepositoryModel> dataRepositoryModels = new LinkedList<>();
|
||||
if (type.equals("")) {
|
||||
List<DataRepository> dataRepositoryList = (this.apiContext.getOperationsContext().getDatabaseRepository().getDataRepositoryDao().getWithCriteria(criteria)).toList();
|
||||
dataRepositoryModels = dataRepositoryList.stream().map(item -> new DataRepositoryModel().fromDataModel(item)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
dataRepositoryModels.addAll(remoteRepos.stream().map(item -> mapper.convertValue(item, DataRepositoryModel.class)).collect(Collectors.toList()));
|
||||
|
||||
return dataRepositoryModels;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import eu.eudat.logic.mapper.elastic.criteria.DmpCriteriaMapper;
|
|||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleServiceImpl;
|
||||
import eu.eudat.logic.services.operations.DatabaseRepository;
|
||||
import eu.eudat.logic.utilities.documents.helpers.FileEnvelope;
|
||||
import eu.eudat.logic.utilities.documents.types.ParagraphStyle;
|
||||
|
@ -49,7 +50,6 @@ import eu.eudat.models.data.user.composite.PagedDatasetProfile;
|
|||
import eu.eudat.queryable.QueryableList;
|
||||
import eu.eudat.types.Authorities;
|
||||
import eu.eudat.types.MetricNames;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
|
||||
|
@ -60,11 +60,11 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
@ -91,8 +91,6 @@ import java.time.temporal.ChronoUnit;
|
|||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
@Component
|
||||
public class DatasetManager {
|
||||
|
@ -415,6 +413,8 @@ public class DatasetManager {
|
|||
runDatasetTemplate.setBold(true);
|
||||
runDatasetTemplate.setFontSize(12);
|
||||
|
||||
wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO);
|
||||
|
||||
/*XWPFParagraph externalReferencesParagraph = document.createParagraph();
|
||||
externalReferencesParagraph.setStyle("Heading2");
|
||||
XWPFRun externalReferencesRun = externalReferencesParagraph.createRun();
|
||||
|
@ -527,7 +527,7 @@ public class DatasetManager {
|
|||
public String getWordDocumentText (Dataset datasetEntity) throws Exception {
|
||||
DatasetWizardModel datasetWizardModel = new DatasetWizardModel().fromDataModel(datasetEntity);
|
||||
datasetWizardModel.setDatasetProfileDefinition(this.getPagedProfile(datasetWizardModel, datasetEntity));
|
||||
XWPFDocument document = getLightWordDocument(this.configLoader, datasetWizardModel, this.apiContext.getUtilitiesService().getVisibilityRuleService());
|
||||
XWPFDocument document = getLightWordDocument(this.configLoader, datasetWizardModel, new VisibilityRuleServiceImpl());
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(document);
|
||||
return extractor.getText();/*.replaceAll("\n\\s*", " ");*/
|
||||
}
|
||||
|
@ -657,7 +657,7 @@ public class DatasetManager {
|
|||
|
||||
|
||||
JSONObject obj = new JSONObject(dataset.getProperties());
|
||||
VisibilityRuleService visibilityRuleService = this.apiContext.getUtilitiesService().getVisibilityRuleService();
|
||||
VisibilityRuleService visibilityRuleService = new VisibilityRuleServiceImpl();
|
||||
visibilityRuleService.setProperties(obj.toMap());
|
||||
|
||||
dataset.setProfile(profile);
|
||||
|
@ -666,12 +666,16 @@ public class DatasetManager {
|
|||
|
||||
|
||||
for (String validator : datasetProfileValidators) {
|
||||
if ((obj.has(validator) && (obj.getString(validator) == null || obj.getString(validator).trim().isEmpty())) && isElementVisible(nodeList, validator, visibilityRuleService)) {
|
||||
if (obj.has(validator) && isNullOrEmpty(obj.getString(validator)) && isElementVisible(nodeList, validator, visibilityRuleService)) {
|
||||
throw new Exception("Field value of " + validator + " must be filled.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isNullOrEmpty(String value) {
|
||||
return value == null || value.trim().isEmpty();
|
||||
}
|
||||
|
||||
private boolean isElementVisible(NodeList nodeList, String id, VisibilityRuleService visibilityRuleService) {
|
||||
Element fieldSet = null;
|
||||
for (int i = 0; i < nodeList.getLength(); i++) {
|
||||
|
@ -1048,20 +1052,19 @@ public class DatasetManager {
|
|||
Set<JsonNode> tagNodes = new HashSet<>();
|
||||
tagNodes.addAll(JsonSearcher.findNodes(propertiesJson, "renderStyle", "tags", true));
|
||||
tagNodes.addAll(JsonSearcher.findNodes(propertiesJson, "rdaProperty", "dataset.keyword"));
|
||||
if(wizardModel.getTags() == null){
|
||||
wizardModel.setTags(new ArrayList<>());
|
||||
}
|
||||
if (!tagNodes.isEmpty()) {
|
||||
tagNodes.forEach(node -> {
|
||||
JsonNode value = node.get("value");
|
||||
if (!value.toString().equals("\"\"")) {
|
||||
if (!value.toString().equals("\"\"") && !value.toString().equals("null")) {
|
||||
String stringValue = value.toString().replaceAll("=", ":");
|
||||
JSONArray values = new JSONArray(stringValue);
|
||||
if (values != null) {
|
||||
values.iterator().forEachRemaining(element -> {
|
||||
Map<String, Object> data = ((JSONObject) element).toMap();
|
||||
this.addTag(tags, wizardModel.getTags(), data.get("id").toString(), data.get("name").toString());
|
||||
});
|
||||
} else {
|
||||
this.addTag(tags, wizardModel.getTags(), "", value.asText());
|
||||
}
|
||||
values.iterator().forEachRemaining(element -> {
|
||||
Map<String, Object> data = ((JSONObject) element).toMap();
|
||||
this.addTag(tags, wizardModel.getTags(), data.get("id").toString(), data.get("name").toString());
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -57,11 +57,12 @@ import java.util.stream.Collectors;
|
|||
@Component
|
||||
public class DatasetProfileManager {
|
||||
private static final Logger logger = LoggerFactory.getLogger(DatasetProfileManager.class);
|
||||
private static final List<String> cache = new ArrayList<>();
|
||||
|
||||
private ApiContext apiContext;
|
||||
private DatabaseRepository databaseRepository;
|
||||
private Environment environment;
|
||||
private List<String> cache;
|
||||
|
||||
private final MetricsManager metricsManager;
|
||||
|
||||
@Autowired
|
||||
|
@ -70,7 +71,6 @@ public class DatasetProfileManager {
|
|||
this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository();
|
||||
this.environment = environment;
|
||||
this.metricsManager = metricsManager;
|
||||
this.cache = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
@ -97,7 +97,6 @@ public class DatasetProfileManager {
|
|||
DatasetProfile profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id));
|
||||
apiContext.getOperationsContext().getDatabaseRepository().detachEntity(profile);
|
||||
profile.setId(null);
|
||||
metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricNames.TOTAL);
|
||||
return profile;
|
||||
}
|
||||
|
||||
|
@ -134,7 +133,7 @@ public class DatasetProfileManager {
|
|||
return field;
|
||||
}
|
||||
|
||||
public List<ExternalAutocompleteFieldModel> getAutocomplete(AutoCompleteData data, String like) {
|
||||
public static List<ExternalAutocompleteFieldModel> getAutocomplete(AutoCompleteData data, String like) {
|
||||
List<ExternalAutocompleteFieldModel> result = new LinkedList<>();
|
||||
SimpleClientHttpRequestFactory simpleFactory = new SimpleClientHttpRequestFactory();
|
||||
|
||||
|
@ -183,9 +182,9 @@ public class DatasetProfileManager {
|
|||
headers.setContentType(MediaType.TEXT_PLAIN);
|
||||
entity = new HttpEntity<>("parameters", headers);
|
||||
|
||||
if (this.cache.size() <= i) {
|
||||
if (cache.size() <= i) {
|
||||
response = restTemplate.exchange(singleData.getUrl(), HttpMethod.GET, entity, String.class);
|
||||
this.cache.add((String) response.getBody());
|
||||
cache.add((String) response.getBody());
|
||||
}
|
||||
jsonContext = JsonPath.parse(cache.get(i));
|
||||
jsonItems = jsonContext.read(singleData.getOptionsRoot() + "['" + singleData.getAutoCompleteOptions().getLabel() + "','" + singleData.getAutoCompleteOptions().getValue() + "','" + singleData.getAutoCompleteOptions().getSource() + "','" + "uri" + "']");
|
||||
|
@ -202,7 +201,7 @@ public class DatasetProfileManager {
|
|||
//return result;
|
||||
}
|
||||
|
||||
private String parseItem(Object item) {
|
||||
private static String parseItem(Object item) {
|
||||
if (item instanceof String) {
|
||||
return (String) item;
|
||||
}
|
||||
|
@ -211,9 +210,9 @@ public class DatasetProfileManager {
|
|||
return parseItem(listedItems.get(0));
|
||||
}
|
||||
if (item instanceof Map) {
|
||||
return (String) ((Map)item).get("$");
|
||||
return String.valueOf(((Map)item).get("$"));
|
||||
}
|
||||
return item.toString();
|
||||
return item != null ? item.toString() : null;
|
||||
}
|
||||
|
||||
public ResponseEntity<byte[]> getDocument(eu.eudat.models.data.user.composite.DatasetProfile datasetProfile, String label) throws IllegalAccessException, IOException, InstantiationException {
|
||||
|
@ -253,7 +252,7 @@ public class DatasetProfileManager {
|
|||
File localFile = convert(multiPartFile);
|
||||
eu.eudat.logic.utilities.documents.xml.datasetProfileXml.datasetProfileModel.DatasetProfile profile = xmlBuilder.build(localFile);
|
||||
Files.deleteIfExists(localFile.toPath());
|
||||
metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricNames.TOTAL);
|
||||
metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricNames.DRAFT);
|
||||
return profile;
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
|
@ -291,6 +290,8 @@ public class DatasetProfileManager {
|
|||
modelDefinition.setGroupId(oldDatasetProfile.getGroupId());
|
||||
modelDefinition.setLanguage(oldDatasetProfile.getLanguage());
|
||||
apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(modelDefinition);
|
||||
eu.eudat.data.entities.DatasetProfile datasetProfile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(modelDefinition);
|
||||
this.storeDatasetProfileUsers(datasetProfile, profile);
|
||||
return modelDefinition;
|
||||
} else {
|
||||
throw new DatasetProfileNewVersionException("Version to update not the latest.");
|
||||
|
|
|
@ -3,7 +3,6 @@ package eu.eudat.logic.managers;
|
|||
import eu.eudat.data.dao.criteria.*;
|
||||
import eu.eudat.data.entities.DatasetProfile;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.utilities.helpers.StreamDistinctBy;
|
||||
import eu.eudat.types.MetricNames;
|
||||
import io.micrometer.prometheus.PrometheusMeterRegistry;
|
||||
import io.prometheus.client.Gauge;
|
||||
|
@ -23,7 +22,10 @@ import java.text.ParseException;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.*;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
@ -32,6 +34,11 @@ public class MetricsManager {
|
|||
private final static Logger logger = LoggerFactory.getLogger(MetricsManager.class);
|
||||
private final Map<String, Gauge> gauges;
|
||||
|
||||
public static final Map<Short, String> datasetTemplateStatus = Stream.of(new Object[][] {
|
||||
{ DatasetProfile.Status.SAVED.getValue(), MetricNames.DRAFT },
|
||||
{ DatasetProfile.Status.FINALIZED.getValue(), MetricNames.ACTIVE },
|
||||
}).collect(Collectors.toMap(data -> (Short) data[0], data -> (String) data[1]));
|
||||
|
||||
public void increaseValue(String name, int amount, String label) {
|
||||
|
||||
if(label != null) {
|
||||
|
@ -397,17 +404,10 @@ public class MetricsManager {
|
|||
criteria.setStatus(1);
|
||||
criteria.setAllVersions(false);
|
||||
if (countNexus) criteria.setPeriodStart(getNexusDate());
|
||||
List<DatasetProfile> datasetProfiles = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(criteria).toList();
|
||||
List<DatasetProfile> filteredProfiles = new ArrayList<>();
|
||||
for (DatasetProfile datasetProfile : datasetProfiles) {
|
||||
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
||||
datasetCriteria.setDatasetTemplates(Collections.singletonList(datasetProfile.getId()));
|
||||
Long datasetCount = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria).count();
|
||||
if (datasetCount > 0) {
|
||||
filteredProfiles.add(datasetProfile);
|
||||
}
|
||||
}
|
||||
return filteredProfiles.stream().filter(StreamDistinctBy.distinctByKey(DatasetProfile::getId)).count();
|
||||
List<DatasetProfile> datasetProfiles = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(criteria).withFields(Collections.singletonList("id")).toList();
|
||||
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
||||
datasetCriteria.setDatasetTemplates(datasetProfiles.stream().map(DatasetProfile::getId).collect(Collectors.toList()));
|
||||
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria).select(root -> root.getProfile().getId()).stream().distinct().count();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
package eu.eudat.logic.managers;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import eu.eudat.data.entities.DatasetProfile;
|
||||
import eu.eudat.logic.mapper.prefilling.PrefillingMapper;
|
||||
import eu.eudat.logic.proxy.config.ExternalUrlCriteria;
|
||||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.proxy.config.entities.PrefillingConfig;
|
||||
import eu.eudat.logic.proxy.config.entities.PrefillingGet;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
|
||||
import eu.eudat.models.data.prefilling.Prefilling;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class PrefillingManager {
|
||||
|
||||
private final ApiContext apiContext;
|
||||
private final ConfigLoader configLoader;
|
||||
private final ObjectMapper objectMapper;
|
||||
private final DatasetManager datasetManager;
|
||||
|
||||
@Autowired
|
||||
public PrefillingManager(ApiContext apiContext, ConfigLoader configLoader, DatasetManager datasetManager) {
|
||||
this.apiContext = apiContext;
|
||||
this.configLoader = configLoader;
|
||||
this.objectMapper = new ObjectMapper();
|
||||
this.datasetManager = datasetManager;
|
||||
}
|
||||
|
||||
public List<Prefilling> getPrefillings(String like, String configId) {
|
||||
PrefillingConfig prefillingConfig = configLoader.getExternalUrls().getPrefillings().get(configId);
|
||||
ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria();
|
||||
externalUrlCriteria.setLike(like);
|
||||
List<Map<String, String>> map = apiContext.getOperationsContext().getRemoteFetcher().getExternalGeneric(externalUrlCriteria, prefillingConfig.getPrefillingSearch());
|
||||
return map.stream().map(submap -> objectMapper.convertValue(submap, Prefilling.class)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public DatasetWizardModel getPrefilledDataset(String prefillId, String configId, UUID profileId) throws Exception {
|
||||
PrefillingConfig prefillingConfig = configLoader.getExternalUrls().getPrefillings().get(configId);
|
||||
PrefillingGet prefillingGet = prefillingConfig.getPrefillingGet();
|
||||
Map<String, Object> prefillingEntity = getSingle(prefillingGet.getUrl(), prefillId);
|
||||
DatasetProfile datasetProfile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(profileId);
|
||||
return PrefillingMapper.mapPrefilledEntityToDatasetWizard(prefillingEntity, prefillingGet, prefillingConfig.getType(), datasetProfile, datasetManager);
|
||||
}
|
||||
|
||||
private Map<String, Object> getSingle(String url, String id) {
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
String parsedUrl = url.replace("{id}", id);
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
|
||||
HttpEntity<String> entity = new HttpEntity("", headers);
|
||||
|
||||
return restTemplate.exchange(parsedUrl, HttpMethod.GET, entity, LinkedHashMap.class).getBody();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package eu.eudat.logic.managers;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import eu.eudat.data.dao.criteria.DataRepositoryCriteria;
|
||||
import eu.eudat.logic.proxy.config.ExternalUrlCriteria;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.publication.PublicationModel;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class PublicationManager {
|
||||
private ApiContext apiContext;
|
||||
|
||||
@Autowired
|
||||
public PublicationManager(ApiContext apiContext) {
|
||||
this.apiContext = apiContext;
|
||||
}
|
||||
|
||||
public List<PublicationModel> getPublications(String query, String type) throws HugeResultSet, NoURLFound {
|
||||
ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query);
|
||||
List<Map<String, String>> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getPublications(externalUrlCriteria, type);
|
||||
|
||||
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
|
||||
if (!query.isEmpty()) criteria.setLike(query);
|
||||
|
||||
List<PublicationModel> publicationModels = new LinkedList<>();
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
publicationModels.addAll(remoteRepos.stream().map(item -> mapper.convertValue(item, PublicationModel.class)).collect(Collectors.toList()));
|
||||
// publicationModels = publicationModels.stream().filter(publicationModel -> publicationModel.getName().toLowerCase().contains(query.toLowerCase())).collect(Collectors.toList());
|
||||
return publicationModels;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package eu.eudat.logic.managers;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import eu.eudat.data.dao.criteria.DataRepositoryCriteria;
|
||||
import eu.eudat.logic.proxy.config.ExternalUrlCriteria;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.taxonomy.TaxonomyModel;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Component
|
||||
public class TaxonomyManager {
|
||||
private ApiContext apiContext;
|
||||
|
||||
@Autowired
|
||||
public TaxonomyManager(ApiContext apiContext) {
|
||||
this.apiContext = apiContext;
|
||||
}
|
||||
|
||||
public List<TaxonomyModel> getTaxonomies(String query, String type) throws HugeResultSet, NoURLFound {
|
||||
ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query);
|
||||
List<Map<String, String>> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getTaxonomies(externalUrlCriteria, type);
|
||||
|
||||
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
|
||||
if (!query.isEmpty()) criteria.setLike(query);
|
||||
|
||||
List<TaxonomyModel> taxonomyModels = new LinkedList<>();
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
taxonomyModels.addAll(remoteRepos.stream().map(item -> mapper.convertValue(item, TaxonomyModel.class)).collect(Collectors.toList()));
|
||||
taxonomyModels = taxonomyModels.stream().filter(licenseModel -> licenseModel.getName().toLowerCase().contains(query.toLowerCase())).collect(Collectors.toList());
|
||||
return taxonomyModels;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,220 @@
|
|||
package eu.eudat.logic.mapper.prefilling;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import eu.eudat.data.entities.Dataset;
|
||||
import eu.eudat.data.entities.DatasetProfile;
|
||||
import eu.eudat.elastic.entities.Tag;
|
||||
import eu.eudat.logic.managers.DatasetManager;
|
||||
import eu.eudat.logic.managers.DatasetProfileManager;
|
||||
import eu.eudat.logic.proxy.config.entities.DefaultPrefillingMapping;
|
||||
import eu.eudat.logic.proxy.config.entities.PrefillingFixedMapping;
|
||||
import eu.eudat.logic.proxy.config.entities.PrefillingGet;
|
||||
import eu.eudat.logic.proxy.config.entities.PrefillingMapping;
|
||||
import eu.eudat.logic.utilities.helpers.StreamDistinctBy;
|
||||
import eu.eudat.logic.utilities.json.JsonSearcher;
|
||||
import eu.eudat.models.data.components.commons.datafield.AutoCompleteData;
|
||||
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
|
||||
import eu.eudat.models.data.datasetprofile.RenderStyle;
|
||||
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
|
||||
import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PrefillingMapper {
|
||||
private static final ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
|
||||
|
||||
public static DatasetWizardModel mapPrefilledEntityToDatasetWizard(Map<String, Object> prefilledEntity, PrefillingGet prefillingGet, String type,
|
||||
DatasetProfile profile, DatasetManager datasetManager) throws Exception {
|
||||
DatasetWizardModel datasetWizardModel = new DatasetWizardModel();
|
||||
datasetWizardModel.setProfile(new DatasetProfileOverviewModel().fromDataModel(profile));
|
||||
Dataset dataset = new Dataset();
|
||||
dataset.setProfile(profile);
|
||||
Map<String, Object> properties = new HashMap<>();
|
||||
JsonNode parentNode = mapper.readTree(mapper.writeValueAsString(datasetManager.getPagedProfile(datasetWizardModel, dataset)));
|
||||
for (DefaultPrefillingMapping prefillingMapping: prefillingGet.getMappings()) {
|
||||
List<String> sourceKeys = Arrays.asList(prefillingMapping.getSource().split("\\."));
|
||||
Object sourceValue = null;
|
||||
for (String sourceKey: sourceKeys) {
|
||||
if (sourceValue == null) {
|
||||
sourceValue = prefilledEntity.get(sourceKey);
|
||||
} else if (sourceValue instanceof Map) {
|
||||
sourceValue = ((Map)sourceValue).get(sourceKey);
|
||||
}
|
||||
}
|
||||
setValue(prefillingMapping, mapper.writeValueAsString(sourceValue), datasetWizardModel, parentNode, properties, type);
|
||||
}
|
||||
for (PrefillingFixedMapping fixedMapping: prefillingGet.getFixedMappings()) {
|
||||
setValue(fixedMapping, fixedMapping.getValue(), datasetWizardModel, parentNode, properties, type);
|
||||
}
|
||||
dataset.setProperties(mapper.writeValueAsString(properties));
|
||||
datasetWizardModel.setDatasetProfileDefinition(datasetManager.getPagedProfile(datasetWizardModel, dataset));
|
||||
return datasetWizardModel;
|
||||
}
|
||||
|
||||
private static void setValue(PrefillingMapping prefillingMapping, String value, DatasetWizardModel datasetWizardModel, JsonNode parentNode, Map<String, Object> properties, String type) throws InvocationTargetException, IllegalAccessException, JsonProcessingException {
|
||||
String trimRegex = prefillingMapping.getTrimRegex() != null ? prefillingMapping.getTrimRegex() : "";
|
||||
if (!value.startsWith("\"") && !value.startsWith("[") && !value.equals("null")) {
|
||||
value = "\"" + value + "\"";
|
||||
}
|
||||
JsonNode valueNode = mapper.readTree(value);
|
||||
List<String> parsedValues = new ArrayList<>();
|
||||
if (valueNode.isArray() && (!valueNode.get(0).isTextual())) {
|
||||
if (prefillingMapping.getSubSource() == null || prefillingMapping.getSubSource().isEmpty()) {
|
||||
throw new IllegalArgumentException("Source value is an array but no subSource field have been set");
|
||||
}
|
||||
String parsedValue;
|
||||
for(int i = 0; i < valueNode.size(); i++){
|
||||
JsonNode jsonObj = valueNode.get(i);
|
||||
String subSource = jsonObj.get(prefillingMapping.getSubSource()).asText();
|
||||
parsedValue = subSource.replaceAll(trimRegex, "");
|
||||
parsedValues.add(parsedValue);
|
||||
}
|
||||
parsedValues = parsedValues.stream().distinct().collect(Collectors.toList());
|
||||
}
|
||||
String parsedValue = null;
|
||||
if (valueNode.isTextual()) {
|
||||
parsedValue = valueNode.textValue().replace(trimRegex, "");
|
||||
}else if (valueNode.isArray() && valueNode.get(0).isTextual()) {
|
||||
List<String> values = new LinkedList<>();
|
||||
for (int i = 0; i < valueNode.size(); i++) {
|
||||
values.add(valueNode.get(i).textValue().replace(trimRegex, ""));
|
||||
}
|
||||
parsedValue = String.join(", ", values);
|
||||
}
|
||||
|
||||
if (prefillingMapping.getTarget() != null) {
|
||||
try {
|
||||
String methodName = "set" + prefillingMapping.getTarget().substring(0, 1).toUpperCase(Locale.ROOT) + prefillingMapping.getTarget().substring(1);
|
||||
Method setterMethod = Arrays.stream(DatasetWizardModel.class.getDeclaredMethods())
|
||||
.filter(method -> method.getName().equals(methodName)).collect(Collectors.toList()).get(0);
|
||||
Class<?>[] params = setterMethod.getParameterTypes();
|
||||
//GK: Tags Special logic
|
||||
if (parsedValue != null && !parsedValue.equals("null") && prefillingMapping.getTarget().equals("tags")) {
|
||||
parsedValue = mapper.valueToTree(parseTags(parsedValue)).toString();
|
||||
} else {
|
||||
parsedValue = mapper.valueToTree(parsedValue).toString();
|
||||
}
|
||||
setterMethod.invoke(datasetWizardModel, mapper.readValue(parsedValue, params[0]));
|
||||
}catch (InvocationTargetException | IllegalAccessException | JsonProcessingException e) {
|
||||
throw e;
|
||||
}
|
||||
} else {
|
||||
List<JsonNode> nodes = JsonSearcher.findNodes(parentNode, "rdaProperty", prefillingMapping.getMaDmpTarget());
|
||||
|
||||
// zenodo prefilling customizations
|
||||
if(type.equals("zenodo")){
|
||||
if(prefillingMapping.getMaDmpTarget().equals("dataset.distribution.data_access")){
|
||||
if(parsedValue != null && parsedValue.equals("open")){
|
||||
List<JsonNode> issuedNodes = JsonSearcher.findNodes(parentNode, "rdaProperty", "dataset.issued");
|
||||
if(!issuedNodes.isEmpty()){
|
||||
String issuedIdNode = issuedNodes.get(0).get("id").asText();
|
||||
String issuedValue = (String) properties.get(issuedIdNode);
|
||||
List<JsonNode> licStartDateNodes = JsonSearcher.findNodes(parentNode, "rdaProperty", "dataset.distribution.license.start_date");
|
||||
for (JsonNode licStartDateNode : licStartDateNodes) {
|
||||
String licStartDateId = licStartDateNode.get(0) != null ? licStartDateNode.get(0).get("id").asText() : licStartDateNode.get("id").asText();
|
||||
properties.put(licStartDateId, issuedValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (prefillingMapping.getMaDmpTarget().equals("dataset.distribution.available_until") && parsedValue != null && !parsedValue.equals("null")) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd");
|
||||
LocalDate date = LocalDate.parse(parsedValue, formatter);
|
||||
date = date.plusYears(20);
|
||||
parsedValue = date.toString();
|
||||
}
|
||||
}
|
||||
|
||||
for (JsonNode node: nodes) {
|
||||
String id = node.isArray() ? node.get(0).get("id").asText() : node.get("id").asText();
|
||||
String renderStyle = node.isArray() ? node.get(0).get("viewStyle").get("renderStyle").asText() : node.get("viewStyle").get("renderStyle").asText();
|
||||
|
||||
switch (RenderStyle.fromValue(renderStyle)) {
|
||||
case COMBO_BOX:
|
||||
if (parsedValues.isEmpty())
|
||||
parsedValues.add(parsedValue);
|
||||
properties.put(id, parseComboBoxValues(node, parsedValues));
|
||||
break;
|
||||
case TAGS:
|
||||
properties.put(id, mapper.valueToTree(parseTags(parsedValue)).toString());
|
||||
break;
|
||||
case DATASET_IDENTIFIER:
|
||||
JSONObject datasetID = new JSONObject();
|
||||
datasetID.put("identifier", parsedValue);
|
||||
if(type.equals("zenodo")){
|
||||
datasetID.put("type", "doi");
|
||||
}
|
||||
properties.put(id, datasetID.toString());
|
||||
break;
|
||||
default:
|
||||
if (!parsedValues.isEmpty())
|
||||
properties.put(id, String.join(", ", parsedValues));
|
||||
else {
|
||||
properties.put(id, parsedValue);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Object parseComboBoxValues(JsonNode node, List<String> parsedValues) throws JsonProcessingException {
|
||||
List<Object> normalizedValues = new ArrayList<>();
|
||||
boolean isMultiSelect;
|
||||
String type = node.isArray() ? node.get(0).get("data").get("type").asText() : node.get("data").get("type").asText();
|
||||
if(type.equals("autocomplete")) {
|
||||
JsonNode dataNode = node.isArray() ? node.get(0).get("data") : node.get("data");
|
||||
AutoCompleteData autoCompleteData = mapper.treeToValue(dataNode, AutoCompleteData.class);
|
||||
isMultiSelect = autoCompleteData.getMultiAutoComplete();
|
||||
for (String format : parsedValues) {
|
||||
List<ExternalAutocompleteFieldModel> result = DatasetProfileManager.getAutocomplete(autoCompleteData, format);
|
||||
result = result.stream().filter(StreamDistinctBy.distinctByKey(ExternalAutocompleteFieldModel::getId)).collect(Collectors.toList());
|
||||
if(!result.isEmpty()){
|
||||
List<String> tempValues = new LinkedList<>();
|
||||
for (ExternalAutocompleteFieldModel f : result) {
|
||||
if (format.equals(f.getId()) || f.getLabel().toUpperCase(Locale.ROOT).contains(format.toUpperCase(Locale.ROOT)))
|
||||
tempValues.add(mapper.valueToTree(f).toString());
|
||||
}
|
||||
if (isMultiSelect)
|
||||
normalizedValues.addAll(tempValues);
|
||||
else if (!tempValues.isEmpty())
|
||||
normalizedValues.add(tempValues.get(0));
|
||||
}
|
||||
}
|
||||
return !normalizedValues.isEmpty() ? (isMultiSelect ? normalizedValues : normalizedValues.get(0)) : null;
|
||||
} else {
|
||||
JsonNode optionsNode = node.isArray() ? node.get(0).get("data").get("options") : node.get("data").get("options");
|
||||
isMultiSelect = node.isArray() ? node.get(0).get("data").get("multiList").booleanValue() : node.get("data").get("multiList").booleanValue();
|
||||
for (int i = 0; i < optionsNode.size(); i++) {
|
||||
String value = optionsNode.get(i).get("value").textValue();
|
||||
if (parsedValues.contains(value)) {
|
||||
normalizedValues.add(value);
|
||||
}
|
||||
}
|
||||
List<String> normalizedStringValues = normalizedValues.stream().map(Object::toString).collect(Collectors.toList());
|
||||
|
||||
return !normalizedValues.isEmpty() ? (isMultiSelect ? String.join(", ", normalizedStringValues) : normalizedValues.get(0)) : null;
|
||||
}
|
||||
}
|
||||
|
||||
private static List<Tag> parseTags(String value) throws JsonProcessingException {
|
||||
if (value == null || value.isEmpty())
|
||||
return new LinkedList<>();
|
||||
String[] rawTags = value.split(", ");
|
||||
List<Tag> parsedTags = new LinkedList<>();
|
||||
for (String rawTag : rawTags) {
|
||||
parsedTags.add(new Tag(rawTag, rawTag));
|
||||
}
|
||||
return parsedTags;
|
||||
}
|
||||
}
|
|
@ -2,10 +2,13 @@ package eu.eudat.logic.proxy.config;
|
|||
|
||||
|
||||
import eu.eudat.logic.proxy.config.entities.*;
|
||||
import eu.eudat.logic.proxy.config.prefilling.PrefillingConfigMapAdapter;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
@XmlRootElement
|
||||
public class ExternalUrls implements Serializable {
|
||||
|
@ -18,6 +21,10 @@ public class ExternalUrls implements Serializable {
|
|||
ProjectUrls projects;
|
||||
RegistryUrls registries;
|
||||
RepositoryUrls repositories;
|
||||
PubRepositoryUrls pubRepositories;
|
||||
JournalUrls journals;
|
||||
TaxonomiesUrls taxonomies;
|
||||
PublicationsUrls publications;
|
||||
ServiceUrls services;
|
||||
ResearcherUrls researchers;
|
||||
OrganisationUrls organisations;
|
||||
|
@ -26,6 +33,7 @@ public class ExternalUrls implements Serializable {
|
|||
FunderUrls funders;
|
||||
LicenseUrls licenses;
|
||||
ValidationUrls validations;
|
||||
Map<String, PrefillingConfig> prefillings;
|
||||
|
||||
|
||||
public RegistryUrls getRegistries() {
|
||||
|
@ -47,6 +55,45 @@ public class ExternalUrls implements Serializable {
|
|||
this.repositories = repositories;
|
||||
}
|
||||
|
||||
public PubRepositoryUrls getPubRepositories() {
|
||||
return pubRepositories;
|
||||
}
|
||||
|
||||
public void setPubRepositories(PubRepositoryUrls pubRepositories) {
|
||||
this.pubRepositories = pubRepositories;
|
||||
}
|
||||
|
||||
public void setJournals(JournalUrls journals) {
|
||||
this.journals = journals;
|
||||
}
|
||||
|
||||
public JournalUrls getJournals() {
|
||||
return journals;
|
||||
}
|
||||
|
||||
public JournalUrls getJournal() {
|
||||
return journals;
|
||||
}
|
||||
@XmlElement(name = "journals")
|
||||
public void setJournal(JournalUrls journal) {
|
||||
this.journals = journal;
|
||||
}
|
||||
|
||||
public TaxonomiesUrls getTaxonomies() {
|
||||
return taxonomies;
|
||||
}
|
||||
@XmlElement(name = "taxonomies")
|
||||
public void setTaxonomies(TaxonomiesUrls taxonomies) {
|
||||
this.taxonomies = taxonomies;
|
||||
}
|
||||
|
||||
public PublicationsUrls getPublications() {
|
||||
return publications;
|
||||
}
|
||||
|
||||
public void setPublications(PublicationsUrls publications) {
|
||||
this.publications = publications;
|
||||
}
|
||||
|
||||
public ServiceUrls getServices() {
|
||||
return services;
|
||||
|
@ -153,6 +200,16 @@ public class ExternalUrls implements Serializable {
|
|||
public void setValidations(ValidationUrls validations) {
|
||||
this.validations = validations;
|
||||
}
|
||||
|
||||
public Map<String, PrefillingConfig> getPrefillings() {
|
||||
return prefillings;
|
||||
}
|
||||
|
||||
@XmlJavaTypeAdapter(PrefillingConfigMapAdapter.class)
|
||||
@XmlElement(name = "prefillings")
|
||||
public void setPrefillings(Map<String, PrefillingConfig> prefillings) {
|
||||
this.prefillings = prefillings;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import javax.xml.bind.annotation.XmlElementWrapper;
|
|||
import java.util.List;
|
||||
|
||||
|
||||
public class DatasetUrls {
|
||||
public class DatasetUrls extends GenericUrls{
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "mapping")
|
||||
public class DefaultPrefillingMapping implements PrefillingMapping{
|
||||
private String source;
|
||||
private String target;
|
||||
private String maDmpTarget;
|
||||
private String subSource;
|
||||
private String trimRegex;
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "source")
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "target")
|
||||
public void setTarget(String target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public String getMaDmpTarget() {
|
||||
return maDmpTarget;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "maDmpTarget")
|
||||
public void setMaDmpTarget(String maDmpTarget) {
|
||||
this.maDmpTarget = maDmpTarget;
|
||||
}
|
||||
|
||||
public String getSubSource() {
|
||||
return subSource;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "subSource")
|
||||
public void setSubSource(String subSource) {
|
||||
this.subSource = subSource;
|
||||
}
|
||||
|
||||
public String getTrimRegex() {
|
||||
return trimRegex;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "trimRegex")
|
||||
public void setTrimRegex(String trimRegex) {
|
||||
this.trimRegex = trimRegex;
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class FunderUrls {
|
||||
public class FunderUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class GenericUrls {
|
||||
|
||||
public abstract List<UrlConfiguration> getUrls();
|
||||
public abstract FetchStrategy getFetchMode();
|
||||
}
|
|
@ -8,7 +8,7 @@ import javax.xml.bind.annotation.XmlElementWrapper;
|
|||
import java.util.List;
|
||||
|
||||
|
||||
public class GrantUrls {
|
||||
public class GrantUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class JournalUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
public List<UrlConfiguration> getUrls() {
|
||||
return urls;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "urlConfig")
|
||||
public void setUrls(List<UrlConfiguration> urls) {
|
||||
this.urls = urls;
|
||||
}
|
||||
|
||||
public FetchStrategy getFetchMode() {
|
||||
return fetchMode;
|
||||
}
|
||||
|
||||
@XmlElement(name = "fetchMode")
|
||||
public void setFetchMode(FetchStrategy fetchMode) {
|
||||
this.fetchMode = fetchMode;
|
||||
}
|
||||
|
||||
}
|
|
@ -8,7 +8,7 @@ import javax.xml.bind.annotation.XmlElementWrapper;
|
|||
import java.util.List;
|
||||
|
||||
|
||||
public class LicenseUrls {
|
||||
public class LicenseUrls extends GenericUrls{
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class OrganisationUrls {
|
||||
public class OrganisationUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "config")
|
||||
public class PrefillingConfig {
|
||||
|
||||
private PrefillingSearch prefillingSearch;
|
||||
private PrefillingGet prefillingGet;
|
||||
|
||||
private String type;
|
||||
|
||||
public PrefillingSearch getPrefillingSearch() {
|
||||
return prefillingSearch;
|
||||
}
|
||||
|
||||
@XmlElement(name = "prefillingSearch")
|
||||
public void setPrefillingSearch(PrefillingSearch prefillingSearch) {
|
||||
this.prefillingSearch = prefillingSearch;
|
||||
}
|
||||
|
||||
public PrefillingGet getPrefillingGet() {
|
||||
return prefillingGet;
|
||||
}
|
||||
|
||||
@XmlElement(name = "prefillingGet")
|
||||
public void setPrefillingGet(PrefillingGet prefillingGet) {
|
||||
this.prefillingGet = prefillingGet;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "type")
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getType(){
|
||||
return type;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "fixedMapping")
|
||||
public class PrefillingFixedMapping implements PrefillingMapping{
|
||||
private String target;
|
||||
private String maDmpTarget;
|
||||
private String value;
|
||||
|
||||
public String getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "target")
|
||||
public void setTarget(String target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public String getMaDmpTarget() {
|
||||
return maDmpTarget;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "maDmpTarget")
|
||||
public void setMaDmpTarget(String maDmpTarget) {
|
||||
this.maDmpTarget = maDmpTarget;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSubSource() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTrimRegex() {
|
||||
return "";
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "value")
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class PrefillingGet{
|
||||
private String url;
|
||||
private List<DefaultPrefillingMapping> mappings;
|
||||
private List<PrefillingFixedMapping> fixedMappings;
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
@XmlElement(name = "url")
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public List<DefaultPrefillingMapping> getMappings() {
|
||||
return mappings;
|
||||
}
|
||||
|
||||
@XmlElement(name = "mapping")
|
||||
@XmlElementWrapper
|
||||
public void setMappings(List<DefaultPrefillingMapping> mappings) {
|
||||
this.mappings = mappings;
|
||||
}
|
||||
|
||||
public List<PrefillingFixedMapping> getFixedMappings() {
|
||||
return fixedMappings;
|
||||
}
|
||||
|
||||
@XmlElement(name = "fixedMapping")
|
||||
@XmlElementWrapper
|
||||
public void setFixedMappings(List<PrefillingFixedMapping> fixedMappings) {
|
||||
this.fixedMappings = fixedMappings;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
public interface PrefillingMapping {
|
||||
String getTarget();
|
||||
|
||||
void setTarget(String target);
|
||||
|
||||
String getMaDmpTarget();
|
||||
|
||||
void setMaDmpTarget(String maDmpTarget);
|
||||
|
||||
String getSubSource();
|
||||
|
||||
String getTrimRegex();
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PrefillingSearch extends GenericUrls{
|
||||
private UrlConfiguration urlConfig;
|
||||
|
||||
public UrlConfiguration getUrlConfig() {
|
||||
return urlConfig;
|
||||
}
|
||||
|
||||
@XmlElement(name = "urlConfig")
|
||||
public void setUrlConfig(UrlConfiguration urlConfig) {
|
||||
this.urlConfig = urlConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UrlConfiguration> getUrls() {
|
||||
List<UrlConfiguration> urls = new ArrayList<>();
|
||||
urls.add(urlConfig);
|
||||
return urls;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FetchStrategy getFetchMode() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class ProjectUrls {
|
||||
public class ProjectUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class PubRepositoryUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
public List<UrlConfiguration> getUrls() {
|
||||
return urls;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "urlConfig")
|
||||
public void setUrls(List<UrlConfiguration> urls) {
|
||||
this.urls = urls;
|
||||
}
|
||||
|
||||
public FetchStrategy getFetchMode() {
|
||||
return fetchMode;
|
||||
}
|
||||
|
||||
@XmlElement(name = "fetchMode")
|
||||
public void setFetchMode(FetchStrategy fetchMode) {
|
||||
this.fetchMode = fetchMode;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class PublicationsUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
public List<UrlConfiguration> getUrls() {
|
||||
return urls;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "urlConfig")
|
||||
public void setUrls(List<UrlConfiguration> urls) {
|
||||
this.urls = urls;
|
||||
}
|
||||
|
||||
public FetchStrategy getFetchMode() {
|
||||
return fetchMode;
|
||||
}
|
||||
|
||||
@XmlElement(name = "fetchMode")
|
||||
public void setFetchMode(FetchStrategy fetchMode) {
|
||||
this.fetchMode = fetchMode;
|
||||
}
|
||||
|
||||
}
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class RegistryUrls {
|
||||
public class RegistryUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class RepositoryUrls {
|
||||
public class RepositoryUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class ResearcherUrls {
|
||||
public class ResearcherUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class ServiceUrls {
|
||||
public class ServiceUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -10,7 +10,7 @@ import java.util.List;
|
|||
/**
|
||||
* Created by ikalyvas on 7/9/2018.
|
||||
*/
|
||||
public class TagUrls {
|
||||
public class TagUrls extends GenericUrls{
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package eu.eudat.logic.proxy.config.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class TaxonomiesUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
||||
public List<UrlConfiguration> getUrls() {
|
||||
return urls;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "urlConfig")
|
||||
public void setUrls(List<UrlConfiguration> urls) {
|
||||
this.urls = urls;
|
||||
}
|
||||
|
||||
public FetchStrategy getFetchMode() {
|
||||
return fetchMode;
|
||||
}
|
||||
|
||||
@XmlElement(name = "fetchMode")
|
||||
public void setFetchMode(FetchStrategy fetchMode) {
|
||||
this.fetchMode = fetchMode;
|
||||
}
|
||||
|
||||
}
|
|
@ -8,7 +8,7 @@ import javax.xml.bind.annotation.XmlElementWrapper;
|
|||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
public class ValidationUrls {
|
||||
public class ValidationUrls extends GenericUrls{
|
||||
|
||||
List<UrlConfiguration> urls;
|
||||
FetchStrategy fetchMode;
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package eu.eudat.logic.proxy.config.prefilling;
|
||||
|
||||
import eu.eudat.logic.proxy.config.entities.PrefillingConfig;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import javax.xml.bind.annotation.adapters.XmlAdapter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PrefillingConfigMapAdapter extends XmlAdapter<Object, Map<String, PrefillingConfig>> {
|
||||
@Override
|
||||
public Map<String, PrefillingConfig> unmarshal(Object v) throws Exception {
|
||||
Map<String, PrefillingConfig> configMap = new HashMap<>();
|
||||
Element element = (Element) v;
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(PrefillingConfig.class);
|
||||
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
||||
for (int i = 0; i < element.getChildNodes().getLength(); i++) {
|
||||
if (element.getChildNodes().item(i).getAttributes() == null) {
|
||||
continue;
|
||||
}
|
||||
String id = element.getChildNodes().item(i).getAttributes().getNamedItem("id").getNodeValue();
|
||||
PrefillingConfig prefillingConfig = (PrefillingConfig) jaxbUnmarshaller.unmarshal(element.getChildNodes().item(i));
|
||||
prefillingConfig = configMap.put(id, prefillingConfig);
|
||||
System.out.println(prefillingConfig);
|
||||
}
|
||||
return configMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object marshal(Map<String, PrefillingConfig> v) throws Exception {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import eu.eudat.logic.proxy.config.ExternalUrlCriteria;
|
|||
import eu.eudat.logic.proxy.config.FetchStrategy;
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.proxy.config.entities.GenericUrls;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import eu.eudat.logic.proxy.fetching.entities.Results;
|
||||
|
@ -49,6 +50,38 @@ public class RemoteFetcher {
|
|||
FetchStrategy fetchStrategy = configLoader.getExternalUrls().getRepositories().getFetchMode();
|
||||
return getAll(urlConfigs, fetchStrategy, externalUrlCriteria);
|
||||
}
|
||||
@Cacheable(value = "pubrepos", keyGenerator = "externalUrlsKeyGenerator")
|
||||
public List<Map<String, String>> getPubRepositories(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet {
|
||||
List<UrlConfiguration> urlConfigs =
|
||||
key != null && !key.isEmpty() ? configLoader.getExternalUrls().getPubRepositories().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList())
|
||||
: configLoader.getExternalUrls().getPubRepositories().getUrls();
|
||||
FetchStrategy fetchStrategy = configLoader.getExternalUrls().getPubRepositories().getFetchMode();
|
||||
return getAll(urlConfigs, fetchStrategy, externalUrlCriteria);
|
||||
}
|
||||
@Cacheable(value = "journals", keyGenerator = "externalUrlsKeyGenerator")
|
||||
public List<Map<String, String>> getJournals(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet {
|
||||
List<UrlConfiguration> urlConfigs =
|
||||
key != null && !key.isEmpty() ? configLoader.getExternalUrls().getJournals().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList())
|
||||
: configLoader.getExternalUrls().getJournals().getUrls();
|
||||
FetchStrategy fetchStrategy = configLoader.getExternalUrls().getJournals().getFetchMode();
|
||||
return getAll(urlConfigs, fetchStrategy, externalUrlCriteria);
|
||||
}
|
||||
@Cacheable(value = "taxonomies", keyGenerator = "externalUrlsKeyGenerator")
|
||||
public List<Map<String, String>> getTaxonomies(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet {
|
||||
List<UrlConfiguration> urlConfigs =
|
||||
key != null && !key.isEmpty() ? configLoader.getExternalUrls().getTaxonomies().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList())
|
||||
: configLoader.getExternalUrls().getTaxonomies().getUrls();
|
||||
FetchStrategy fetchStrategy = configLoader.getExternalUrls().getTaxonomies().getFetchMode();
|
||||
return getAll(urlConfigs, fetchStrategy, externalUrlCriteria);
|
||||
}
|
||||
@Cacheable(value = "publications", keyGenerator = "externalUrlsKeyGenerator")
|
||||
public List<Map<String, String>> getPublications(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet {
|
||||
List<UrlConfiguration> urlConfigs =
|
||||
key != null && !key.isEmpty() ? configLoader.getExternalUrls().getPublications().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList())
|
||||
: configLoader.getExternalUrls().getPublications().getUrls();
|
||||
FetchStrategy fetchStrategy = configLoader.getExternalUrls().getPublications().getFetchMode();
|
||||
return getAll(urlConfigs, fetchStrategy, externalUrlCriteria);
|
||||
}
|
||||
|
||||
@Cacheable(value = "grants", keyGenerator = "externalUrlsKeyGenerator")
|
||||
public List<Map<String, String>> getGrants(ExternalUrlCriteria externalUrlCriteria) throws NoURLFound, HugeResultSet {
|
||||
|
@ -143,6 +176,12 @@ public class RemoteFetcher {
|
|||
return data.size();
|
||||
}
|
||||
|
||||
public List<Map<String, String>> getExternalGeneric(ExternalUrlCriteria externalUrlCriteria, GenericUrls genericUrls) {
|
||||
List<UrlConfiguration> urlConfigurations = genericUrls.getUrls();
|
||||
FetchStrategy fetchStrategy = genericUrls.getFetchMode();
|
||||
return getAll(urlConfigurations, fetchStrategy, externalUrlCriteria);
|
||||
}
|
||||
|
||||
|
||||
private List<Map<String, String>> getAll(List<UrlConfiguration> urlConfigs, FetchStrategy fetchStrategy, ExternalUrlCriteria externalUrlCriteria) {
|
||||
|
||||
|
@ -297,21 +336,12 @@ public class RemoteFetcher {
|
|||
if (response.getHeaders().get("Content-Type").get(0).contains("json")) {
|
||||
DocumentContext jsonContext = JsonPath.parse(response.getBody());
|
||||
|
||||
if (jsonDataPath.getFieldsUrlConfiguration().getSource() != null) {
|
||||
results = RemoteFetcherUtils.getFromJsonWithSource(jsonContext, jsonDataPath);
|
||||
} else if (jsonDataPath.getFieldsUrlConfiguration().getCount() != null) { // parsing services.openaire.eu
|
||||
results = RemoteFetcherUtils.getFromJsonWithParsedData(jsonContext, jsonDataPath);
|
||||
} else if (jsonDataPath.getFieldsUrlConfiguration().getPath() != null) {
|
||||
if (jsonDataPath.getFieldsUrlConfiguration().getPath() != null) {
|
||||
results = RemoteFetcherUtils.getFromJsonWithRecursiveFetching(jsonContext, jsonDataPath, this, requestBody, requestType);
|
||||
} else if (jsonDataPath.getFieldsUrlConfiguration().getTypes() != null) {
|
||||
results = RemoteFetcherUtils.getFromJsonWithType(jsonContext, jsonDataPath);
|
||||
} else if (jsonDataPath.getFieldsUrlConfiguration().getFirstName() != null) {
|
||||
results = RemoteFetcherUtils.getFromJsonWithFirstAndLastName(jsonContext, jsonDataPath);
|
||||
} else {
|
||||
results = new Results(jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getName() + "," + jsonDataPath.getFieldsUrlConfiguration().getDescription()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getUri() + "," + jsonDataPath.getFieldsUrlConfiguration().getId() + "]"),
|
||||
new HashMap<>(1, 1));
|
||||
results = RemoteFetcherUtils.getFromJson(jsonContext, jsonDataPath);
|
||||
}
|
||||
results.setResults(results.getResults().stream().map(e -> e.entrySet().stream().collect(Collectors.toMap(x -> this.transformKey(jsonDataPath,x.getKey()), Map.Entry::getValue)))
|
||||
.collect(Collectors.toList()));
|
||||
|
@ -370,6 +400,10 @@ public class RemoteFetcher {
|
|||
results = new Results(values, new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
if (results.getPagination().size() == 0) {
|
||||
results.getPagination().put("pages", 1);
|
||||
results.getPagination().put("count", results.getResults().size());
|
||||
}
|
||||
return results;
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
|
|
|
@ -1,67 +1,30 @@
|
|||
package eu.eudat.logic.proxy.fetching;
|
||||
|
||||
import com.jayway.jsonpath.Configuration;
|
||||
import com.jayway.jsonpath.DocumentContext;
|
||||
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
|
||||
import eu.eudat.logic.proxy.config.DataUrlConfiguration;
|
||||
import eu.eudat.logic.proxy.config.ExternalUrlCriteria;
|
||||
import eu.eudat.logic.proxy.fetching.entities.Results;
|
||||
import net.minidev.json.JSONArray;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class RemoteFetcherUtils {
|
||||
private final static Logger logger = LoggerFactory.getLogger(RemoteFetcherUtils.class);
|
||||
|
||||
public static Results getFromJsonWithSource(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
return new Results(jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getName() + "," + jsonDataPath.getFieldsUrlConfiguration().getDescription()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getUri() + "," + jsonDataPath.getFieldsUrlConfiguration().getId()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getSource() + "]"),
|
||||
public static Results getFromJson(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
return new Results(parseData(jsonContext, jsonDataPath),
|
||||
new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
public static Results getFromJsonWithParsedData(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
Results results = new Results(jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getName()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getId() + "]"),
|
||||
new HashMap<>(1, 1));
|
||||
List<Map<String, String>> fixedResults = results.getResults().stream().map(item -> {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
String id;
|
||||
if (i == 0) {
|
||||
id = jsonDataPath.getFieldsUrlConfiguration().getId().replace("'", "");
|
||||
} else {
|
||||
id = jsonDataPath.getFieldsUrlConfiguration().getName().replace("'", "");
|
||||
}
|
||||
if (!(item.get(id) instanceof String)) {
|
||||
Object obj = item.get(id);
|
||||
if (obj instanceof JSONArray) {
|
||||
JSONArray jarr = (JSONArray) obj;
|
||||
if (jarr.get(0) instanceof String) {
|
||||
item.put(id, jarr.get(0).toString());
|
||||
} else {
|
||||
for (int j = 0; j < jarr.size(); j++) {
|
||||
mapToMap(id, (Map<String, String>)jarr.get(j), item, i == 1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (obj instanceof Map) {
|
||||
mapToMap(id, (Map<String, String>) obj, item, i == 1);
|
||||
} else if (obj != null){
|
||||
item.put(id, obj.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return item;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return new Results(fixedResults, new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
public static Results getFromJsonWithRecursiveFetching(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath, RemoteFetcher remoteFetcher, String requestBody, String requestType) {
|
||||
Results results = new Results(jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getPath()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getHost() + "]"),
|
||||
Results results = new Results(parseData(jsonContext, jsonDataPath),
|
||||
new HashMap<>(1, 1));
|
||||
|
||||
List<Map<String, String>> multiResults = results.getResults().stream().map(result -> {
|
||||
|
@ -74,34 +37,8 @@ public class RemoteFetcherUtils {
|
|||
return new Results(multiResults, new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
public static Results getFromJsonWithType(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
List<Map<String, Object>> tempRes = jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getId() + "," + jsonDataPath.getFieldsUrlConfiguration().getName()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getTypes() + "," + jsonDataPath.getFieldsUrlConfiguration().getUri() + "]");
|
||||
List<Map<String, String>> finalRes = new ArrayList<>();
|
||||
tempRes.forEach(map -> {
|
||||
Map<String, String> resMap = new HashMap<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (key.equals(jsonDataPath.getFieldsUrlConfiguration().getTypes().substring(1, jsonDataPath.getFieldsUrlConfiguration().getTypes().length() - 1))) {
|
||||
resMap.put("tags", ((JSONArray) value).toJSONString());
|
||||
} else if (key.equals(jsonDataPath.getFieldsUrlConfiguration().getUri().substring(1, jsonDataPath.getFieldsUrlConfiguration().getTypes().length() - 1))) {
|
||||
resMap.put(key, ((JSONArray) value).toJSONString());
|
||||
} else {
|
||||
resMap.put(key, (String) value);
|
||||
}
|
||||
});
|
||||
|
||||
finalRes.add(resMap);
|
||||
});
|
||||
|
||||
return new Results(finalRes,
|
||||
new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
public static Results getFromJsonWithFirstAndLastName(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
Results results = new Results(jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getId() + "," + jsonDataPath.getFieldsUrlConfiguration().getFirstName()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getLastName() + "]"),
|
||||
Results results = new Results(parseData(jsonContext, jsonDataPath),
|
||||
new HashMap<>(1, 1));
|
||||
results.getResults().stream().forEach(entry -> {
|
||||
String name = entry.get(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", "")) + " " + entry.get(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", ""));
|
||||
|
@ -112,17 +49,48 @@ public class RemoteFetcherUtils {
|
|||
return results;
|
||||
}
|
||||
|
||||
private static void mapToMap(String key, Map<String, String> source, Map<String, String> destination, boolean isTitle) {
|
||||
if (source != null) {
|
||||
String content = source.get("content");
|
||||
/*if (isTitle) {
|
||||
String classId = source.get("classid");
|
||||
if (classId.equals("main title")) {
|
||||
destination.put(key, content);
|
||||
private static List<Map<String, String>> parseData (DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
List <Map<String, Object>> rawData = jsonContext.read(jsonDataPath.getPath());
|
||||
List<Map<String, String>> parsedData = new ArrayList<>();
|
||||
rawData.forEach(stringObjectMap -> {
|
||||
parsedData.add(new LinkedHashMap<>());
|
||||
Arrays.stream(jsonDataPath.getFieldsUrlConfiguration().getClass().getDeclaredFields()).forEach(field -> {
|
||||
String getterMethodName = "get" + field.getName().substring(0, 1).toUpperCase(Locale.ROOT) + field.getName().substring(1);
|
||||
Method getterMethod = Arrays.stream(jsonDataPath.getFieldsUrlConfiguration().getClass().getDeclaredMethods()).filter(method -> method.getName().equals(getterMethodName)).collect(Collectors.toList()).get(0);
|
||||
try {
|
||||
String value = ((String) getterMethod.invoke(jsonDataPath.getFieldsUrlConfiguration()));
|
||||
if (value != null) {
|
||||
value = value.replace("'", "");
|
||||
if (stringObjectMap.containsKey(value)) {
|
||||
parsedData.get(parsedData.size() - 1).put(field.getName().equals("types") ? "tags" : value, normalizeValue(stringObjectMap.get(value), (field.getName().equals("types") || field.getName().equals("uri"))));
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
logger.error(e.getLocalizedMessage(), e);
|
||||
}
|
||||
} else {*/
|
||||
destination.put(key, content);
|
||||
// }
|
||||
});
|
||||
});
|
||||
return parsedData;
|
||||
}
|
||||
|
||||
private static String normalizeValue(Object value, boolean jsonString) {
|
||||
if (value instanceof JSONArray) {
|
||||
if (jsonString) {
|
||||
return ((JSONArray)value).toJSONString();
|
||||
}
|
||||
JSONArray jarr = (JSONArray) value;
|
||||
if (jarr.get(0) instanceof String) {
|
||||
return jarr.get(0).toString();
|
||||
} else {
|
||||
for (Object o : jarr) {
|
||||
if ((o instanceof Map) && ((Map) o).containsKey("content")) {
|
||||
return ((Map<String, String>) o).get("content");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (value instanceof Map) {
|
||||
return ((Map<String, String>)value).get("content");
|
||||
}
|
||||
return value != null ? value.toString() : null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,30 +1,26 @@
|
|||
package eu.eudat.logic.services.forms;
|
||||
|
||||
import eu.eudat.models.data.user.components.commons.Rule;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Created by ikalyvas on 3/5/2018.
|
||||
*/
|
||||
@Service("visibilityRuleService")
|
||||
public class VisibilityRuleServiceImpl implements VisibilityRuleService {
|
||||
private Map<String, Boolean> elementVisibility = new HashMap<>();
|
||||
private VisibilityContext visibilityContext;
|
||||
private final Map<String, Boolean> elementVisibility = new HashMap<>();
|
||||
private Map<String, Object> properties;
|
||||
|
||||
public boolean isElementVisible(String id) {
|
||||
if (!this.elementVisibility.containsKey(id) || this.elementVisibility.get(id)) return true;
|
||||
return false;
|
||||
return !this.elementVisibility.containsKey(id) || this.elementVisibility.get(id);
|
||||
}
|
||||
|
||||
public void setProperties(Map<String, Object> properties) {
|
||||
this.properties = properties;
|
||||
this.properties.entrySet().stream()
|
||||
.filter(stringObjectEntry -> stringObjectEntry.getValue() instanceof String && ((String) stringObjectEntry.getValue()).startsWith("[") && ((String) stringObjectEntry.getValue()).endsWith("]")).forEach(stringObjectEntry -> {
|
||||
stringObjectEntry.setValue(parseArray((String) stringObjectEntry.getValue()));
|
||||
});
|
||||
.filter(stringObjectEntry -> stringObjectEntry.getValue() instanceof String && ((String) stringObjectEntry.getValue()).startsWith("[")
|
||||
&& ((String) stringObjectEntry.getValue()).endsWith("]"))
|
||||
.forEach(stringObjectEntry -> stringObjectEntry.setValue(parseArray((String) stringObjectEntry.getValue())));
|
||||
}
|
||||
|
||||
private List<String> parseArray(String original) {
|
||||
|
@ -33,19 +29,20 @@ public class VisibilityRuleServiceImpl implements VisibilityRuleService {
|
|||
}
|
||||
|
||||
public void buildVisibilityContext(List<Rule> sources) {
|
||||
this.visibilityContext = new VisibilityContext();
|
||||
this.visibilityContext.buildVisibilityContext(sources);
|
||||
this.visibilityContext.getVisibilityRules().forEach(item-> this.evaluateVisibility(item));
|
||||
VisibilityContext visibilityContext = new VisibilityContext();
|
||||
visibilityContext.buildVisibilityContext(sources);
|
||||
visibilityContext.getVisibilityRules().forEach(this::evaluateVisibility);
|
||||
}
|
||||
|
||||
private void evaluateVisibility(VisibilityRule rule) {
|
||||
List<VisibilityRuleSource> sources = rule.getVisibilityRuleSources();
|
||||
for(int i = 0; i < sources.size(); i++){
|
||||
if (properties.containsKey(sources.get(i).getVisibilityRuleSourceId()) && (isContained(properties.get(sources.get(i).getVisibilityRuleSourceId()), sources.get(i).getVisibilityRuleSourceValue()) || properties.get(sources.get(i).getVisibilityRuleSourceId()).equals(sources.get(i).getVisibilityRuleSourceValue()))) {
|
||||
for(VisibilityRuleSource source: sources){
|
||||
if (properties.containsKey(source.getVisibilityRuleSourceId())
|
||||
&& isContained(properties.get(source.getVisibilityRuleSourceId()), source.getVisibilityRuleSourceValue())) {
|
||||
this.elementVisibility.put(rule.getVisibilityRuleTargetId(), true);
|
||||
}else{
|
||||
this.elementVisibility.put(rule.getVisibilityRuleTargetId(), false);
|
||||
return;
|
||||
} else {
|
||||
this.elementVisibility.put(rule.getVisibilityRuleTargetId(),
|
||||
this.elementVisibility.getOrDefault(rule.getVisibilityRuleTargetId(), false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -53,7 +50,8 @@ public class VisibilityRuleServiceImpl implements VisibilityRuleService {
|
|||
private Boolean isContained(Object values, String source) {
|
||||
if (values instanceof List) {
|
||||
return ((Collection<?>) values).contains(source);
|
||||
} else {
|
||||
return values.equals(source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,5 @@ public interface UtilitiesService {
|
|||
|
||||
MailService getMailService();
|
||||
|
||||
VisibilityRuleService getVisibilityRuleService();
|
||||
|
||||
ConfirmationEmailService getConfirmationEmailService();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.eudat.logic.services.utilities;
|
||||
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -12,22 +13,15 @@ public class UtilitiesServiceImpl implements UtilitiesService {
|
|||
|
||||
private InvitationService invitationService;
|
||||
private MailService mailService;
|
||||
private VisibilityRuleService visibilityRuleService;
|
||||
private ConfirmationEmailService confirmationEmailService;
|
||||
|
||||
@Autowired
|
||||
public UtilitiesServiceImpl(InvitationService invitationService, MailService mailService, VisibilityRuleService visibilityRuleService, ConfirmationEmailService confirmationEmailService) {
|
||||
public UtilitiesServiceImpl(InvitationService invitationService, MailService mailService, ConfirmationEmailService confirmationEmailService) {
|
||||
this.invitationService = invitationService;
|
||||
this.mailService = mailService;
|
||||
this.visibilityRuleService = visibilityRuleService;
|
||||
this.confirmationEmailService = confirmationEmailService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisibilityRuleService getVisibilityRuleService() {
|
||||
return visibilityRuleService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfirmationEmailService getConfirmationEmailService() {
|
||||
return confirmationEmailService;
|
||||
|
|
|
@ -88,6 +88,11 @@ public class ModelBuilder {
|
|||
if (type.equals("datePicker")) return (FieldData<U>) new DatePickerData().fromData(data);
|
||||
if (type.equals("externalDatasets")) return (FieldData<U>) new ExternalDatasetsData().fromData(data);
|
||||
if (type.equals("dataRepositories")) return (FieldData<U>) new DataRepositoriesData().fromData(data);
|
||||
if (type.equals("pubRepositories")) return (FieldData<U>) new DataRepositoriesData().fromData(data);
|
||||
if (type.equals("journalRepositories")) return (FieldData<U>) new DataRepositoriesData().fromData(data);
|
||||
if (type.equals("taxonomies")) return (FieldData<U>) new TaxonomiesData().fromData(data);
|
||||
if (type.equals("licenses")) return (FieldData<U>) new LicensesData().fromData(data);
|
||||
if (type.equals("publications")) return (FieldData<U>) new PublicationsData().fromData(data);
|
||||
if (type.equals("registries")) return (FieldData<U>) new RegistriesData().fromData(data);
|
||||
if (type.equals("services")) return (FieldData<U>) new ServicesData().fromData(data);
|
||||
if (type.equals("tags")) return (FieldData<U>) new TagsData().fromData(data);
|
||||
|
@ -128,6 +133,11 @@ public class ModelBuilder {
|
|||
if (type.equals("datePicker")) return (FieldData<U>) new DatePickerData().fromData(data);
|
||||
if (type.equals("externalDatasets")) return (FieldData<U>) new ExternalDatasetsData().fromData(data);
|
||||
if (type.equals("dataRepositories")) return (FieldData<U>) new DataRepositoriesData().fromData(data);
|
||||
if (type.equals("pubRepositories")) return (FieldData<U>) new DataRepositoriesData().fromData(data);
|
||||
if (type.equals("journalRepositories")) return (FieldData<U>) new DataRepositoriesData().fromData(data);
|
||||
if (type.equals("taxonomies")) return (FieldData<U>) new TaxonomiesData().fromData(data);
|
||||
if (type.equals("licenses")) return (FieldData<U>) new LicensesData().fromData(data);
|
||||
if (type.equals("publications")) return (FieldData<U>) new PublicationsData().fromData(data);
|
||||
if (type.equals("registries")) return (FieldData<U>) new RegistriesData().fromData(data);
|
||||
if (type.equals("services")) return (FieldData<U>) new ServicesData().fromData(data);
|
||||
if (type.equals("tags")) return (FieldData<U>) new TagsData().fromData(data);
|
||||
|
|
|
@ -27,7 +27,9 @@ import java.io.IOException;
|
|||
import java.math.BigInteger;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.time.temporal.TemporalAccessor;
|
||||
|
@ -131,7 +133,7 @@ public class WordBuilder {
|
|||
this.options.put(ParagraphStyle.COMMENT, (mainDocumentPart, item) -> {
|
||||
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
|
||||
XWPFRun run = paragraph.createRun();
|
||||
run.setText(item);
|
||||
run.setText(" " + item);
|
||||
run.setItalic(true);
|
||||
return paragraph;
|
||||
});
|
||||
|
@ -178,7 +180,7 @@ public class WordBuilder {
|
|||
number.setVal(BigInteger.valueOf(indent));
|
||||
paragraphPos = mainDocumentPart.getPosOfParagraph(paragraph);
|
||||
}
|
||||
createSections(section.getSections(), mainDocumentPart, ParagraphStyle.HEADER5, 1, createListing, visibilityRuleService, page, tempSectionString);
|
||||
createSections(section.getSections(), mainDocumentPart, ParagraphStyle.HEADER4, 1, createListing, visibilityRuleService, page, tempSectionString);
|
||||
hasValue = createCompositeFields(section.getCompositeFields(), mainDocumentPart, 2, createListing, visibilityRuleService, page, tempSectionString);
|
||||
|
||||
if (!hasValue && paragraphPos > -1) {
|
||||
|
@ -191,20 +193,35 @@ public class WordBuilder {
|
|||
private Boolean createCompositeFields(List<FieldSet> compositeFields, XWPFDocument mainDocumentPart, Integer indent, Boolean createListing, VisibilityRuleService visibilityRuleService, Integer page, String section) {
|
||||
if (createListing) this.addListing(mainDocumentPart, indent, true, true);
|
||||
boolean hasValue = false;
|
||||
boolean returnedValue = false;
|
||||
for (FieldSet compositeField: compositeFields) {
|
||||
if (visibilityRuleService.isElementVisible(compositeField.getId()) && hasVisibleFields(compositeField, visibilityRuleService)) {
|
||||
char c = 'a';
|
||||
int paragraphPos = -1;
|
||||
if (compositeField.getTitle() != null && !compositeField.getTitle().isEmpty() && !createListing) {
|
||||
XWPFParagraph paragraph = addParagraphContent(page + "." + section + "." + (compositeField.getOrdinal() +1) + " " + compositeField.getTitle(), mainDocumentPart, ParagraphStyle.HEADER6, numId);
|
||||
CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
|
||||
number.setVal(BigInteger.valueOf(indent));
|
||||
paragraphPos = mainDocumentPart.getPosOfParagraph(paragraph);
|
||||
if(compositeField.getMultiplicityItems() != null && !compositeField.getMultiplicityItems().isEmpty()){
|
||||
addParagraphContent(c + ".\n", mainDocumentPart, ParagraphStyle.HEADER6, numId);
|
||||
}
|
||||
}
|
||||
hasValue = createFields(compositeField.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService);
|
||||
if(hasValue){
|
||||
returnedValue = true;
|
||||
}
|
||||
if (compositeField.getMultiplicityItems() != null && !compositeField.getMultiplicityItems().isEmpty()) {
|
||||
List<FieldSet> list = compositeField.getMultiplicityItems().stream().sorted(Comparator.comparingInt(FieldSet::getOrdinal)).collect(Collectors.toList());
|
||||
for (FieldSet multiplicityFieldset : list) {
|
||||
hasValue = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService);
|
||||
if(!createListing){
|
||||
c++;
|
||||
addParagraphContent(c + ".\n", mainDocumentPart, ParagraphStyle.HEADER6, numId);
|
||||
}
|
||||
hasValue = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService);
|
||||
if(hasValue){
|
||||
returnedValue = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hasValue && compositeField.getHasCommentField() && compositeField.getCommentFieldValue() != null && !compositeField.getCommentFieldValue().isEmpty() && !createListing) {
|
||||
|
@ -217,20 +234,38 @@ public class WordBuilder {
|
|||
}
|
||||
}
|
||||
}
|
||||
return hasValue;
|
||||
return returnedValue;
|
||||
}
|
||||
|
||||
private Boolean createFields(List<Field> fields, XWPFDocument mainDocumentPart, Integer indent, Boolean createListing, VisibilityRuleService visibilityRuleService) {
|
||||
if (createListing) this.addListing(mainDocumentPart, indent, false, false);
|
||||
boolean hasValue = false;
|
||||
List<Field> tempFields = fields.stream().sorted(Comparator.comparingInt(Field::getOrdinal)).collect(Collectors.toList());
|
||||
List<Field> formats = tempFields.stream().filter(f -> {
|
||||
try {
|
||||
String fTemp = this.formatter(f);
|
||||
return fTemp != null && !fTemp.isEmpty();
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
return false;
|
||||
}).collect(Collectors.toList());
|
||||
for (Field field: tempFields) {
|
||||
if (visibilityRuleService.isElementVisible(field.getId())) {
|
||||
if (!createListing) {
|
||||
try {
|
||||
if (field.getValue() != null && !field.getValue().toString().isEmpty()) {
|
||||
this.indent = indent;
|
||||
XWPFParagraph paragraph = addParagraphContent(this.formatter(field), mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId);
|
||||
String format = this.formatter(field);
|
||||
if(format != null && !format.isEmpty()){
|
||||
if(format.charAt(0) == '['){
|
||||
format = format.substring(1, format.length() - 1).replaceAll(",", ", ");
|
||||
}
|
||||
if(formats.size() > 1){
|
||||
format = "\t• " + format;
|
||||
}
|
||||
}
|
||||
XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId);
|
||||
if (paragraph != null) {
|
||||
CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
|
||||
number.setVal(BigInteger.valueOf(indent));
|
||||
|
@ -284,12 +319,20 @@ public class WordBuilder {
|
|||
|
||||
private String formatter(Field field) throws IOException {
|
||||
String comboboxType = null;
|
||||
if (field.getValue() == null) {
|
||||
return null;
|
||||
}
|
||||
switch (field.getViewStyle().getRenderStyle()) {
|
||||
case "researchers":
|
||||
case "projects":
|
||||
case "organizations":
|
||||
case "externalDatasets":
|
||||
case "dataRepositories":
|
||||
case "pubRepositories":
|
||||
case "journalRepositories":
|
||||
case "taxonomies":
|
||||
case "licenses":
|
||||
case "publications":
|
||||
case "registries":
|
||||
case "services":
|
||||
case "tags":
|
||||
|
@ -320,7 +363,7 @@ public class WordBuilder {
|
|||
for (Map<String, Object> map: mapList) {
|
||||
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
||||
if (entry.getValue() != null && (entry.getKey().equals("label") || entry.getKey().equals("description") || entry.getKey().equals("name"))) {
|
||||
sb.append(entry.getValue().toString());
|
||||
sb.append(entry.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -331,9 +374,9 @@ public class WordBuilder {
|
|||
} else if (comboboxType.equals("wordlist")) {
|
||||
WordListData wordListData = (WordListData) field.getData();
|
||||
if (field.getValue() != null){
|
||||
ComboBoxData<WordListData>.Option selectedOption = null;
|
||||
ComboBoxData.Option selectedOption = null;
|
||||
if (!wordListData.getOptions().isEmpty()) {
|
||||
for (ComboBoxData<WordListData>.Option option : wordListData.getOptions()) {
|
||||
for (ComboBoxData.Option option : wordListData.getOptions()) {
|
||||
if (option.getValue().equals(field.getValue())) {
|
||||
selectedOption = option;
|
||||
}
|
||||
|
@ -357,12 +400,15 @@ public class WordBuilder {
|
|||
case "datepicker":
|
||||
case "datePicker":{
|
||||
Instant instant;
|
||||
try {
|
||||
instant = Instant.parse((String) field.getValue());
|
||||
} catch (DateTimeParseException ex) {
|
||||
instant = (Instant) DateTimeFormatter.ofPattern("yyyy-MM-dd").parse((String)field.getValue());
|
||||
if (!((String)field.getValue()).isEmpty()) {
|
||||
try {
|
||||
instant = Instant.parse((String) field.getValue());
|
||||
} catch (DateTimeParseException ex) {
|
||||
instant = LocalDate.parse((String) field.getValue()).atStartOfDay().toInstant(ZoneOffset.UTC);
|
||||
}
|
||||
return field.getValue() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.systemDefault()).format(instant) : "";
|
||||
}
|
||||
return field.getValue() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.systemDefault()).format(instant) : "";
|
||||
return (String) field.getValue();
|
||||
}
|
||||
case "freetext":
|
||||
case "textarea":
|
||||
|
|
|
@ -120,6 +120,7 @@ public class ExportXmlBuilderDatasetProfile {
|
|||
Element multiplicity = element.createElement("multiplicity");
|
||||
multiplicity.setAttribute("max", "" + field.getMultiplicity().getMax());
|
||||
multiplicity.setAttribute("min", "" + field.getMultiplicity().getMin());
|
||||
multiplicity.setAttribute("placeholder", field.getMultiplicity().getPlaceholder());
|
||||
composite.appendChild(multiplicity);
|
||||
}
|
||||
if (field.getTitle() != null && !field.getTitle().isEmpty()) {
|
||||
|
@ -162,6 +163,11 @@ public class ExportXmlBuilderDatasetProfile {
|
|||
numbering.setTextContent(field.getNumbering());
|
||||
elementField.appendChild(numbering);
|
||||
}
|
||||
if (field.getRdaProperty() != null) {
|
||||
Element rdaProperty = element.createElement("rdaProperty");
|
||||
rdaProperty.setTextContent(field.getRdaProperty());
|
||||
elementField.appendChild(rdaProperty);
|
||||
}
|
||||
if (field.getValidations() != null) {
|
||||
Element validations = element.createElement("validations");
|
||||
field.getValidations().forEach(validation -> {
|
||||
|
@ -294,10 +300,27 @@ public class ExportXmlBuilderDatasetProfile {
|
|||
dataOut.setAttribute("type", externalDatasetsData.getType());
|
||||
break;
|
||||
case DATA_REPOSITORIES:
|
||||
case JOURNAL_REPOSITORIES:
|
||||
case PUB_REPOSITORIES:
|
||||
DataRepositoriesData dataRepositoriesData = (DataRepositoriesData) field.getData();
|
||||
dataOut.setAttribute("label", dataRepositoriesData.getLabel());
|
||||
dataOut.setAttribute("multiAutocomplete", dataRepositoriesData.getMultiAutoComplete().toString());
|
||||
break;
|
||||
case TAXONOMIES:
|
||||
TaxonomiesData taxonomiesData = (TaxonomiesData) field.getData();
|
||||
dataOut.setAttribute("label", taxonomiesData.getLabel());
|
||||
dataOut.setAttribute("multiAutocomplete", taxonomiesData.getMultiAutoComplete().toString());
|
||||
break;
|
||||
case LICENSES:
|
||||
LicensesData licensesData = (LicensesData) field.getData();
|
||||
dataOut.setAttribute("label", licensesData.getLabel());
|
||||
dataOut.setAttribute("multiAutocomplete", licensesData.getMultiAutoComplete().toString());
|
||||
break;
|
||||
case PUBLICATIONS:
|
||||
PublicationsData publicationsData = (PublicationsData) field.getData();
|
||||
dataOut.setAttribute("label", publicationsData.getLabel());
|
||||
dataOut.setAttribute("multiAutocomplete", publicationsData.getMultiAutoComplete().toString());
|
||||
break;
|
||||
case ORGANIZATIONS:
|
||||
OrganizationsData organizationsData = (OrganizationsData) field.getData();
|
||||
dataOut.setAttribute("label", organizationsData.getLabel());
|
||||
|
|
|
@ -29,6 +29,8 @@ public class Field {
|
|||
|
||||
private Object data;
|
||||
|
||||
private String rdaProperty;
|
||||
|
||||
@XmlAttribute(name = "id")
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -101,6 +103,15 @@ public class Field {
|
|||
this.data = data;
|
||||
}
|
||||
|
||||
@XmlElement(name = "rdaProperty")
|
||||
public String getRdaProperty() {
|
||||
return rdaProperty;
|
||||
}
|
||||
|
||||
public void setRdaProperty(String rdaProperty) {
|
||||
this.rdaProperty = rdaProperty;
|
||||
}
|
||||
|
||||
|
||||
public eu.eudat.models.data.admin.components.datasetprofile.Field toAdminCompositeModelSection() {
|
||||
eu.eudat.models.data.admin.components.datasetprofile.Field fieldEntity =new eu.eudat.models.data.admin.components.datasetprofile.Field();
|
||||
|
@ -120,6 +131,7 @@ public class Field {
|
|||
if (data != null) {
|
||||
fieldEntity.setData(data.toMap((Element) this.data));
|
||||
}
|
||||
fieldEntity.setRdaCommonStandard(this.rdaProperty);
|
||||
return fieldEntity;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
public class Multiplicity {
|
||||
private int max;
|
||||
private int min;
|
||||
private String placeholder;
|
||||
|
||||
@XmlAttribute(name = "max")
|
||||
public int getMax() {
|
||||
|
@ -27,10 +28,20 @@ public class Multiplicity {
|
|||
this.min = min;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "placeholder")
|
||||
public String getPlaceholder() {
|
||||
return placeholder;
|
||||
}
|
||||
|
||||
public void setPlaceholder(String placeholder) {
|
||||
this.placeholder = placeholder;
|
||||
}
|
||||
|
||||
public eu.eudat.models.data.components.commons.Multiplicity toAdminCompositeModelSection() {
|
||||
eu.eudat.models.data.components.commons.Multiplicity multiplicityEntity = new eu.eudat.models.data.components.commons.Multiplicity();
|
||||
multiplicityEntity.setMax(max);
|
||||
multiplicityEntity.setMin(min);
|
||||
multiplicityEntity.setPlaceholder(placeholder);
|
||||
return multiplicityEntity;
|
||||
}
|
||||
}
|
|
@ -18,6 +18,7 @@ public class Section {
|
|||
private String extendedDescription;
|
||||
private String title;
|
||||
private List<Section> section;
|
||||
private Boolean multiplicity;
|
||||
|
||||
@XmlAttribute(name = "id")
|
||||
public String getId() {
|
||||
|
@ -134,4 +135,13 @@ public class Section {
|
|||
public void setSection(List<Section> section) {
|
||||
this.section = section;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "multiplicity")
|
||||
public Boolean getMultiplicity() {
|
||||
return multiplicity;
|
||||
}
|
||||
|
||||
public void setMultiplicity(Boolean multiplicity) {
|
||||
this.multiplicity = multiplicity;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ public class Sections {
|
|||
private String title;
|
||||
private List<Section> section;
|
||||
private FieldSets fieldSets;
|
||||
private Boolean multiplicity;
|
||||
|
||||
@XmlAttribute(name = "id")
|
||||
public String getId() {
|
||||
|
@ -100,6 +101,15 @@ public class Sections {
|
|||
this.fieldSets = fieldSets;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "multiplicity")
|
||||
public Boolean getMultiplicity() {
|
||||
return multiplicity;
|
||||
}
|
||||
|
||||
public void setMultiplicity(Boolean multiplicity) {
|
||||
this.multiplicity = multiplicity;
|
||||
}
|
||||
|
||||
public eu.eudat.models.data.admin.components.datasetprofile.Section toAdminCompositeModelSection() {
|
||||
eu.eudat.models.data.admin.components.datasetprofile.Section sectionEntity = new eu.eudat.models.data.admin.components.datasetprofile.Section();
|
||||
List<eu.eudat.models.data.admin.components.datasetprofile.Section> sectionsListEntity = new LinkedList<>();
|
||||
|
@ -118,6 +128,7 @@ public class Sections {
|
|||
sectionEntity.setDescription(description);
|
||||
sectionEntity.setPage(this.page);
|
||||
sectionEntity.setFieldSets(toAdminCompositeModelSectionFieldSets());
|
||||
sectionEntity.setMultiplicity(this.multiplicity);
|
||||
|
||||
|
||||
sectionEntity.setSections(sectionsListEntity);
|
||||
|
|
|
@ -4,10 +4,10 @@ public class JavaToJson {
|
|||
|
||||
public static String objectStringToJson(String object) {
|
||||
String result = object.replaceAll("=", "\":\"")
|
||||
.replaceAll("\\{", "{\"")
|
||||
//.replaceAll("\\{", "{\"")
|
||||
.replaceAll(", ", "\", \"")
|
||||
.replaceAll("}", "\"}" ).
|
||||
replaceAll("}\", \"\\{", "}, {");
|
||||
//.replaceAll("}", "\"}" ).
|
||||
.replaceAll("}\", \"\\{", "}, {");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import java.util.stream.Collectors;
|
|||
public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field>, Comparable {
|
||||
|
||||
public enum ValidationType {
|
||||
NONE((short) 0), REQUIRED((short) 1);
|
||||
NONE((short) 0), REQUIRED((short) 1), URL((short) 2);
|
||||
private short value;
|
||||
|
||||
private ValidationType(short value) {
|
||||
|
@ -30,6 +30,8 @@ public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.
|
|||
return NONE;
|
||||
case 1:
|
||||
return REQUIRED;
|
||||
case 2:
|
||||
return URL;
|
||||
default:
|
||||
return NONE;
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
private String id;
|
||||
private String title;
|
||||
private String description;
|
||||
private Boolean multiplicity;
|
||||
|
||||
public List<Section> getSections() {
|
||||
return sections;
|
||||
|
@ -81,11 +82,20 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
this.ordinal = ordinal;
|
||||
}
|
||||
|
||||
public Boolean getMultiplicity() {
|
||||
return multiplicity;
|
||||
}
|
||||
|
||||
public void setMultiplicity(Boolean multiplicity) {
|
||||
this.multiplicity = multiplicity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section toDatabaseDefinition(eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section item) {
|
||||
if (this.id == null || this.id.isEmpty()) this.id = "section_" + RandomStringUtils.random(5, true, true);
|
||||
item.setDefaultVisibility(this.defaultVisibility);
|
||||
item.setDescription(this.description);
|
||||
item.setMultiplicity(this.multiplicity);
|
||||
if (this.fieldSets != null)
|
||||
item.setFieldSets(new ModelBuilder().toViewStyleDefinition(this.fieldSets, eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.FieldSet.class));
|
||||
item.setId(this.id);
|
||||
|
@ -108,6 +118,7 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
this.page = item.getPage();
|
||||
this.sections = new ModelBuilder().fromViewStyleDefinition(item.getSections(), Section.class);
|
||||
this.title = item.getTitle();
|
||||
this.multiplicity = item.getMultiplicity();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -134,6 +145,7 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
shortenSection.setId(this.id);
|
||||
shortenSection.setTitle(this.title);
|
||||
shortenSection.setDescription(this.description);
|
||||
shortenSection.setMultiplicity(this.multiplicity);
|
||||
return shortenSection;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ public class Multiplicity {
|
|||
|
||||
private int min;
|
||||
private int max;
|
||||
private String placeholder;
|
||||
|
||||
public int getMin() {
|
||||
return min;
|
||||
|
@ -21,5 +22,11 @@ public class Multiplicity {
|
|||
this.max = max;
|
||||
}
|
||||
|
||||
public String getPlaceholder() {
|
||||
return placeholder;
|
||||
}
|
||||
|
||||
public void setPlaceholder(String placeholder) {
|
||||
this.placeholder = placeholder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,11 @@ public class ViewStyle {
|
|||
DATE_PICKER("datePicker"),
|
||||
EXTERNAL_DATASETS("externalDatasets"),
|
||||
DATA_REPOSITORIES("dataRepositories"),
|
||||
JOURNAL_REPOSITORIES("journalRepositories"),
|
||||
PUB_REPOSITORIES("pubRepositories"),
|
||||
LICENSES("licenses"),
|
||||
TAXONOMIES("taxonomies"),
|
||||
PUBLICATIONS("publications"),
|
||||
REGISTRIES("registries"),
|
||||
SERVICES("services"),
|
||||
TAGS("tags"),
|
||||
|
|
|
@ -10,10 +10,10 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
public class AutoCompleteData extends ComboBoxData<AutoCompleteData> {
|
||||
public class AutoCompleteSingleData {
|
||||
public static class AutoCompleteSingleData {
|
||||
private int autocompleteType;
|
||||
private String url;
|
||||
private Option autoCompleteOptions;
|
||||
private ComboBoxData.Option autoCompleteOptions;
|
||||
private String optionsRoot;
|
||||
|
||||
public int getAutocompleteType() {
|
||||
|
@ -38,10 +38,10 @@ public class AutoCompleteData extends ComboBoxData<AutoCompleteData> {
|
|||
this.url = url;
|
||||
}
|
||||
|
||||
public Option getAutoCompleteOptions() {
|
||||
public ComboBoxData.Option getAutoCompleteOptions() {
|
||||
return autoCompleteOptions;
|
||||
}
|
||||
public void setAutoCompleteOptions(Option autoCompleteOptions) {
|
||||
public void setAutoCompleteOptions(ComboBoxData.Option autoCompleteOptions) {
|
||||
this.autoCompleteOptions = autoCompleteOptions;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
|
||||
public abstract class ComboBoxData<T> extends FieldData<T> {
|
||||
public class Option implements XmlSerializable<Option> {
|
||||
public static class Option implements XmlSerializable<Option> {
|
||||
private String label;
|
||||
private String value;
|
||||
private String source;
|
||||
|
@ -54,7 +54,7 @@ public abstract class ComboBoxData<T> extends FieldData<T> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Option fromXml(Element item) {
|
||||
public ComboBoxData.Option fromXml(Element item) {
|
||||
this.label = item.getAttribute("label");
|
||||
this.value = item.getAttribute("value");
|
||||
this.source = item.getAttribute("source");
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package eu.eudat.models.data.components.commons.datafield;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class LicensesData extends FieldData<LicensesData> {
|
||||
private Boolean multiAutoComplete;
|
||||
|
||||
public Boolean getMultiAutoComplete() {
|
||||
return multiAutoComplete;
|
||||
}
|
||||
|
||||
public void setMultiAutoComplete(Boolean multiAutoComplete) {
|
||||
this.multiAutoComplete = multiAutoComplete;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LicensesData fromData(Object data) {
|
||||
if (data != null) {
|
||||
this.setLabel((String) ((Map<String, Object>) data).get("label"));
|
||||
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object toData() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element toXml(Document doc) {
|
||||
Element root = doc.createElement("data");
|
||||
root.setAttribute("label", this.getLabel());
|
||||
if (this.getMultiAutoComplete() != null) {
|
||||
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LicensesData fromXml(Element item) {
|
||||
this.setLabel(item != null ? item.getAttribute("label") : "");
|
||||
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> toMap(Element item) {
|
||||
HashMap dataMap = new HashMap();
|
||||
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
|
||||
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
|
||||
return dataMap;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package eu.eudat.models.data.components.commons.datafield;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PublicationsData extends FieldData<PublicationsData> {
|
||||
private Boolean multiAutoComplete;
|
||||
|
||||
public Boolean getMultiAutoComplete() {
|
||||
return multiAutoComplete;
|
||||
}
|
||||
|
||||
public void setMultiAutoComplete(Boolean multiAutoComplete) {
|
||||
this.multiAutoComplete = multiAutoComplete;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PublicationsData fromData(Object data) {
|
||||
if (data != null) {
|
||||
this.setLabel((String) ((Map<String, Object>) data).get("label"));
|
||||
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object toData() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element toXml(Document doc) {
|
||||
Element root = doc.createElement("data");
|
||||
root.setAttribute("label", this.getLabel());
|
||||
if (this.getMultiAutoComplete() != null) {
|
||||
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PublicationsData fromXml(Element item) {
|
||||
this.setLabel(item != null ? item.getAttribute("label") : "");
|
||||
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> toMap(Element item) {
|
||||
HashMap dataMap = new HashMap();
|
||||
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
|
||||
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
|
||||
return dataMap;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package eu.eudat.models.data.components.commons.datafield;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class TaxonomiesData extends FieldData<TaxonomiesData> {
|
||||
private Boolean multiAutoComplete;
|
||||
|
||||
public Boolean getMultiAutoComplete() {
|
||||
return multiAutoComplete;
|
||||
}
|
||||
|
||||
public void setMultiAutoComplete(Boolean multiAutoComplete) {
|
||||
this.multiAutoComplete = multiAutoComplete;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaxonomiesData fromData(Object data) {
|
||||
if (data != null) {
|
||||
this.setLabel((String) ((Map<String, Object>) data).get("label"));
|
||||
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object toData() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element toXml(Document doc) {
|
||||
Element root = doc.createElement("data");
|
||||
root.setAttribute("label", this.getLabel());
|
||||
if (this.getMultiAutoComplete() != null) {
|
||||
root.setAttribute("multiAutoComplete", this.getMultiAutoComplete().toString());
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaxonomiesData fromXml(Element item) {
|
||||
this.setLabel(item != null ? item.getAttribute("label") : "");
|
||||
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> toMap(Element item) {
|
||||
HashMap dataMap = new HashMap();
|
||||
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
|
||||
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
|
||||
return dataMap;
|
||||
}
|
||||
}
|
|
@ -11,17 +11,13 @@ import java.util.List;
|
|||
public abstract class RecentActivityModel<T extends DataEntity, S extends DataModel> implements DataModel<T, S> {
|
||||
private String id;
|
||||
private String title;
|
||||
private String description;
|
||||
private Date created;
|
||||
private Date modified;
|
||||
private int status;
|
||||
private int version;
|
||||
private String grant;
|
||||
private String grantAbbreviation;
|
||||
private String grantId;
|
||||
private Date finalizedAt;
|
||||
private Date publishedAt;
|
||||
private DatasetProfileOverviewModel profile;
|
||||
private int type;
|
||||
private List<UserInfoListingModel> users;
|
||||
private Boolean isPublic;
|
||||
|
@ -42,14 +38,6 @@ public abstract class RecentActivityModel<T extends DataEntity, S extends DataMo
|
|||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public Date getCreated() {
|
||||
return created;
|
||||
}
|
||||
|
@ -90,22 +78,6 @@ public abstract class RecentActivityModel<T extends DataEntity, S extends DataMo
|
|||
this.grant = grant;
|
||||
}
|
||||
|
||||
public String getGrantAbbreviation() {
|
||||
return grantAbbreviation;
|
||||
}
|
||||
|
||||
public void setGrantAbbreviation(String grantAbbreviation) {
|
||||
this.grantAbbreviation = grantAbbreviation;
|
||||
}
|
||||
|
||||
public String getGrantId() {
|
||||
return grantId;
|
||||
}
|
||||
|
||||
public void setGrantId(String grantId) {
|
||||
this.grantId = grantId;
|
||||
}
|
||||
|
||||
public Date getFinalizedAt() {
|
||||
return finalizedAt;
|
||||
}
|
||||
|
@ -122,14 +94,6 @@ public abstract class RecentActivityModel<T extends DataEntity, S extends DataMo
|
|||
this.publishedAt = publishedAt;
|
||||
}
|
||||
|
||||
public DatasetProfileOverviewModel getProfile() {
|
||||
return profile;
|
||||
}
|
||||
|
||||
public void setProfile(DatasetProfileOverviewModel profile) {
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package eu.eudat.models.data.dashboard.recent.model;
|
||||
|
||||
import eu.eudat.data.entities.Dataset;
|
||||
import eu.eudat.logic.utilities.helpers.LabelBuilder;
|
||||
import eu.eudat.models.data.dataset.DataRepository;
|
||||
import eu.eudat.models.data.dataset.Service;
|
||||
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
|
||||
import eu.eudat.models.data.listingmodels.UserInfoListingModel;
|
||||
|
||||
import java.util.Date;
|
||||
|
@ -13,9 +9,6 @@ import java.util.stream.Collectors;
|
|||
public class RecentDatasetModel extends RecentActivityModel<Dataset, RecentDatasetModel> {
|
||||
private String dmp;
|
||||
private String dmpId;
|
||||
private String dataRepositories;
|
||||
private String registries;
|
||||
private String services;
|
||||
|
||||
public String getDmp() {
|
||||
return dmp;
|
||||
|
@ -33,51 +26,20 @@ public class RecentDatasetModel extends RecentActivityModel<Dataset, RecentDatas
|
|||
this.dmpId = dmpId;
|
||||
}
|
||||
|
||||
public String getDataRepositories() {
|
||||
return dataRepositories;
|
||||
}
|
||||
|
||||
public void setDataRepositories(String dataRepositories) {
|
||||
this.dataRepositories = dataRepositories;
|
||||
}
|
||||
|
||||
public String getRegistries() {
|
||||
return registries;
|
||||
}
|
||||
|
||||
public void setRegistries(String registries) {
|
||||
this.registries = registries;
|
||||
}
|
||||
|
||||
public String getServices() {
|
||||
return services;
|
||||
}
|
||||
|
||||
public void setServices(String services) {
|
||||
this.services = services;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecentActivityModel fromEntity(Dataset entity) {
|
||||
this.setType(RecentActivityType.DATASET.getIndex());
|
||||
this.setId(entity.getId().toString());
|
||||
this.setTitle(entity.getLabel());
|
||||
this.setDescription(entity.getDescription());
|
||||
this.setCreated(entity.getCreated());
|
||||
this.setModified(entity.getModified());
|
||||
this.setStatus(entity.getStatus());
|
||||
this.setVersion(entity.getDmp() != null ? entity.getDmp().getVersion(): 0);
|
||||
this.setFinalizedAt(entity.getFinalizedAt());
|
||||
this.setGrantAbbreviation(entity.getDmp() != null ? entity.getDmp().getGrant().getAbbreviation() : "");
|
||||
this.setPublishedAt(entity.getDmp() != null ? entity.getDmp().getPublishedAt() : new Date());
|
||||
this.setGrantId(entity.getDmp() != null ? entity.getDmp().getGrant().getId().toString() : "");
|
||||
this.setProfile(entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()): null);
|
||||
this.setGrant(entity.getDmp() != null ? entity.getDmp().getGrant().getLabel() : "");
|
||||
this.setDataRepositories(entity.getDatasetDataRepositories() != null && !entity.getDatasetDataRepositories().isEmpty()? LabelBuilder.getLabel(entity.getDatasetDataRepositories().stream().map(item -> new DataRepository().fromDataModel(item.getDataRepository())).collect(Collectors.toList())) : "");
|
||||
this.setDmp( entity.getDmp() != null ? entity.getDmp().getLabel() : "");
|
||||
this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : "");
|
||||
this.setRegistries(LabelBuilder.getLabel(entity.getRegistries().stream().map(item -> new eu.eudat.models.data.dataset.Registry().fromDataModel(item)).collect(Collectors.toList())));
|
||||
this.setServices(LabelBuilder.getLabel(entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList())));
|
||||
this.setPublic(entity.getDmp().isPublic());
|
||||
this.setUsers(entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()));
|
||||
return this;
|
||||
|
@ -87,16 +49,12 @@ public class RecentDatasetModel extends RecentActivityModel<Dataset, RecentDatas
|
|||
this.setType(RecentActivityType.DATASET.getIndex());
|
||||
this.setId(entity.getId().toString());
|
||||
this.setTitle(entity.getLabel());
|
||||
this.setDescription(entity.getDescription());
|
||||
this.setCreated(entity.getCreated());
|
||||
this.setModified(entity.getModified());
|
||||
this.setStatus(entity.getStatus());
|
||||
this.setVersion(entity.getDmp() != null ? entity.getDmp().getVersion(): 0);
|
||||
this.setFinalizedAt(entity.getFinalizedAt());
|
||||
this.setGrantAbbreviation(entity.getDmp() != null ? entity.getDmp().getGrant().getAbbreviation() : "");
|
||||
this.setPublishedAt(entity.getDmp() != null ? entity.getDmp().getPublishedAt() : new Date());
|
||||
this.setGrantId(entity.getDmp() != null ? entity.getDmp().getGrant().getId().toString() : "");
|
||||
this.setProfile(entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()) : null);
|
||||
this.setGrant(entity.getDmp() != null ? entity.getDmp().getGrant().getLabel() : "");
|
||||
this.setDmp( entity.getDmp() != null ? entity.getDmp().getLabel() : "");
|
||||
this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : "");
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package eu.eudat.models.data.dashboard.recent.model;
|
||||
|
||||
import eu.eudat.data.entities.DMP;
|
||||
import eu.eudat.logic.utilities.helpers.LabelBuilder;
|
||||
import eu.eudat.models.data.dmp.AssociatedProfile;
|
||||
import eu.eudat.models.data.dmp.Organisation;
|
||||
import eu.eudat.models.data.listingmodels.UserInfoListingModel;
|
||||
import eu.eudat.models.data.urls.DatasetUrlListing;
|
||||
|
||||
|
@ -14,22 +11,10 @@ import java.util.UUID;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
public class RecentDmpModel extends RecentActivityModel<DMP, RecentDmpModel> {
|
||||
private String doi;
|
||||
private Map<String, Object> extraProperties;
|
||||
private List<DatasetUrlListing> datasets;
|
||||
private List<AssociatedProfile> associatedProfiles;
|
||||
private String organisations;
|
||||
private UUID groupId;
|
||||
|
||||
|
||||
public String getDoi() {
|
||||
return doi;
|
||||
}
|
||||
|
||||
public void setDoi(String doi) {
|
||||
this.doi = doi;
|
||||
}
|
||||
|
||||
public Map<String, Object> getExtraProperties() {
|
||||
return extraProperties;
|
||||
}
|
||||
|
@ -46,22 +31,6 @@ public class RecentDmpModel extends RecentActivityModel<DMP, RecentDmpModel> {
|
|||
this.datasets = datasets;
|
||||
}
|
||||
|
||||
public List<AssociatedProfile> getAssociatedProfiles() {
|
||||
return associatedProfiles;
|
||||
}
|
||||
|
||||
public void setAssociatedProfiles(List<AssociatedProfile> associatedProfiles) {
|
||||
this.associatedProfiles = associatedProfiles;
|
||||
}
|
||||
|
||||
public String getOrganisations() {
|
||||
return organisations;
|
||||
}
|
||||
|
||||
public void setOrganisations(String organisations) {
|
||||
this.organisations = organisations;
|
||||
}
|
||||
|
||||
public UUID getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
|
@ -76,22 +45,15 @@ public class RecentDmpModel extends RecentActivityModel<DMP, RecentDmpModel> {
|
|||
this.setType(RecentActivityType.DMP.getIndex());
|
||||
this.setId(entity.getId().toString());
|
||||
this.setTitle(entity.getLabel());
|
||||
this.setDescription(entity.getDescription());
|
||||
this.setCreated(entity.getCreated());
|
||||
this.setModified(entity.getModified());
|
||||
this.setStatus(entity.getStatus());
|
||||
this.setVersion(entity.getVersion());
|
||||
//this.datasets = entity.getDataset().stream().map(dataset -> new RecentDatasetModel().fromDmpEntity(dataset)).collect(Collectors.toList());
|
||||
this.datasets = entity.getDataset().stream().map(dataset -> new DatasetUrlListing().fromDataModel(dataset)).collect(Collectors.toList());
|
||||
this.associatedProfiles = entity.getAssociatedDmps().stream().map(item -> new AssociatedProfile().fromData(item)).collect(Collectors.toList());
|
||||
this.setFinalizedAt(entity.getFinalizedAt());
|
||||
this.setGrant(entity.getGrant().getLabel());
|
||||
this.setGrantAbbreviation(entity.getGrant().getAbbreviation());
|
||||
this.setGrantId(entity.getGrant().getId().toString());
|
||||
this.groupId = entity.getGroupId();
|
||||
this.setPublic(entity.isPublic());
|
||||
this.organisations = LabelBuilder.getLabel(entity.getOrganisations().stream().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList()));
|
||||
//if (entity.getProfile() != null) this.setProfile(new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()));
|
||||
this.setPublishedAt(entity.getPublishedAt());
|
||||
this.setUsers(entity.getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()));
|
||||
return this;
|
||||
|
|
|
@ -31,8 +31,11 @@ public class DatasetProfileOverviewModel implements DataModel<DatasetProfile, Da
|
|||
}
|
||||
|
||||
@Override
|
||||
public DatasetProfile toDataModel() throws Exception {
|
||||
return null;
|
||||
public DatasetProfile toDataModel() {
|
||||
DatasetProfile entity = new DatasetProfile();
|
||||
entity.setId(this.getId());
|
||||
entity.setLabel(this.getLabel());
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
package eu.eudat.models.data.datasetprofile;
|
||||
|
||||
public enum RenderStyle {
|
||||
COMBO_BOX("combobox"),
|
||||
INTERNAL_DMP_ENTITIES("internalDmpEntities"),
|
||||
BOOLEAN_DECISION("booleanDecision"),
|
||||
RADIO_BOX("radiobox"),
|
||||
CHECKBOX("checkBox"),
|
||||
FREETEXT("freetext"),
|
||||
TEXTAREA("textarea"),
|
||||
RICH_TEXTAREA("richTextarea"),
|
||||
DATE_PICKER("datePicker"),
|
||||
EXTERNAL_DATASETS("externalDatasets"),
|
||||
DATASET_REPOSITORIES("dataRepositories"),
|
||||
REGISTRIES("registries"),
|
||||
SERVICES("services"),
|
||||
TAGS("tags"),
|
||||
RESEARCHERS("researchers"),
|
||||
ORGANIZATIONS("organizations"),
|
||||
DATASET_IDENTIFIER("datasetIdentifier"),
|
||||
CURRENCY("currency"),
|
||||
VALIDATION("validation");
|
||||
|
||||
private final String name;
|
||||
|
||||
RenderStyle(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public static RenderStyle fromValue(String value) {
|
||||
for(RenderStyle renderStyle: RenderStyle.values()) {
|
||||
if (renderStyle.getName().equals(value)) {
|
||||
return renderStyle;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("RenderStyle [" + value + "] is not available");
|
||||
}
|
||||
}
|
|
@ -297,6 +297,7 @@ public class DatasetWizardModel implements DataModel<Dataset, DatasetWizardModel
|
|||
return entity;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getHint() {
|
||||
return "datasetWizardModel";
|
||||
|
|
|
@ -121,6 +121,7 @@ public class FieldSet implements DatabaseViewStyleDefinition, XmlSerializable<Fi
|
|||
Element multiplicity = doc.createElement("multiplicity");
|
||||
multiplicity.setAttribute("min", "" + this.multiplicity.getMin());
|
||||
multiplicity.setAttribute("max", "" + this.multiplicity.getMax());
|
||||
multiplicity.setAttribute("placeholder", this.multiplicity.getPlaceholder());
|
||||
|
||||
Element commentField = doc.createElement("commentField");
|
||||
commentField.setAttribute("hasCommentField", "" + this.hasCommentField);
|
||||
|
@ -183,6 +184,7 @@ public class FieldSet implements DatabaseViewStyleDefinition, XmlSerializable<Fi
|
|||
|
||||
this.multiplicity.setMin(Integer.parseInt(multiplicity.getAttribute("min")));
|
||||
this.multiplicity.setMax(Integer.parseInt(multiplicity.getAttribute("max")));
|
||||
this.multiplicity.setPlaceholder(multiplicity.getAttribute("placeholder"));
|
||||
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ public class Section implements DatabaseViewStyleDefinition, XmlSerializable<Sec
|
|||
private String extendedDescription;
|
||||
private List<Section> sections;
|
||||
private List<FieldSet> fieldSets;
|
||||
private Boolean multiplicity;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -102,6 +103,14 @@ public class Section implements DatabaseViewStyleDefinition, XmlSerializable<Sec
|
|||
this.numbering = numbering;
|
||||
}
|
||||
|
||||
public Boolean getMultiplicity() {
|
||||
return multiplicity;
|
||||
}
|
||||
|
||||
public void setMultiplicity(Boolean multiplicity) {
|
||||
this.multiplicity = multiplicity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element toXml(Document doc) {
|
||||
Element rootElement = doc.createElement("section");
|
||||
|
@ -109,6 +118,7 @@ public class Section implements DatabaseViewStyleDefinition, XmlSerializable<Sec
|
|||
rootElement.setAttribute("ordinal", "" + this.ordinal);
|
||||
rootElement.setAttribute("defaultVisibility", "" + this.defaultVisibility);
|
||||
rootElement.setAttribute("page", "" + this.page);
|
||||
rootElement.setAttribute("multiplicity", (this.multiplicity != null ? "" + this.multiplicity : "false"));
|
||||
|
||||
Element description = doc.createElement("description");
|
||||
description.setTextContent(this.description);
|
||||
|
@ -155,6 +165,7 @@ public class Section implements DatabaseViewStyleDefinition, XmlSerializable<Sec
|
|||
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
|
||||
this.defaultVisibility = Boolean.valueOf(element.getAttribute("defaultVisibility"));
|
||||
this.page = element.getAttribute("page");
|
||||
this.multiplicity = element.hasAttribute("multiplicity") ? Boolean.valueOf(element.getAttribute("multiplicity")) : false;
|
||||
|
||||
Element description = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description");
|
||||
if (description != null) this.description = description.getTextContent();
|
||||
|
|
|
@ -1,20 +1,12 @@
|
|||
package eu.eudat.models.data.listingmodels;
|
||||
|
||||
import eu.eudat.data.entities.DMP;
|
||||
import eu.eudat.data.entities.DatasetProfile;
|
||||
import eu.eudat.logic.utilities.builders.XmlBuilder;
|
||||
import eu.eudat.data.entities.Grant;
|
||||
import eu.eudat.models.DataModel;
|
||||
import eu.eudat.models.data.dmp.AssociatedProfile;
|
||||
import eu.eudat.models.data.dmp.Organisation;
|
||||
import eu.eudat.logic.utilities.helpers.LabelBuilder;
|
||||
import eu.eudat.models.data.urls.DatasetUrlListing;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -24,19 +16,13 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
private String id;
|
||||
private String label;
|
||||
private String grant;
|
||||
// private String profile;
|
||||
private Date creationTime;
|
||||
private Date modifiedTime;
|
||||
//private String organisations;
|
||||
private int version;
|
||||
private int status;
|
||||
private UUID groupId;
|
||||
private List<DatasetUrlListing> datasets;
|
||||
// private List<AssociatedProfile> associatedProfiles;
|
||||
private List<UserInfoListingModel> users;
|
||||
private String description;
|
||||
// private String grantAbbreviation;
|
||||
// private String grantId;
|
||||
private Date finalizedAt;
|
||||
private Boolean isPublic;
|
||||
private Date publishedAt;
|
||||
|
@ -63,13 +49,6 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
this.grant = grant;
|
||||
}
|
||||
|
||||
/* public String getProfile() {
|
||||
return profile;
|
||||
}
|
||||
public void setProfile(String profile) {
|
||||
this.profile = profile;
|
||||
}*/
|
||||
|
||||
public Date getCreationTime() {
|
||||
return creationTime;
|
||||
}
|
||||
|
@ -84,13 +63,6 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
this.modifiedTime = modifiedTime;
|
||||
}
|
||||
|
||||
/*public String getOrganisations() {
|
||||
return organisations;
|
||||
}
|
||||
public void setOrganisations(String organisations) {
|
||||
this.organisations = organisations;
|
||||
}*/
|
||||
|
||||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
@ -119,13 +91,6 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
this.status = status;
|
||||
}
|
||||
|
||||
/*public List<AssociatedProfile> getAssociatedProfiles() {
|
||||
return associatedProfiles;
|
||||
}
|
||||
public void setAssociatedProfiles(List<AssociatedProfile> associatedProfiles) {
|
||||
this.associatedProfiles = associatedProfiles;
|
||||
}*/
|
||||
|
||||
public List<UserInfoListingModel> getUsers() {
|
||||
return users;
|
||||
}
|
||||
|
@ -133,27 +98,6 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
this.users = users;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/*public String getGrantAbbreviation() {
|
||||
return grantAbbreviation;
|
||||
}
|
||||
public void setGrantAbbreviation(String grantAbbreviation) {
|
||||
this.grantAbbreviation = grantAbbreviation;
|
||||
}*/
|
||||
|
||||
/*public String getGrantId() {
|
||||
return grantId;
|
||||
}
|
||||
public void setGrantId(String grantId) {
|
||||
this.grantId = grantId;
|
||||
}*/
|
||||
|
||||
public Date getFinalizedAt() {
|
||||
return finalizedAt;
|
||||
}
|
||||
|
@ -188,7 +132,6 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
this.label = entity.getLabel();
|
||||
this.groupId = entity.getGroupId();
|
||||
this.creationTime = entity.getCreated();
|
||||
// this.associatedProfiles = entity.getAssociatedDmps().stream().map(item -> new AssociatedProfile().fromData(item)).collect(Collectors.toList());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -205,33 +148,37 @@ public class DataManagementPlanListingModel implements DataModel<DMP, DataManage
|
|||
this.status = entity.getStatus();
|
||||
this.version = entity.getVersion();
|
||||
this.grant = entity.getGrant().getLabel();
|
||||
/*if (entity.getProfile() != null) this.profile = entity.getProfile().getLabel(); */
|
||||
this.creationTime = entity.getCreated();
|
||||
this.modifiedTime = entity.getModified();
|
||||
// this.organisations = LabelBuilder.getLabel(entity.getOrganisations().stream().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList()));
|
||||
this.datasets = entity.getDataset().stream().map(x-> new DatasetUrlListing().fromDataModel(x)).collect(Collectors.toList());
|
||||
this.users = entity.getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList());
|
||||
this.description = entity.getDescription();
|
||||
// this.grantAbbreviation = entity.getGrant().getAbbreviation();
|
||||
// this.grantId = entity.getGrant().getId().toString();
|
||||
this.finalizedAt = entity.getFinalizedAt();
|
||||
this.isPublic = entity.isPublic();
|
||||
this.publishedAt = entity.getPublishedAt();
|
||||
|
||||
/*if (entity.getAssociatedDmps() != null && !entity.getAssociatedDmps().isEmpty()) {
|
||||
this.associatedProfiles = new LinkedList<>();
|
||||
for (DatasetProfile datasetProfile: entity.getAssociatedDmps()) {
|
||||
AssociatedProfile associatedProfile = new AssociatedProfile().fromData(datasetProfile);
|
||||
this.associatedProfiles.add(associatedProfile);
|
||||
}
|
||||
}*/
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DMP toDataModel() {
|
||||
return null;
|
||||
DMP entity = new DMP();
|
||||
entity.setId(UUID.fromString(this.getId()));
|
||||
entity.setLabel(this.getLabel());
|
||||
entity.setGroupId(this.getGroupId());
|
||||
entity.setStatus(Integer.valueOf(this.getStatus()).shortValue());
|
||||
entity.setCreated(this.getCreationTime());
|
||||
entity.setFinalizedAt(this.getFinalizedAt());
|
||||
entity.setModified(this.getModifiedTime());
|
||||
entity.setPublic(this.getPublic());
|
||||
entity.setPublishedAt(this.getPublishedAt());
|
||||
entity.setVersion(this.getVersion());
|
||||
|
||||
entity.setDataset(this.getDatasets().stream().map(DatasetUrlListing::toDataModel).collect(Collectors.toCollection(LinkedHashSet::new)));
|
||||
Grant grant = new Grant();
|
||||
grant.setLabel(this.getGrant());
|
||||
entity.setGrant(grant);
|
||||
entity.setUsers(this.getUsers().stream().map(UserInfoListingModel::toDataModel).collect(Collectors.toSet()));
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
package eu.eudat.models.data.listingmodels;
|
||||
|
||||
import eu.eudat.data.entities.DMP;
|
||||
import eu.eudat.data.entities.Dataset;
|
||||
import eu.eudat.data.entities.Grant;
|
||||
import eu.eudat.models.DataModel;
|
||||
import eu.eudat.models.data.dataset.DataRepository;
|
||||
import eu.eudat.models.data.dataset.Service;
|
||||
import eu.eudat.logic.utilities.helpers.LabelBuilder;
|
||||
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
@ -19,22 +18,15 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
|
|||
private String grant;
|
||||
private String dmp;
|
||||
private String dmpId;
|
||||
private DatasetProfileOverviewModel profile;
|
||||
private String dataRepositories;
|
||||
private String registries;
|
||||
private String services;
|
||||
private int status;
|
||||
private Date created;
|
||||
private Date modified;
|
||||
private String description;
|
||||
private String grantAbbreviation;
|
||||
private String grantId;
|
||||
private Date finalizedAt;
|
||||
private Date dmpPublishedAt;
|
||||
private int version;
|
||||
private List<UserInfoListingModel> users;
|
||||
private Boolean isPublic;
|
||||
private Boolean isProfileLatestVersion;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -71,35 +63,6 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
|
|||
this.dmpId = dmpId;
|
||||
}
|
||||
|
||||
public DatasetProfileOverviewModel getProfile() {
|
||||
return profile;
|
||||
}
|
||||
|
||||
public void setProfile(DatasetProfileOverviewModel profile) {
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
public String getDataRepositories() {
|
||||
return dataRepositories;
|
||||
}
|
||||
public void setDataRepositories(String dataRepositories) {
|
||||
this.dataRepositories = dataRepositories;
|
||||
}
|
||||
|
||||
public String getRegistries() {
|
||||
return registries;
|
||||
}
|
||||
public void setRegistries(String registries) {
|
||||
this.registries = registries;
|
||||
}
|
||||
|
||||
public String getServices() {
|
||||
return services;
|
||||
}
|
||||
public void setServices(String services) {
|
||||
this.services = services;
|
||||
}
|
||||
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
@ -128,20 +91,6 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
|
|||
this.description = description;
|
||||
}
|
||||
|
||||
public String getGrantAbbreviation() {
|
||||
return grantAbbreviation;
|
||||
}
|
||||
public void setGrantAbbreviation(String grantAbbreviation) {
|
||||
this.grantAbbreviation = grantAbbreviation;
|
||||
}
|
||||
|
||||
public String getGrantId() {
|
||||
return grantId;
|
||||
}
|
||||
public void setGrantId(String grantId) {
|
||||
this.grantId = grantId;
|
||||
}
|
||||
|
||||
public Date getFinalizedAt() {
|
||||
return finalizedAt;
|
||||
}
|
||||
|
@ -179,14 +128,6 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
|
|||
isPublic = aPublic;
|
||||
}
|
||||
|
||||
public Boolean getProfileLatestVersion() {
|
||||
return isProfileLatestVersion;
|
||||
}
|
||||
|
||||
public void setProfileLatestVersion(Boolean profileLatestVersion) {
|
||||
isProfileLatestVersion = profileLatestVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DatasetListingModel fromDataModel(Dataset entity) {
|
||||
this.id = entity.getId() != null ? entity.getId().toString() : "";
|
||||
|
@ -196,14 +137,8 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
|
|||
this.grant = entity.getDmp() != null ? entity.getDmp().getGrant().getLabel() : "";
|
||||
this.dmp = entity.getDmp() != null ? entity.getDmp().getLabel() : "";
|
||||
this.dmpId = entity.getDmp() != null ? entity.getDmp().getId().toString() : "";
|
||||
this.profile = entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()) : null;
|
||||
this.description = entity.getDescription();
|
||||
this.status = entity.getStatus();
|
||||
//this.grantAbbreviation = entity.getDmp() != null ? entity.getDmp().getGrant().getAbbreviation() : "";
|
||||
// this.grantId = entity.getDmp() != null ? entity.getDmp().getGrant().getId().toString() : "";
|
||||
//this.registries = LabelBuilder.getLabel(entity.getRegistries().stream().map(item -> new eu.eudat.models.data.dataset.Registry().fromDataModel(item)).collect(Collectors.toList()));
|
||||
// this.dataRepositories = LabelBuilder.getLabel(entity.getDatasetDataRepositories().stream().map(item -> new DataRepository().fromDataModel(item.getDataRepository())).collect(Collectors.toList()));
|
||||
//this.services = LabelBuilder.getLabel(entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList()));
|
||||
if (entity.getFinalizedAt() == null && entity.getStatus() == Dataset.Status.FINALISED.getValue()) {
|
||||
this.finalizedAt = entity.getDmp().getFinalizedAt();
|
||||
} else {
|
||||
|
@ -218,7 +153,27 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
|
|||
|
||||
@Override
|
||||
public Dataset toDataModel() {
|
||||
return null;
|
||||
Dataset entity = new Dataset();
|
||||
entity.setId(UUID.fromString(this.getId()));
|
||||
entity.setLabel(this.getLabel());
|
||||
entity.setCreated(this.getCreated());
|
||||
entity.setModified(this.getModified());
|
||||
entity.setDescription(this.getDescription());
|
||||
entity.setFinalizedAt(this.getFinalizedAt());
|
||||
entity.setStatus(Integer.valueOf(this.getStatus()).shortValue());
|
||||
DMP dmp = new DMP();
|
||||
Grant grant = new Grant();
|
||||
grant.setLabel(this.getGrant());
|
||||
dmp.setGrant(grant);
|
||||
dmp.setLabel(this.getDmp());
|
||||
dmp.setId(UUID.fromString(this.getDmpId()));
|
||||
dmp.setPublishedAt(this.getDmpPublishedAt());
|
||||
dmp.setVersion(this.getVersion());
|
||||
dmp.setUsers(this.getUsers().stream().map(UserInfoListingModel::toDataModel).collect(Collectors.toSet()));
|
||||
dmp.setPublic(this.getPublic());
|
||||
dmp.setFinalizedAt(this.getFinalizedAt());
|
||||
entity.setDmp(dmp);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -51,8 +51,15 @@ public class UserInfoListingModel implements DataModel<UserDMP, UserInfoListingM
|
|||
}
|
||||
|
||||
@Override
|
||||
public UserDMP toDataModel() throws Exception {
|
||||
return null;
|
||||
public UserDMP toDataModel() {
|
||||
UserDMP entity = new UserDMP();
|
||||
entity.setId(this.getId());
|
||||
entity.setRole(this.getRole());
|
||||
UserInfo userInfo = new UserInfo();
|
||||
userInfo.setName(this.getName());
|
||||
userInfo.setEmail(this.getEmail());
|
||||
entity.setUser(userInfo);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package eu.eudat.models.data.prefilling;
|
||||
|
||||
public class Prefilling {
|
||||
private String pid;
|
||||
private String name;
|
||||
private String tag;
|
||||
|
||||
public String getPid() {
|
||||
return pid;
|
||||
}
|
||||
|
||||
public void setPid(String pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,157 @@
|
|||
package eu.eudat.models.data.publication;
|
||||
|
||||
import eu.eudat.data.entities.DataRepository;
|
||||
import eu.eudat.data.entities.UserInfo;
|
||||
import eu.eudat.models.DataModel;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PublicationModel implements DataModel<DataRepository, PublicationModel> {
|
||||
private UUID id;
|
||||
private List<String> titles;
|
||||
private List<String> ids;
|
||||
private String name;
|
||||
private String pid;
|
||||
private String abbreviation;
|
||||
private String uri;
|
||||
private Date created;
|
||||
private Date modified;
|
||||
private String tag; // Api fetching the data
|
||||
private String source; // Actual harvested source
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
public void setId(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public List<String> getTitles() {
|
||||
return titles;
|
||||
}
|
||||
|
||||
public void setTitles(List<String> titles) {
|
||||
this.titles = titles;
|
||||
}
|
||||
|
||||
public List<String> getIds() {
|
||||
return ids;
|
||||
}
|
||||
|
||||
public void setIds(List<String> ids) {
|
||||
this.ids = ids;
|
||||
}
|
||||
|
||||
public String getAbbreviation() {
|
||||
return abbreviation;
|
||||
}
|
||||
|
||||
public void setAbbreviation(String abbreviation) {
|
||||
this.abbreviation = abbreviation;
|
||||
}
|
||||
|
||||
public String getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
public void setUri(String uri) {
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
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 String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getPid() {
|
||||
return pid;
|
||||
}
|
||||
|
||||
public void setPid(String pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PublicationModel fromDataModel(DataRepository entity) {
|
||||
this.setAbbreviation(entity.getAbbreviation());
|
||||
this.setName(entity.getLabel());
|
||||
|
||||
this.setTitles(new ArrayList<>());
|
||||
this.getTitles().add(entity.getLabel());
|
||||
this.setUri(entity.getUri());
|
||||
this.setId(entity.getId());
|
||||
this.setPid(entity.getReference());
|
||||
String source1 = entity.getReference().substring(0, entity.getReference().indexOf(":"));
|
||||
if (source1.equals("dmp")) {
|
||||
this.source = "Internal";
|
||||
} else {
|
||||
this.source = source1;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataRepository toDataModel() throws Exception {
|
||||
DataRepository dataRepository = new DataRepository();
|
||||
dataRepository.setId(this.id != null ? this.id : UUID.randomUUID());
|
||||
dataRepository.setAbbreviation(this.abbreviation);
|
||||
dataRepository.setCreated(this.created != null ? this.created : new Date());
|
||||
dataRepository.setModified(new Date());
|
||||
dataRepository.setLabel(this.name);
|
||||
if (this.source != null) {
|
||||
if (this.source.equals("Internal") || this.source.equals(this.id.toString().substring(0, this.source.length()))) {
|
||||
dataRepository.setReference(this.id.toString());
|
||||
} else {
|
||||
dataRepository.setReference(this.source + ":" + dataRepository.getId());
|
||||
}
|
||||
} else {
|
||||
dataRepository.setReference("dmp:" + dataRepository.getId());
|
||||
}
|
||||
dataRepository.setUri(this.uri);
|
||||
dataRepository.setStatus((short) 0);
|
||||
dataRepository.setCreationUser(new UserInfo());
|
||||
return dataRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHint() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,134 @@
|
|||
package eu.eudat.models.data.taxonomy;
|
||||
|
||||
import eu.eudat.data.entities.DataRepository;
|
||||
import eu.eudat.data.entities.UserInfo;
|
||||
import eu.eudat.models.DataModel;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public class TaxonomyModel implements DataModel<DataRepository, TaxonomyModel> {
|
||||
private UUID id;
|
||||
private String name;
|
||||
private String pid;
|
||||
private String abbreviation;
|
||||
private String uri;
|
||||
private Date created;
|
||||
private Date modified;
|
||||
private String tag; // Api fetching the data
|
||||
private String source; // Actual harvested source
|
||||
|
||||
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 getAbbreviation() {
|
||||
return abbreviation;
|
||||
}
|
||||
|
||||
public void setAbbreviation(String abbreviation) {
|
||||
this.abbreviation = abbreviation;
|
||||
}
|
||||
|
||||
public String getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
public void setUri(String uri) {
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
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 String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getPid() {
|
||||
return pid;
|
||||
}
|
||||
|
||||
public void setPid(String pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaxonomyModel fromDataModel(DataRepository entity) {
|
||||
this.setAbbreviation(entity.getAbbreviation());
|
||||
this.setName(entity.getLabel());
|
||||
this.setUri(entity.getUri());
|
||||
this.setId(entity.getId());
|
||||
this.setPid(entity.getReference());
|
||||
String source1 = entity.getReference().substring(0, entity.getReference().indexOf(":"));
|
||||
if (source1.equals("dmp")) {
|
||||
this.source = "Internal";
|
||||
} else {
|
||||
this.source = source1;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataRepository toDataModel() throws Exception {
|
||||
DataRepository dataRepository = new DataRepository();
|
||||
dataRepository.setId(this.id != null ? this.id : UUID.randomUUID());
|
||||
dataRepository.setAbbreviation(this.abbreviation);
|
||||
dataRepository.setCreated(this.created != null ? this.created : new Date());
|
||||
dataRepository.setModified(new Date());
|
||||
dataRepository.setLabel(this.name);
|
||||
if (this.source != null) {
|
||||
if (this.source.equals("Internal") || this.source.equals(this.id.toString().substring(0, this.source.length()))) {
|
||||
dataRepository.setReference(this.id.toString());
|
||||
} else {
|
||||
dataRepository.setReference(this.source + ":" + dataRepository.getId());
|
||||
}
|
||||
} else {
|
||||
dataRepository.setReference("dmp:" + dataRepository.getId());
|
||||
}
|
||||
dataRepository.setUri(this.uri);
|
||||
dataRepository.setStatus((short) 0);
|
||||
dataRepository.setCreationUser(new UserInfo());
|
||||
return dataRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHint() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,8 @@ package eu.eudat.models.data.urls;
|
|||
|
||||
import eu.eudat.data.entities.Dataset;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Created by ikalyvas on 7/23/2018.
|
||||
*/
|
||||
|
@ -14,8 +16,11 @@ public class DatasetUrlListing extends UrlListing<Dataset, DatasetUrlListing> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Dataset toDataModel() throws Exception {
|
||||
return null;
|
||||
public Dataset toDataModel() {
|
||||
Dataset entity = new Dataset();
|
||||
entity.setId(UUID.fromString(this.getUrl()));
|
||||
entity.setLabel(this.getLabel());
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,6 +19,7 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
private String id;
|
||||
private String title;
|
||||
private String description;
|
||||
private Boolean multiplicity;
|
||||
|
||||
public List<Section> getSections() {
|
||||
Collections.sort(sections);
|
||||
|
@ -94,6 +95,14 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
this.numbering = numbering;
|
||||
}
|
||||
|
||||
public Boolean getMultiplicity() {
|
||||
return multiplicity;
|
||||
}
|
||||
|
||||
public void setMultiplicity(Boolean multiplicity) {
|
||||
this.multiplicity = multiplicity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section toDatabaseDefinition(eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section item) {
|
||||
item.setDefaultVisibility(this.defaultVisibility);
|
||||
|
@ -106,6 +115,7 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
if (this.sections != null)
|
||||
item.setSections(new ModelBuilder().toViewStyleDefinition(this.sections, eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section.class));
|
||||
item.setTitle(this.title);
|
||||
item.setMultiplicity(this.multiplicity);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
@ -120,6 +130,7 @@ public class Section implements Comparable, ViewStyleDefinition<eu.eudat.models.
|
|||
this.page = item.getPage();
|
||||
this.sections = new ModelBuilder().fromViewStyleDefinition(item.getSections(), Section.class);
|
||||
this.title = item.getTitle();
|
||||
this.multiplicity = item.getMultiplicity();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -133,12 +133,12 @@ public class Contact implements Serializable
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -100,12 +100,12 @@ public class ContactId implements Serializable
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -168,12 +168,12 @@ public class Contributor implements Serializable
|
|||
this.role = role;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -101,12 +101,12 @@ public class ContributorId implements Serializable
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -162,12 +162,12 @@ public class Cost implements Serializable
|
|||
this.value = value;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -109,12 +109,12 @@ public class DatasetId implements Serializable
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -101,12 +101,12 @@ public class DmpId implements Serializable
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -101,12 +101,12 @@ public class FunderId implements Serializable
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
|
@ -133,12 +133,12 @@ public class Funding implements Serializable
|
|||
this.grantId = grantId;
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
@JsonProperty("additional_properties")
|
||||
public Map<String, Object> getAdditionalProperties() {
|
||||
return this.additionalProperties;
|
||||
}
|
||||
|
||||
@JsonAnySetter
|
||||
@JsonProperty("additional_properties")
|
||||
public void setAdditionalProperty(String name, Object value) {
|
||||
this.additionalProperties.put(name, value);
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue