1 package com.kodexa.client.registry;
2
3 import com.kodexa.client.Document;
4 import com.kodexa.client.KodexaException;
5 import com.kodexa.client.connectors.Connector;
6 import com.kodexa.client.connectors.FolderConnector;
7 import com.kodexa.client.connectors.InputStreamConnector;
8
9 import java.io.InputStream;
10 import java.util.HashMap;
11 import java.util.Map;
12
13
14
15
16
17 public class SourceRegistry {
18
19 private static SourceRegistrySourceRegistry">SourceRegistry INTERNAL_REGISTRY = new SourceRegistry();
20
21 static {
22 INTERNAL_REGISTRY.addConnector(new FolderConnector());
23 INTERNAL_REGISTRY.addConnector(new InputStreamConnector());
24 }
25
26 private Map<String, Connector> connectors = new HashMap<>();
27
28 public static SourceRegistry getInstance() {
29 return INTERNAL_REGISTRY;
30 }
31
32 public void addConnector(Connector connector) {
33 connectors.put(connector.getName(), connector);
34 }
35
36 public InputStream getSource(Document document) {
37 String CONNECTOR_KEY = "connector";
38 if (document.getMetadata().containsKey(CONNECTOR_KEY)) {
39 String connector = String.valueOf(document.getMetadata().get(CONNECTOR_KEY));
40 if (connectors.containsKey(connector)) {
41 return connectors.get(connector).getSource(document);
42 } else {
43 throw new KodexaException("Unable to find connector [" + connector + "]");
44 }
45 } else {
46 throw new KodexaException("Document does not have connector metadata");
47 }
48 }
49 }