1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.proxy.backend.context;
19
20 import lombok.AccessLevel;
21 import lombok.Getter;
22 import lombok.NoArgsConstructor;
23 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
24 import org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
25 import org.apache.shardingsphere.mode.manager.ContextManager;
26 import org.apache.shardingsphere.proxy.backend.connector.jdbc.datasource.JDBCBackendDataSource;
27
28 import java.util.Collection;
29 import java.util.Optional;
30 import java.util.stream.Collectors;
31
32
33
34
35 @NoArgsConstructor(access = AccessLevel.PRIVATE)
36 @Getter
37 public final class ProxyContext {
38
39 private static final ProxyContext INSTANCE = new ProxyContext();
40
41 private final JDBCBackendDataSource backendDataSource = new JDBCBackendDataSource();
42
43 private ContextManager contextManager;
44
45
46
47
48
49
50 public static void init(final ContextManager contextManager) {
51 INSTANCE.contextManager = contextManager;
52 }
53
54
55
56
57
58
59 public static ProxyContext getInstance() {
60 return INSTANCE;
61 }
62
63
64
65
66
67
68
69 public boolean databaseExists(final String name) {
70 return contextManager.getMetaDataContexts().getMetaData().containsDatabase(name);
71 }
72
73
74
75
76
77
78 public Collection<String> getAllDatabaseNames() {
79 return contextManager.getMetaDataContexts().getMetaData().getDatabases().values().stream().map(ShardingSphereDatabase::getName).collect(Collectors.toList());
80 }
81
82
83
84
85
86
87 public Optional<InstanceStateContext> getInstanceStateContext() {
88 return null == contextManager.getInstanceContext() ? Optional.empty() : Optional.ofNullable(contextManager.getInstanceContext().getInstance().getState());
89 }
90 }