1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.mycore.sword.application;
20
21 import java.util.List;
22 import java.util.concurrent.TimeUnit;
23 import java.util.stream.Stream;
24
25 import org.apache.logging.log4j.LogManager;
26 import org.apache.logging.log4j.Logger;
27 import org.mycore.datamodel.metadata.MCRMetadataManager;
28 import org.mycore.datamodel.metadata.MCRObjectID;
29 import org.mycore.sword.MCRSwordContainerHandler;
30 import org.swordapp.server.SwordError;
31
32
33
34
35
36
37 public abstract class MCRSwordCollectionProvider implements MCRSwordLifecycle {
38
39 protected static Logger LOGGER = LogManager.getLogger(MCRSwordCollectionProvider.class);
40
41 private MCRSwordContainerHandler mcrSwordContainerHandler;
42
43 private MCRSwordMediaHandler mcrSwordMediaHandler;
44
45 protected MCRSwordCollectionProvider() {
46 mcrSwordContainerHandler = new MCRSwordContainerHandler();
47 mcrSwordMediaHandler = new MCRSwordMediaHandler();
48 }
49
50
51
52
53
54
55 public abstract boolean isVisible();
56
57
58
59
60
61
62 public abstract List<String> getSupportedPagacking();
63
64
65
66
67 public abstract MCRSwordObjectIDSupplier getIDSupplier();
68
69 public MCRSwordContainerHandler getContainerHandler() {
70 return mcrSwordContainerHandler;
71 }
72
73 public abstract MCRSwordIngester getIngester();
74
75 public abstract MCRSwordMetadataProvider getMetadataProvider();
76
77
78
79
80 public MCRSwordMediaHandler getMediaHandler() {
81 return mcrSwordMediaHandler;
82 }
83
84 public abstract MCRSwordAuthHandler getAuthHandler();
85
86 public Stream<String> getDerivateIDsofObject(final String mcrObjectId) throws SwordError {
87 final List<MCRObjectID> derivateIds = MCRMetadataManager.getDerivateIds(MCRObjectID.getInstance(mcrObjectId),
88 10, TimeUnit.SECONDS);
89 return derivateIds.stream().map(MCRObjectID::toString);
90 }
91
92 @Override
93 public void init(MCRSwordLifecycleConfiguration lifecycleConfiguration) {
94 getIngester().init(lifecycleConfiguration);
95 getMetadataProvider().init(lifecycleConfiguration);
96 getMediaHandler().init(lifecycleConfiguration);
97 getContainerHandler().init(lifecycleConfiguration);
98 }
99
100 @Override
101 public void destroy() {
102 getIngester().destroy();
103 getMetadataProvider().destroy();
104 getMediaHandler().destroy();
105 getContainerHandler().destroy();
106 }
107 }