This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 630f0fb476a Unified ShardingSphereData metadata api (#23851)
630f0fb476a is described below
commit 630f0fb476a433074694e33fb465b2dbf35ff814
Author: zhaojinchao <[email protected]>
AuthorDate: Tue Jan 31 11:32:07 2023 +0800
Unified ShardingSphereData metadata api (#23851)
* Unified ShardingSphereData metadata api
* Fix checkstyle
---
.../infra/metadata/data/ShardingSphereData.java | 39 +++++++++++++++++
.../metadata/data/ShardingSphereDatabaseData.java | 39 +++++++++++++++++
.../metadata/data/ShardingSphereSchemaData.java | 39 +++++++++++++++++
.../mode/manager/ContextManager.java | 50 +++++++++-------------
4 files changed, 138 insertions(+), 29 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereData.java
index eda2db95eea..684741c42be 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereData.java
@@ -29,4 +29,43 @@ import java.util.Map;
public final class ShardingSphereData {
private final Map<String, ShardingSphereDatabaseData> databaseData = new
LinkedHashMap<>();
+
+ /**
+ * Get ShardingSphere database.
+ *
+ * @param databaseName database name
+ * @return ShardingSphere database data
+ */
+ public ShardingSphereDatabaseData getDatabase(final String databaseName) {
+ return databaseData.get(databaseName.toLowerCase());
+ }
+
+ /**
+ * Put ShardingSphere database.
+ *
+ * @param databaseName database name
+ * @param database ShardingSphere database
+ */
+ public void putDatabase(final String databaseName, final
ShardingSphereDatabaseData database) {
+ databaseData.put(databaseName.toLowerCase(), database);
+ }
+
+ /**
+ * Drop ShardingSphere database.
+ *
+ * @param databaseName database name
+ */
+ public void dropDatabase(final String databaseName) {
+ databaseData.remove(databaseName.toLowerCase());
+ }
+
+ /**
+ * Judge contains ShardingSphere database from meta data or not.
+ *
+ * @param databaseName database name
+ * @return contains ShardingSphere database from meta data or not
+ */
+ public boolean containsDatabase(final String databaseName) {
+ return databaseData.containsKey(databaseName.toLowerCase());
+ }
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereDatabaseData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereDatabaseData.java
index 6577078ffbf..96518222138 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereDatabaseData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereDatabaseData.java
@@ -29,4 +29,43 @@ import java.util.Map;
public final class ShardingSphereDatabaseData {
private final Map<String, ShardingSphereSchemaData> schemaData = new
LinkedHashMap<>();
+
+ /**
+ * Get ShardingSphere schema data.
+ *
+ * @param schemaName schema name
+ * @return ShardingSphere schema data
+ */
+ public ShardingSphereSchemaData getSchema(final String schemaName) {
+ return schemaData.get(schemaName.toLowerCase());
+ }
+
+ /**
+ * Put ShardingSphere schema data.
+ *
+ * @param schemaName schema name
+ * @param schema ShardingSphere schema data
+ */
+ public void putSchema(final String schemaName, final
ShardingSphereSchemaData schema) {
+ schemaData.put(schemaName.toLowerCase(), schema);
+ }
+
+ /**
+ * Remove ShardingSphere schema data.
+ *
+ * @param schemaName schema name
+ */
+ public void removeSchema(final String schemaName) {
+ schemaData.remove(schemaName.toLowerCase());
+ }
+
+ /**
+ * Judge contains ShardingSphere schema from ShardingSphere database or
not.
+ *
+ * @param schemaName schema name
+ * @return Contains schema from database or not
+ */
+ public boolean containsSchema(final String schemaName) {
+ return schemaData.containsKey(schemaName.toLowerCase());
+ }
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereSchemaData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereSchemaData.java
index 42a0b0e5bea..3fa4d627387 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereSchemaData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereSchemaData.java
@@ -29,4 +29,43 @@ import java.util.Map;
public final class ShardingSphereSchemaData {
private final Map<String, ShardingSphereTableData> tableData = new
LinkedHashMap<>();
+
+ /**
+ * Get ShardingSphere table meta data via table name.
+ *
+ * @param tableName tableName table name
+ * @return ShardingSphere table data
+ */
+ public ShardingSphereTableData getTable(final String tableName) {
+ return tableData.get(tableName.toLowerCase());
+ }
+
+ /**
+ * Add ShardingSphere table data.
+ *
+ * @param tableName table name
+ * @param table ShardingSphere table data
+ */
+ public void putTable(final String tableName, final ShardingSphereTableData
table) {
+ tableData.put(tableName.toLowerCase(), table);
+ }
+
+ /**
+ * Remove ShardingSphere table meta data.
+ *
+ * @param tableName table name
+ */
+ public void removeTable(final String tableName) {
+ tableData.remove(tableName.toLowerCase());
+ }
+
+ /**
+ * Judge contains ShardingSphere table from table metadata or not.
+ *
+ * @param tableName table name
+ * @return contains ShardingSphere table from table metadata or not
+ */
+ public boolean containsTable(final String tableName) {
+ return tableData.containsKey(tableName.toLowerCase());
+ }
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 96fd351e286..8a596826cd4 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -31,7 +31,6 @@ import
org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.data.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereRowData;
import org.apache.shardingsphere.infra.metadata.data.ShardingSphereSchemaData;
import org.apache.shardingsphere.infra.metadata.data.ShardingSphereTableData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -563,10 +562,10 @@ public final class ContextManager implements
AutoCloseable {
* @param databaseName database name
*/
public synchronized void addShardingSphereDatabaseData(final String
databaseName) {
- if
(metaDataContexts.getShardingSphereData().getDatabaseData().containsKey(databaseName))
{
+ if
(metaDataContexts.getShardingSphereData().containsDatabase(databaseName)) {
return;
}
-
metaDataContexts.getShardingSphereData().getDatabaseData().put(databaseName,
new ShardingSphereDatabaseData());
+ metaDataContexts.getShardingSphereData().putDatabase(databaseName, new
ShardingSphereDatabaseData());
}
/**
@@ -574,10 +573,10 @@ public final class ContextManager implements
AutoCloseable {
* @param databaseName database name
*/
public synchronized void dropShardingSphereDatabaseData(final String
databaseName) {
- if
(!metaDataContexts.getShardingSphereData().getDatabaseData().containsKey(databaseName.toLowerCase()))
{
+ if
(!metaDataContexts.getShardingSphereData().containsDatabase(databaseName)) {
return;
}
-
metaDataContexts.getShardingSphereData().getDatabaseData().remove(databaseName);
+ metaDataContexts.getShardingSphereData().dropDatabase(databaseName);
}
/**
@@ -587,10 +586,10 @@ public final class ContextManager implements
AutoCloseable {
* @param schemaName schema name
*/
public synchronized void addShardingSphereSchemaData(final String
databaseName, final String schemaName) {
- if
(metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().containsKey(schemaName))
{
+ if
(metaDataContexts.getShardingSphereData().getDatabase(databaseName).containsSchema(schemaName))
{
return;
}
-
metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().put(schemaName,
new ShardingSphereSchemaData());
+
metaDataContexts.getShardingSphereData().getDatabase(databaseName).putSchema(schemaName,
new ShardingSphereSchemaData());
}
/**
@@ -600,11 +599,11 @@ public final class ContextManager implements
AutoCloseable {
* @param schemaName schema name
*/
public synchronized void dropShardingSphereSchemaData(final String
databaseName, final String schemaName) {
- ShardingSphereDatabaseData databaseData =
metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName);
- if (null == databaseData ||
!databaseData.getSchemaData().containsKey(schemaName)) {
+ ShardingSphereDatabaseData databaseData =
metaDataContexts.getShardingSphereData().getDatabase(databaseName);
+ if (null == databaseData || !databaseData.containsSchema(schemaName)) {
return;
}
- databaseData.getSchemaData().remove(schemaName);
+ databaseData.removeSchema(schemaName);
}
/**
@@ -615,15 +614,13 @@ public final class ContextManager implements
AutoCloseable {
* @param tableName table name
*/
public synchronized void addShardingSphereTableData(final String
databaseName, final String schemaName, final String tableName) {
- if
(!metaDataContexts.getShardingSphereData().getDatabaseData().containsKey(databaseName)
- ||
!metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().containsKey(schemaName))
{
+ if
(!metaDataContexts.getShardingSphereData().containsDatabase(databaseName) ||
!metaDataContexts.getShardingSphereData().getDatabase(databaseName).containsSchema(schemaName))
{
return;
}
- if
(metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().get(schemaName).getTableData().containsKey(tableName))
{
+ if
(metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName))
{
return;
}
- ShardingSphereDatabaseData database =
metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName);
- database.getSchemaData().get(schemaName).getTableData().put(tableName,
new ShardingSphereTableData(tableName));
+
metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).putTable(tableName,
new ShardingSphereTableData(tableName));
}
/**
@@ -634,11 +631,10 @@ public final class ContextManager implements
AutoCloseable {
* @param tableName table name
*/
public synchronized void dropShardingSphereTableData(final String
databaseName, final String schemaName, final String tableName) {
- if
(!metaDataContexts.getShardingSphereData().getDatabaseData().containsKey(databaseName)
- ||
!metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().containsKey(schemaName))
{
+ if
(!metaDataContexts.getShardingSphereData().containsDatabase(databaseName) ||
!metaDataContexts.getShardingSphereData().getDatabase(databaseName).containsSchema(schemaName))
{
return;
}
-
metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().get(schemaName).getTableData().remove(tableName);
+
metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).removeTable(tableName);
}
/**
@@ -650,19 +646,17 @@ public final class ContextManager implements
AutoCloseable {
* @param yamlRowData yaml row data
*/
public synchronized void alterShardingSphereRowData(final String
databaseName, final String schemaName, final String tableName, final
YamlShardingSphereRowData yamlRowData) {
- if
(!metaDataContexts.getShardingSphereData().getDatabaseData().containsKey(databaseName)
- ||
!metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().containsKey(schemaName)
- ||
!metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().get(schemaName).getTableData().containsKey(tableName))
{
+ if
(!metaDataContexts.getShardingSphereData().containsDatabase(databaseName) ||
!metaDataContexts.getShardingSphereData().getDatabase(databaseName).containsSchema(schemaName)
+ ||
!metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName))
{
return;
}
if (!metaDataContexts.getMetaData().containsDatabase(databaseName) ||
!metaDataContexts.getMetaData().getDatabase(databaseName).containsSchema(schemaName)
||
!metaDataContexts.getMetaData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName))
{
return;
}
- ShardingSphereTableData tableData =
metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().get(schemaName).getTableData().get(tableName);
+ ShardingSphereTableData tableData =
metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName);
List<ShardingSphereColumn> columns = new
ArrayList<>(metaDataContexts.getMetaData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName).getColumns().values());
- ShardingSphereRowData rowData = new
YamlShardingSphereRowDataSwapper(columns).swapToObject(yamlRowData);
- tableData.getRows().add(rowData);
+ tableData.getRows().add(new
YamlShardingSphereRowDataSwapper(columns).swapToObject(yamlRowData));
}
/**
@@ -674,13 +668,11 @@ public final class ContextManager implements
AutoCloseable {
* @param uniqueKey row uniqueKey
*/
public synchronized void deleteShardingSphereRowData(final String
databaseName, final String schemaName, final String tableName, final String
uniqueKey) {
- if
(!metaDataContexts.getShardingSphereData().getDatabaseData().containsKey(databaseName)
- ||
!metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().containsKey(schemaName)
- ||
!metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().get(schemaName).getTableData().containsKey(tableName))
{
+ if
(!metaDataContexts.getShardingSphereData().containsDatabase(databaseName) ||
!metaDataContexts.getShardingSphereData().getDatabase(databaseName).containsSchema(schemaName)
+ ||
!metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName))
{
return;
}
- ShardingSphereTableData tableData =
metaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName).getSchemaData().get(schemaName).getTableData().get(tableName);
- tableData.getRows().removeIf(each ->
uniqueKey.equals(each.getUniqueKey()));
+
metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName).getRows().removeIf(each
-> uniqueKey.equals(each.getUniqueKey()));
}
@Override