argos/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheService.java

68 lines
2.0 KiB
Java
Raw Normal View History

2024-01-03 17:22:24 +01:00
package eu.eudat.service.reference;
2023-10-18 17:05:39 +02:00
import eu.eudat.service.externalfetcher.criteria.ExternalReferenceCriteria;
2023-10-18 17:05:39 +02:00
import gr.cite.tools.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Locale;
@Service
2023-10-26 13:38:18 +02:00
public class ReferenceCacheService extends CacheService<ReferenceCacheService.ReferenceCacheValue> {
2023-10-18 17:05:39 +02:00
2023-10-26 13:38:18 +02:00
public static class ReferenceCacheValue {
2023-10-18 17:05:39 +02:00
2023-10-26 13:38:18 +02:00
public ReferenceCacheValue() {}
2023-10-18 17:05:39 +02:00
2024-01-03 17:22:24 +01:00
public ReferenceCacheValue(String type, ExternalReferenceCriteria externalUrlCriteria) {
2023-10-26 13:38:18 +02:00
this.type = type;
2023-10-18 17:05:39 +02:00
this.externalUrlCriteria = externalUrlCriteria;
}
2023-10-26 13:38:18 +02:00
private String type;
2023-10-18 17:05:39 +02:00
2024-01-03 17:22:24 +01:00
private ExternalReferenceCriteria externalUrlCriteria;
2023-10-18 17:05:39 +02:00
2023-10-26 13:38:18 +02:00
public String getType() {
return type;
2023-10-18 17:05:39 +02:00
}
2023-10-26 13:38:18 +02:00
public void setType(String type) {
this.type = type;
2023-10-18 17:05:39 +02:00
}
2024-01-03 17:22:24 +01:00
public ExternalReferenceCriteria getExternalUrlCriteria() {
2023-10-18 17:05:39 +02:00
return externalUrlCriteria;
}
2024-01-03 17:22:24 +01:00
public void setExternalUrlCriteria(ExternalReferenceCriteria externalUrlCriteria) {
2023-10-18 17:05:39 +02:00
this.externalUrlCriteria = externalUrlCriteria;
}
}
@Autowired
2023-10-26 13:38:18 +02:00
public ReferenceCacheService(ReferenceCacheOptions options) {
2023-10-18 17:05:39 +02:00
super(options);
}
@Override
2023-10-26 13:38:18 +02:00
protected Class<ReferenceCacheValue> valueClass() {return ReferenceCacheValue.class;}
2023-10-18 17:05:39 +02:00
2023-10-26 13:38:18 +02:00
public String keyOf(ReferenceCacheValue value) {
return this.buildKey(value.getType(), value.getExternalUrlCriteria());
2023-10-18 17:05:39 +02:00
}
2024-01-03 17:22:24 +01:00
public String buildKey(String externalType, ExternalReferenceCriteria externalUrlCriteria) {
2023-10-18 17:05:39 +02:00
HashMap<String, String> keyParts = new HashMap<>();
keyParts.put("$type$", externalType.toLowerCase(Locale.ROOT));
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(externalUrlCriteria);
keyParts.put("$criteria$", stringBuffer.toString().toLowerCase(Locale.ROOT));
return this.generateKey(keyParts);
}
}