refactored AccessConditionConfigurationService

This commit is contained in:
Mykhaylo
2022-01-28 20:17:24 +01:00
parent d74b85e901
commit 294045d760
7 changed files with 20 additions and 31 deletions

View File

@@ -6,7 +6,10 @@
* http://www.dspace.org/license/
*/
package org.dspace.submit.model;
import java.util.Map;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Simple bean to manage different Access Condition configurations
@@ -15,18 +18,11 @@ import java.util.Map;
*/
public class AccessConditionConfigurationService {
/**
* Mapping the submission step process identifier with the configuration
* (see configuration at access-conditions.xml)
*/
private Map<String, AccessConditionConfiguration> map;
@Autowired
private List<AccessConditionConfiguration> accessConditionConfigurations;
public Map<String, AccessConditionConfiguration> getMap() {
return map;
}
public void setMap(Map<String, AccessConditionConfiguration> map) {
this.map = map;
public AccessConditionConfiguration getAccessConfigurationById(String name) {
return accessConditionConfigurations.stream().filter(x -> name.equals(x.getName())).findFirst().get();
}
}

View File

@@ -60,16 +60,10 @@
</property>
</bean>
<bean id="accessConditionConfigurationService" class="org.dspace.submit.model.AccessConditionConfigurationService">
<property name="map">
<map>
<entry key="defaultAC" value-ref="accessConditionConfigurationDefault" />
<entry key="notDiscoverable" value-ref="accessConditionConfigurationNotDiscoverable" />
</map>
</property>
</bean>
<bean id="accessConditionConfigurationService" class="org.dspace.submit.model.AccessConditionConfigurationService" />
<bean id="accessConditionConfigurationDefault" class="org.dspace.submit.model.AccessConditionConfiguration">
<!-- This name must match the id of the step as defined in the item-submission.xml -->
<property name="name" value="defaultAC"></property>
<property name="canChangeDiscoverable" value="true"></property>
<property name="options">
@@ -82,6 +76,7 @@
</bean>
<bean id="accessConditionConfigurationNotDiscoverable" class="org.dspace.submit.model.AccessConditionConfiguration">
<!-- This name must match the id of the step as defined in the item-submission.xml -->
<property name="name" value="notDiscoverable"></property>
<property name="canChangeDiscoverable" value="false"></property>
<property name="options">

View File

@@ -34,7 +34,7 @@ public class SubmissionAccessOptionRestRepository extends DSpaceRestRepository<S
@Override
@PreAuthorize("hasAuthority('AUTHENTICATED')")
public SubmissionAccessOptionRest findOne(Context context, String id) {
AccessConditionConfiguration configuration = accessConditionConfigurationService.getMap().get(id);
AccessConditionConfiguration configuration = accessConditionConfigurationService.getAccessConfigurationById(id);
return Objects.nonNull(configuration) ? converter.toRest(configuration, utils.obtainProjection()) : null;
}

View File

@@ -42,7 +42,8 @@ public class AccessConditionAddPatchOperation extends AddPatchOperation<AccessCo
throws Exception {
String stepId = (String) currentRequest.getAttribute("accessConditionSectionId");
AccessConditionConfiguration configuration = accessConditionConfigurationService.getMap().get(stepId);
AccessConditionConfiguration configuration = accessConditionConfigurationService
.getAccessConfigurationById(stepId);
Item item = source.getItem();

View File

@@ -33,7 +33,8 @@ public class AccessConditionDiscoverableReplacePatchOperation extends ReplacePat
Object value) throws Exception {
String stepId = (String) currentRequest.getAttribute("accessConditionSectionId");
AccessConditionConfiguration configuration = accessConditionConfigurationService.getMap().get(stepId);
AccessConditionConfiguration configuration = accessConditionConfigurationService
.getAccessConfigurationById(stepId);
if (Objects.isNull(configuration) || !configuration.getCanChangeDiscoverable().booleanValue()) {
throw new UnprocessableEntityException("The current access configurations does not allow" +

View File

@@ -52,7 +52,8 @@ public class AccessConditionReplacePatchOperation extends ReplacePatchOperation<
Object value) throws Exception {
String stepId = (String) currentRequest.getAttribute("accessConditionSectionId");
AccessConditionConfiguration configuration = accessConditionConfigurationService.getMap().get(stepId);
AccessConditionConfiguration configuration = accessConditionConfigurationService
.getAccessConfigurationById(stepId);
// "path" : "/sections/<:name-of-the-form>/accessConditions/0/name"
// the absolutePath will be : accessConditions/0 or accessConditions/0/name

View File

@@ -61,15 +61,10 @@
</property>
</bean>
<bean id="accessConditionConfigurationService" class="org.dspace.submit.model.AccessConditionConfigurationService">
<property name="map">
<map>
<entry key="itemAccessConditions" value-ref="accessConditionConfigurationDefault" />
</map>
</property>
</bean>
<bean id="accessConditionConfigurationService" class="org.dspace.submit.model.AccessConditionConfigurationService" />
<bean id="accessConditionConfigurationDefault" class="org.dspace.submit.model.AccessConditionConfiguration">
<!-- This name must match the id of the step as defined in the item-submission.xml -->
<property name="name" value="itemAccessConditions"></property>
<property name="canChangeDiscoverable" value="true"></property>
<property name="options">