Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/vsdspub 349 retention policy #294

Merged
merged 2 commits into from
Nov 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.repository.LdesFragmentRepository;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.services.FragmentationStrategyWrapper;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.geospatial.bucketising.CoordinateConverter;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.geospatial.bucketising.CoordinateConverterFactory;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.geospatial.bucketising.GeospatialBucketiser;
Expand All @@ -19,11 +19,11 @@
public class GeospatialFragmentationStrategyWrapper implements FragmentationStrategyWrapper {

public FragmentationStrategy wrapFragmentationStrategy(ApplicationContext applicationContext,
FragmentationStrategy fragmentationStrategy, FragmentationProperties properties) {
FragmentationStrategy fragmentationStrategy, ConfigProperties fragmentationProperties) {
LdesFragmentRepository ldesFragmentRepository = applicationContext.getBean(LdesFragmentRepository.class);
Tracer tracer = applicationContext.getBean(Tracer.class);

GeospatialConfig geospatialConfig = createGeospatialConfig(properties);
GeospatialConfig geospatialConfig = createGeospatialConfig(fragmentationProperties);
CoordinateConverter coordinateConverter = CoordinateConverterFactory
.getCoordinateConverter(geospatialConfig.projection());
GeospatialBucketiser geospatialBucketiser = new GeospatialBucketiser(geospatialConfig, coordinateConverter);
Expand All @@ -35,7 +35,7 @@ public FragmentationStrategy wrapFragmentationStrategy(ApplicationContext applic
geospatialBucketiser, geospatialFragmentCreator, tileFragmentRelationsAttributer, tracer);
}

private GeospatialConfig createGeospatialConfig(FragmentationProperties properties) {
private GeospatialConfig createGeospatialConfig(ConfigProperties properties) {
return new GeospatialConfig(
properties.getOrDefault(FRAGMENTER_SUBJECT_FILTER, ".*"),
properties.get(FRAGMENTER_PROPERTY),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.geospatial;

import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;

import java.util.Map;

import static org.junit.jupiter.api.Assertions.*;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very good

import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;

class GeospatialFragmentationStrategyWrapperTest {
Expand All @@ -24,7 +24,7 @@ void setUp() {

@Test
void when_FragmentationStrategyIsUpdated_GeospatialFragmentationStrategyIsReturned() {
FragmentationProperties properties = new FragmentationProperties(
ConfigProperties properties = new ConfigProperties(
Map.of("maxZoomLevel", "15", "fragmenterProperty", "http://www.opengis.net/ont/geosparql#asWKT",
"projection", "lambert72"));
FragmentationStrategy decoratedFragmentationStrategy = geospatialFragmentationUpdater
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.repository.LdesFragmentRepository;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.services.FragmentationStrategyWrapper;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring.bucketiser.SubstringBucketiser;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring.config.SubstringConfig;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring.fragment.SubstringFragmentCreator;
Expand All @@ -12,17 +12,17 @@
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.context.ApplicationContext;

import static be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring.config.SubstringProperties.MEMBER_LIMIT;
import static be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring.config.SubstringProperties.FRAGMENTER_PROPERTY;
import static be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring.config.SubstringProperties.MEMBER_LIMIT;

public class SubstringFragmentationStrategyWrapper implements FragmentationStrategyWrapper {

public FragmentationStrategy wrapFragmentationStrategy(ApplicationContext applicationContext,
FragmentationStrategy fragmentationStrategy, FragmentationProperties properties) {
FragmentationStrategy fragmentationStrategy, ConfigProperties fragmentationProperties) {
LdesFragmentRepository ldesFragmentRepository = applicationContext.getBean(LdesFragmentRepository.class);
Tracer tracer = applicationContext.getBean(Tracer.class);

SubstringConfig substringConfig = createSubstringConfig(properties);
SubstringConfig substringConfig = createSubstringConfig(fragmentationProperties);
SubstringBucketiser substringBucketiser = new SubstringBucketiser(substringConfig);
SubstringFragmentCreator substringFragmentCreator = new SubstringFragmentCreator(ldesFragmentRepository);
SubstringRelationsAttributer substringRelationsAttributer = new SubstringRelationsAttributer(
Expand All @@ -34,7 +34,7 @@ public FragmentationStrategy wrapFragmentationStrategy(ApplicationContext applic
tracer, substringBucketiser, substringFragmentFinder, substringFragmentCreator);
}

private SubstringConfig createSubstringConfig(FragmentationProperties properties) {
private SubstringConfig createSubstringConfig(ConfigProperties properties) {
SubstringConfig substringConfig = new SubstringConfig();
substringConfig.setFragmenterProperty(properties.get(FRAGMENTER_PROPERTY));
substringConfig.setMemberLimit(Integer.valueOf(properties.get(MEMBER_LIMIT)));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.substring;

import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
Expand All @@ -24,7 +24,7 @@ void setUp() {

@Test
void when_FragmentationStrategyIsUpdated_TimebasedFragmentationStrategyIsReturned() {
FragmentationProperties properties = new FragmentationProperties(
ConfigProperties properties = new ConfigProperties(
Map.of("memberLimit", "5", "fragmenterProperty", "http://purl.org/dc/terms/description"));
FragmentationStrategy decoratedFragmentationStrategy = substringFragmentationStrategyWrapper
.wrapFragmentationStrategy(applicationContext, fragmentationStrategy, properties);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.timebased;

import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.repository.LdesFragmentRepository;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.services.FragmentationStrategyWrapper;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.timebased.config.TimebasedFragmentationConfig;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.timebased.services.OpenFragmentProvider;
import be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.timebased.services.TimeBasedFragmentCreator;
Expand All @@ -15,33 +15,33 @@
public class TimebasedFragmentationStrategyWrapper implements FragmentationStrategyWrapper {

public FragmentationStrategy wrapFragmentationStrategy(ApplicationContext applicationContext,
FragmentationStrategy fragmentationStrategy, FragmentationProperties properties) {
FragmentationStrategy fragmentationStrategy, ConfigProperties fragmentationProperties) {
LdesFragmentRepository ldesFragmentRepository = applicationContext.getBean(LdesFragmentRepository.class);
Tracer tracer = applicationContext.getBean(Tracer.class);

OpenFragmentProvider openFragmentProvider = getOpenFragmentProvider(properties,
OpenFragmentProvider openFragmentProvider = getOpenFragmentProvider(fragmentationProperties,
ldesFragmentRepository);
return new TimebasedFragmentationStrategy(fragmentationStrategy,
ldesFragmentRepository, openFragmentProvider, tracer);

}

private OpenFragmentProvider getOpenFragmentProvider(FragmentationProperties properties,
private OpenFragmentProvider getOpenFragmentProvider(ConfigProperties properties,
LdesFragmentRepository ldesFragmentRepository) {
TimeBasedFragmentCreator timeBasedFragmentCreator = getTimeBasedFragmentCreator(properties,
ldesFragmentRepository);
return new OpenFragmentProvider(timeBasedFragmentCreator, ldesFragmentRepository);
}

private TimeBasedFragmentCreator getTimeBasedFragmentCreator(FragmentationProperties properties,
private TimeBasedFragmentCreator getTimeBasedFragmentCreator(ConfigProperties properties,
LdesFragmentRepository ldesFragmentRepository) {
TimebasedFragmentationConfig timebasedFragmentationConfig = createTimebasedFragmentationConfig(properties);
return new TimeBasedFragmentCreator(
timebasedFragmentationConfig,
ldesFragmentRepository);
}

private TimebasedFragmentationConfig createTimebasedFragmentationConfig(FragmentationProperties properties) {
private TimebasedFragmentationConfig createTimebasedFragmentationConfig(ConfigProperties properties) {
return new TimebasedFragmentationConfig(Long.valueOf(properties.get(MEMBER_LIMIT)));
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package be.vlaanderen.informatievlaanderen.ldes.server.fragmentisers.timebased;

import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;

import java.util.Map;

import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;

class TimebasedFragmentationStrategyWrapperTest {
Expand All @@ -24,7 +24,7 @@ void setUp() {

@Test
void when_FragmentationStrategyIsUpdated_TimebasedFragmentationStrategyIsReturned() {
FragmentationProperties properties = new FragmentationProperties(Map.of("memberLimit", "5"));
ConfigProperties properties = new ConfigProperties(Map.of("memberLimit", "5"));
FragmentationStrategy decoratedFragmentationStrategy = timebasedFragmentationUpdater
.wrapFragmentationStrategy(applicationContext, fragmentationStrategy, properties);
assertTrue(decoratedFragmentationStrategy instanceof TimebasedFragmentationStrategy);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package be.vlaanderen.informatievlaanderen.ldes.server.domain.ldes.retentionpolicy.config;

public class TimeBasedRetentionPolicy {
private final Long durationInSeconds;

public TimeBasedRetentionPolicy(Long durationInSeconds) {
this.durationInSeconds = durationInSeconds;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package be.vlaanderen.informatievlaanderen.ldes.server.domain.ldes.retentionpolicy.config;

public class TimebasedRetentionProperties {
private TimebasedRetentionProperties() {
}

public static final String DURATION_IN_SECONDS = "durationInSeconds";

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.services;

import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategy;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import org.springframework.context.ApplicationContext;

public interface FragmentationStrategyWrapper {
FragmentationStrategy wrapFragmentationStrategy(ApplicationContext applicationContext,
FragmentationStrategy fragmentationStrategy, FragmentationProperties properties);
FragmentationStrategy fragmentationStrategy, ConfigProperties fragmentationProperties);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
import java.util.Map;
import java.util.Objects;

public class FragmentationProperties {
public class ConfigProperties {
private final Map<String, String> caseInsensitiveProperties;

public FragmentationProperties(Map<String, String> properties) {
public ConfigProperties(Map<String, String> properties) {
this.caseInsensitiveProperties = new HashMap<>();
properties.forEach((key, value) -> caseInsensitiveProperties.put(removeCasing(key), value));
}
Expand All @@ -33,7 +33,7 @@ public boolean equals(Object o) {
return true;
if (o == null || getClass() != o.getClass())
return false;
FragmentationProperties that = (FragmentationProperties) o;
ConfigProperties that = (ConfigProperties) o;
return caseInsensitiveProperties.equals(that.caseInsensitiveProperties);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ public void setConfig(Map<String, String> config) {
this.config = config;
}

public FragmentationProperties getProperties() {
return new FragmentationProperties(config);
public ConfigProperties getProperties() {
return new ConfigProperties(config);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects;

import java.util.Map;

public class RetentionConfig {

private String name;
private Map<String, String> config;

public String getRetentionPolicyName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void setConfig(Map<String, String> config) {
this.config = config;
}

public ConfigProperties getProperties() {
return new ConfigProperties(config);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
public class ViewSpecification {

private String name;
private List<RetentionConfig> retentionPolicies;
private List<FragmentationConfig> fragmentations;

public String getName() {
Expand All @@ -22,4 +23,12 @@ public List<FragmentationConfig> getFragmentations() {
public void setFragmentations(List<FragmentationConfig> fragmentations) {
this.fragmentations = fragmentations;
}

public List<RetentionConfig> getRetentionPolicies() {
return retentionPolicies;
}

public void setRetentionPolicies(List<RetentionConfig> retentionPolicies) {
this.retentionPolicies = retentionPolicies;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.FragmentationStrategyImpl;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.ldesfragment.services.RootFragmentCreator;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.tree.memberreferences.entities.MemberReferencesRepository;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ConfigProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationConfig;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.FragmentationProperties;
import be.vlaanderen.informatievlaanderen.ldes.server.domain.viewcreation.valueobjects.ViewSpecification;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -60,13 +60,13 @@ void when_ViewSpecificationFragmentationConfigIsNotNull_WrappedFragmentationStra
when(applicationContext.getBean(TIMEBASED)).thenReturn(timebasedFragmentationStrategyWrapper);
FragmentationStrategy timebasedFragmentationStrategy = mock(FragmentationStrategy.class);
when(timebasedFragmentationStrategyWrapper.wrapFragmentationStrategy(eq(applicationContext), any(),
eq(new FragmentationProperties(TIMEBASED_PROPERTIES)))).thenReturn(timebasedFragmentationStrategy);
eq(new ConfigProperties(TIMEBASED_PROPERTIES)))).thenReturn(timebasedFragmentationStrategy);

FragmentationStrategyWrapper geospatialFragmentationStrategyWrapper = mock(FragmentationStrategyWrapper.class);
when(applicationContext.getBean(GEOSPATIAL)).thenReturn(geospatialFragmentationStrategyWrapper);
FragmentationStrategy geospatialFragmentationStrategy = mock(FragmentationStrategy.class);
when(geospatialFragmentationStrategyWrapper.wrapFragmentationStrategy(applicationContext,
timebasedFragmentationStrategy, new FragmentationProperties(GEOSPATIAL_PROPERTIES)))
timebasedFragmentationStrategy, new ConfigProperties(GEOSPATIAL_PROPERTIES)))
.thenReturn(geospatialFragmentationStrategy);

ViewSpecification viewSpecification = getViewSpecification();
Expand Down
Loading