dossier status count
This commit is contained in:
parent
762009bc4f
commit
f998dd28d3
@ -37,5 +37,6 @@ public class Dossier {
|
||||
private OffsetDateTime archivedTime;
|
||||
private String dossierTemplateId;
|
||||
private String dossierStatusId;
|
||||
private DossierVisibility visibility;
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier;
|
||||
|
||||
public enum DossierVisibility {
|
||||
|
||||
PRIVATE, PUBLIC;
|
||||
}
|
||||
@ -11,7 +11,6 @@ import java.util.List;
|
||||
public interface DossierStatusResource {
|
||||
|
||||
String DOSSIER_STATUS_PATH = "/dossier-status";
|
||||
|
||||
String DOSSIER_TEMPLATE_PATH = "/dossier-template";
|
||||
|
||||
String DOSSIER_TEMPLATE_ID = "dossierTemplateId";
|
||||
@ -22,6 +21,7 @@ public interface DossierStatusResource {
|
||||
|
||||
String DOSSIER_STATUS_REPLACE_ID = "replaceDossierStatusId";
|
||||
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(HttpStatus.ACCEPTED)
|
||||
@PostMapping(value = DOSSIER_STATUS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
@ -32,6 +32,12 @@ public interface DossierStatusResource {
|
||||
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
|
||||
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@PostMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
List<DossierStatusInfo> getAllDossierStatuses(@RequestBody List<String> dossierTemplateId);
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_STATUS_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
|
||||
@ -6,6 +6,7 @@ import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownl
|
||||
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONStringSetConverter;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierVisibility;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.Fetch;
|
||||
import org.hibernate.annotations.FetchMode;
|
||||
@ -84,6 +85,10 @@ public class DossierEntity {
|
||||
@Column
|
||||
private OffsetDateTime dueDate;
|
||||
|
||||
@Column
|
||||
@Enumerated(EnumType.STRING)
|
||||
private DossierVisibility visibility;
|
||||
|
||||
@JsonIgnore
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
private DossierTemplateEntity dossierTemplate;
|
||||
|
||||
@ -13,6 +13,7 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@ -56,7 +57,11 @@ public class DossierStatusPersistenceService {
|
||||
}
|
||||
|
||||
public List<DossierStatusInfo> getAllDossierStatusForTemplate(String dossierTemplateId) {
|
||||
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
|
||||
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(Collections.singletonList(dossierTemplateId));
|
||||
}
|
||||
|
||||
public List<DossierStatusInfo> getAllDossierStatuses(List<String> dossierTemplateIds) {
|
||||
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateIds);
|
||||
}
|
||||
|
||||
public DossierStatusInfo getDossierStatusInfo(String dossierStatusId) {
|
||||
|
||||
@ -11,8 +11,8 @@ import java.util.Optional;
|
||||
public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {
|
||||
|
||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.dossierTemplateId = :dossierTemplateId group by s")
|
||||
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
|
||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.dossierTemplateId in ( :dossierTemplateIds ) group by s")
|
||||
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(List<String> dossierTemplateId);
|
||||
|
||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId group by s")
|
||||
|
||||
@ -0,0 +1,80 @@
|
||||
package com.iqser.red.service.peristence.v1.server.acl;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.cache.concurrent.ConcurrentMapCache;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
|
||||
import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
|
||||
import org.springframework.security.acls.AclPermissionEvaluator;
|
||||
import org.springframework.security.acls.domain.AclAuthorizationStrategy;
|
||||
import org.springframework.security.acls.domain.ConsoleAuditLogger;
|
||||
import org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy;
|
||||
import org.springframework.security.acls.domain.SpringCacheBasedAclCache;
|
||||
import org.springframework.security.acls.jdbc.BasicLookupStrategy;
|
||||
import org.springframework.security.acls.jdbc.JdbcMutableAclService;
|
||||
import org.springframework.security.acls.jdbc.LookupStrategy;
|
||||
import org.springframework.security.acls.model.PermissionGrantingStrategy;
|
||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||
import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
|
||||
public class AclMethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {
|
||||
|
||||
private final MethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler;
|
||||
|
||||
private final DataSource dataSource;
|
||||
|
||||
@Bean
|
||||
public AclAuthorizationStrategy aclAuthorizationStrategy() {
|
||||
return (acl, changeType) -> {
|
||||
// no-op
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PermissionGrantingStrategy permissionGrantingStrategy() {
|
||||
return new DefaultPermissionGrantingStrategy(new ConsoleAuditLogger());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SpringCacheBasedAclCache aclCache() {
|
||||
return new SpringCacheBasedAclCache(new ConcurrentMapCache("acl"),
|
||||
permissionGrantingStrategy(),
|
||||
aclAuthorizationStrategy()
|
||||
);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LookupStrategy lookupStrategy() {
|
||||
return new BasicLookupStrategy(
|
||||
dataSource,
|
||||
aclCache(),
|
||||
aclAuthorizationStrategy(),
|
||||
new ConsoleAuditLogger()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MethodSecurityExpressionHandler createExpressionHandler() {
|
||||
return defaultMethodSecurityExpressionHandler;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler() {
|
||||
DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
|
||||
AclPermissionEvaluator permissionEvaluator = new AclPermissionEvaluator(aclService());
|
||||
expressionHandler.setPermissionEvaluator(permissionEvaluator);
|
||||
return expressionHandler;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JdbcMutableAclService aclService() {
|
||||
return new JdbcMutableAclService(dataSource, lookupStrategy(), aclCache());
|
||||
}
|
||||
|
||||
}
|
||||
@ -7,6 +7,7 @@ import com.iqser.red.service.persistence.service.v1.api.resources.DossierStatusR
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ -34,8 +35,12 @@ public class DossierStatusController implements DossierStatusResource {
|
||||
}
|
||||
|
||||
@Override
|
||||
public DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId) {
|
||||
public List<DossierStatusInfo> getAllDossierStatuses(@RequestBody List<String> dossierTemplateIds) {
|
||||
return convert(dossierStatusPersistenceService.getAllDossierStatuses(dossierTemplateIds), DossierStatusInfo.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId) {
|
||||
return dossierStatusPersistenceService.getDossierStatusInfo(dossierStatusId);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
databaseChangeLog:
|
||||
- changeSet:
|
||||
id: add-dossier-visibility-column
|
||||
author: timo
|
||||
changes:
|
||||
- addColumn:
|
||||
columns:
|
||||
- column:
|
||||
name: visbility
|
||||
type: VARCHAR(40)
|
||||
defaultValue: PUBLIC
|
||||
tableName: dossier
|
||||
Loading…
x
Reference in New Issue
Block a user