1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.mycore.pi;
20
21 import static org.mycore.pi.MCRPIJobService.CREATION_PREDICATE;
22
23 import java.util.List;
24 import java.util.stream.Collectors;
25
26 import org.mycore.common.config.MCRConfiguration2;
27
28 public class MCRPIServiceManager {
29
30 public static final String REGISTRATION_SERVICE_CONFIG_PREFIX = "MCR.PI.Service.";
31
32 public static MCRPIServiceManager getInstance() {
33 return InstanceHolder.INSTANCE;
34 }
35
36 public List<String> getServiceIDList() {
37 return MCRConfiguration2.getInstantiatablePropertyKeys(REGISTRATION_SERVICE_CONFIG_PREFIX)
38 .map(s -> s.substring(MCRPIServiceManager.REGISTRATION_SERVICE_CONFIG_PREFIX.length()))
39 .collect(Collectors.toList());
40 }
41
42 public List<MCRPIService<MCRPersistentIdentifier>> getServiceList() {
43 return getServiceIDList()
44 .stream()
45 .map(this::getRegistrationService)
46 .collect(Collectors.toList());
47 }
48
49 public List<MCRPIJobService<MCRPersistentIdentifier>> getAutoCreationList() {
50 return getServiceList()
51 .stream()
52 .filter(service -> service instanceof MCRPIJobService)
53 .map(s -> (MCRPIJobService<MCRPersistentIdentifier>) s)
54 .filter(service -> MCRConfiguration2
55 .getString(REGISTRATION_SERVICE_CONFIG_PREFIX + service.getServiceID() + "." +
56 CREATION_PREDICATE)
57 .isPresent())
58 .collect(Collectors.toList());
59 }
60
61 public <T extends MCRPersistentIdentifier> MCRPIService<T> getRegistrationService(String id) {
62 return MCRConfiguration2
63 .<MCRPIService<T>>getSingleInstanceOf(MCRPIServiceManager.REGISTRATION_SERVICE_CONFIG_PREFIX + id).get();
64 }
65
66 private static class InstanceHolder {
67 private static final MCRPIServiceManager INSTANCE = new MCRPIServiceManager();
68 }
69
70 }