diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/descriptiontemplatedefinition/fielddata/PublicationRepositoryDataBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/descriptiontemplatedefinition/fielddata/PublicationRepositoryDataBuilder.java index 84ab496b5..55afea1bb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/descriptiontemplatedefinition/fielddata/PublicationRepositoryDataBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/descriptiontemplatedefinition/fielddata/PublicationRepositoryDataBuilder.java @@ -1,8 +1,8 @@ package eu.eudat.model.builder.descriptiontemplatedefinition.fielddata; -import eu.eudat.commons.types.descriptiontemplate.fielddata.DataRepositoryDataEntity; +import eu.eudat.commons.types.descriptiontemplate.fielddata.PublicationRepositoryDataEntity; import eu.eudat.convention.ConventionService; -import eu.eudat.model.descriptiontemplatedefinition.fielddata.DataRepositoryData; +import eu.eudat.model.descriptiontemplatedefinition.fielddata.PublicationRepositoryData; import gr.cite.tools.fieldset.FieldSet; import gr.cite.tools.logging.LoggerService; import org.slf4j.LoggerFactory; @@ -13,19 +13,19 @@ import org.springframework.stereotype.Component; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) -public class PublicationRepositoryDataBuilder extends BaseFieldDataBuilder { +public class PublicationRepositoryDataBuilder extends BaseFieldDataBuilder { @Autowired public PublicationRepositoryDataBuilder(ConventionService conventionService) { super(conventionService, new LoggerService(LoggerFactory.getLogger(PublicationRepositoryDataBuilder.class))); } - protected DataRepositoryData getInstance() { - return new DataRepositoryData(); + protected PublicationRepositoryData getInstance() { + return new PublicationRepositoryData(); } @Override - protected void buildChild(FieldSet fields, DataRepositoryDataEntity d, DataRepositoryData m) { - if (fields.hasField(this.asIndexer(DataRepositoryData._multiAutoComplete))) m.setMultiAutoComplete(d.getMultiAutoComplete()); + protected void buildChild(FieldSet fields, PublicationRepositoryDataEntity d, PublicationRepositoryData m) { + if (fields.hasField(this.asIndexer(PublicationRepositoryData._multiAutoComplete))) m.setMultiAutoComplete(d.getMultiAutoComplete()); } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java index 81f9de07d..fde9b5e38 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java @@ -22,7 +22,8 @@ import java.util.*; public class TagQuery extends QueryBase { private String like; - private Collection labels; + private Collection tags; + private Collection excludedTags; private Collection ids; @@ -57,18 +58,33 @@ public class TagQuery extends QueryBase { return this; } - public TagQuery labels(String value) { - this.labels = List.of(value); + public TagQuery tags(String value) { + this.tags = List.of(value); return this; } - public TagQuery labels(String... value) { - this.labels = Arrays.asList(value); + public TagQuery tags(String... value) { + this.tags = Arrays.asList(value); return this; } - public TagQuery labels(Collection values) { - this.labels = values; + public TagQuery tags(Collection values) { + this.tags = values; + return this; + } + + public TagQuery excludedTags(String value) { + this.excludedTags = List.of(value); + return this; + } + + public TagQuery excludedTags(String... value) { + this.excludedTags = Arrays.asList(value); + return this; + } + + public TagQuery excludedTags(Collection values) { + this.excludedTags = values; return this; } @@ -127,7 +143,8 @@ public class TagQuery extends QueryBase { return this.isEmpty(this.ids) || this.isEmpty(this.isActives) || - this.isEmpty(this.labels) || + this.isEmpty(this.tags) || + this.isEmpty(this.excludedTags) || this.isEmpty(this.excludedIds) || this.isEmpty(this.createdByIds); } @@ -149,12 +166,18 @@ public class TagQuery extends QueryBase { inClause.value(item); predicates.add(inClause); } - if (this.labels != null) { + if (this.tags != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(TagEntity._label)); - for (String item : this.labels) + for (String item : this.tags) inClause.value(item); predicates.add(inClause); } + if (this.excludedTags != null) { + CriteriaBuilder.In notInClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(TagEntity._label)); + for (String item : this.excludedTags) + notInClause.value(item); + predicates.add(notInClause.not()); + } if (this.excludedIds != null) { CriteriaBuilder.In notInClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(TagEntity._id)); for (UUID item : this.excludedIds) diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/lookup/TagLookup.java b/dmp-backend/core/src/main/java/eu/eudat/query/lookup/TagLookup.java index 0d592e0e7..c82f45d81 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/lookup/TagLookup.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/lookup/TagLookup.java @@ -20,6 +20,10 @@ public class TagLookup extends Lookup { private List createdByIds; + private List tags; + + private List excludedTags; + public String getLike() { return like; } @@ -60,11 +64,29 @@ public class TagLookup extends Lookup { this.createdByIds = createdByIds; } + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public List getExcludedTags() { + return excludedTags; + } + + public void setExcludedTags(List excludedTags) { + this.excludedTags = excludedTags; + } + public TagQuery enrich(QueryFactory queryFactory) { TagQuery query = queryFactory.query(TagQuery.class); if (this.like != null) query.like(this.like); if (this.ids != null) query.ids(this.ids); if (this.excludedIds != null) query.excludedIds(this.excludedIds); + if (this.tags != null) query.tags(this.tags); + if (this.excludedTags != null) query.excludedTags(this.excludedTags); if (this.isActive != null) query.isActive(this.isActive); if (this.createdByIds != null) query.createdByIds(this.createdByIds); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java index 281b9412b..6370ff59c 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java @@ -371,7 +371,7 @@ public class DescriptionServiceImpl implements DescriptionService { List items = this.queryFactory.query(DescriptionTagQuery.class).isActive(IsActive.Active).descriptionIds(id).collect(); List tagsAlreadyLinked = this.queryFactory.query(TagQuery.class).isActive(IsActive.Active).ids(items.stream().map(DescriptionTagEntity::getTagId).collect(Collectors.toList())).collect(); List tagLabelsToAdd = tagLabels.stream().filter(x-> tagsAlreadyLinked.stream().noneMatch(y-> y.getLabel() != null && y.getLabel().equalsIgnoreCase(x))).toList(); - List existingTags = this.queryFactory.query(TagQuery.class).isActive(IsActive.Active).labels(tagLabelsToAdd).createdByIds(this.userScope.getUserId()).collect(); + List existingTags = this.queryFactory.query(TagQuery.class).isActive(IsActive.Active).tags(tagLabelsToAdd).createdByIds(this.userScope.getUserId()).collect(); List updatedCreatedIds = new ArrayList<>(); for (String tagLabel : tagLabels) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/cache/ExternalUrlsKeyGenerator.java b/dmp-backend/web/src/main/java/eu/eudat/cache/ExternalUrlsKeyGenerator.java deleted file mode 100644 index 544b8ffad..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/cache/ExternalUrlsKeyGenerator.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.eudat.cache; - -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import org.springframework.cache.interceptor.KeyGenerator; - -import java.lang.reflect.Method; - -public class ExternalUrlsKeyGenerator implements KeyGenerator { - @Override - public Object generate(Object o, Method method, Object... params) { - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer.append(o.getClass().getSimpleName()).append("_"); - stringBuffer.append(method.getName()).append("_"); - for (Object param: params) { - if (param instanceof ExternalUrlCriteria) { - ExternalUrlCriteria externalUrlCriteria = (ExternalUrlCriteria) param; - stringBuffer.append(externalUrlCriteria); - } - } - return stringBuffer.toString(); - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/cache/ResponsesCache.java b/dmp-backend/web/src/main/java/eu/eudat/cache/ResponsesCache.java deleted file mode 100644 index 616d334e7..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/cache/ResponsesCache.java +++ /dev/null @@ -1,60 +0,0 @@ -package eu.eudat.cache; - - -import com.github.benmanes.caffeine.cache.Caffeine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.caffeine.CaffeineCache; -import org.springframework.cache.interceptor.KeyGenerator; -import org.springframework.cache.support.SimpleCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; - - -@Component -@EnableCaching -public class ResponsesCache { - private static final Logger logger = LoggerFactory.getLogger(ResponsesCache.class); - - public static long HOW_MANY = 30; - public static TimeUnit TIME_UNIT = TimeUnit.MINUTES; - - - @Bean - public CacheManager cacheManager5() { - logger.info("Loading ResponsesCache..."); - SimpleCacheManager simpleCacheManager = new SimpleCacheManager(); - List caches = new ArrayList(); - 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())); - caches.add(new CaffeineCache("organisations", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("registries", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("services", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("tags", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("researchers", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("externalDatasets", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("currencies", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - caches.add(new CaffeineCache("licenses", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build())); - simpleCacheManager.setCaches(caches); - logger.info("OK"); - return simpleCacheManager; - } - - @Bean(name = "externalUrlsKeyGenerator") - private KeyGenerator externalUrlsKeyGenerator() { - return new ExternalUrlsKeyGenerator(); - } - -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/configurations/WebMVCConfiguration.java b/dmp-backend/web/src/main/java/eu/eudat/configurations/WebMVCConfiguration.java index 23d5f66eb..0c55f99c5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/configurations/WebMVCConfiguration.java +++ b/dmp-backend/web/src/main/java/eu/eudat/configurations/WebMVCConfiguration.java @@ -29,7 +29,6 @@ public class WebMVCConfiguration implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { -// registry.addInterceptor(new RequestInterceptor(this.apiContext.getHelpersService().getLoggerService())); registry.addWebRequestInterceptor(userInterceptor).order(1); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/interceptors/RequestInterceptor.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/interceptors/RequestInterceptor.java deleted file mode 100644 index 59f5652c1..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/interceptors/RequestInterceptor.java +++ /dev/null @@ -1,33 +0,0 @@ -package eu.eudat.controllers.interceptors; - -import eu.eudat.types.WarningLevel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.servlet.HandlerInterceptor; - -import java.util.Date; - -/** - * Created by ikalyvas on 3/1/2018. - */ -@Component -public class RequestInterceptor implements HandlerInterceptor { - private static final Logger logger = LoggerFactory.getLogger(RequestInterceptor.class); - - @Autowired - public RequestInterceptor() { - } - - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) throws Exception { - String reqUri = request.getRequestURI(); - logger.info("Call to " + reqUri + " method: " + request.getMethod() + " at: " + new Date(), WarningLevel.INFO); - return HandlerInterceptor.super.preHandle(request, response, handler); - } -} diff --git a/dmp-backend/web/src/main/resources/config/deposit.yml b/dmp-backend/web/src/main/resources/config/deposit.yml index 6b7004730..1433c2cde 100644 --- a/dmp-backend/web/src/main/resources/config/deposit.yml +++ b/dmp-backend/web/src/main/resources/config/deposit.yml @@ -1,7 +1,7 @@ deposit: sources: - url: http://localhost:8082 - codes: [ zenodo ] + repositoryId: zenodo issuer-url: ${ZENODO_ISSUER_URI:IDP_APIKEY_ISSUER_URI} client-id: ${ZENODO_DEPOSIT_CLIENT_ID:} client-secret: ${ZENODO_DEPOSIT_CLIENT_SECRET:} diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts index 6bb767ed8..73072cee4 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts @@ -67,23 +67,23 @@ export class DmpEditorResolver extends BaseEditorResolver { public static blueprintLookupFields(prefix?: string): string[] { return [ - [prefix ?? '', nameof(x => x.id)].join('.'), - [prefix ?? '', nameof(x => x.definition)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.id)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.label)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.ordinal)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.hasTemplates)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.id)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.descriptionTemplateId)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.id)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.category)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.dataType)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.systemFieldType)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.label)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.placeholder)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.description)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.required)].join('.'), - [prefix ?? '', nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.ordinal)].join('.') + prefix ? prefix + '.' : '' + [nameof(x => x.id)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.id)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.label)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.ordinal)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.hasTemplates)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.id)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.descriptionTemplateId)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.id)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.category)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.dataType)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.systemFieldType)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.label)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.placeholder)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.description)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.required)].join('.'), + prefix ? prefix + '.' : '' + [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.ordinal)].join('.') ] }