|
@@ -2,7 +2,6 @@ package cn.com.taiji.cql.service.impl;
|
|
|
import cn.com.taiji.common.domain.PageResult;
|
|
|
import cn.com.taiji.common.domain.Result;
|
|
|
import cn.com.taiji.common.enums.CommonConstant;
|
|
|
-import cn.com.taiji.common.util.HashCodeUtil;
|
|
|
import cn.com.taiji.common.util.IdGenerator;
|
|
|
import cn.com.taiji.cql.service.IECqlService;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -16,9 +15,6 @@ import org.geotools.api.filter.identity.FeatureId;
|
|
|
import org.geotools.api.filter.sort.SortBy;
|
|
|
import org.geotools.api.filter.sort.SortOrder;
|
|
|
import org.geotools.data.collection.ListFeatureCollection;
|
|
|
-import org.geotools.data.jdbc.datasource.DBCPDataSourceFactory;
|
|
|
-import org.geotools.data.jdbc.datasource.DataSourceFinder;
|
|
|
-import org.geotools.data.mysql.MySQLDataStoreFactory;
|
|
|
import org.geotools.data.simple.SimpleFeatureCollection;
|
|
|
import org.geotools.data.simple.SimpleFeatureIterator;
|
|
|
import org.geotools.data.store.ContentFeatureSource;
|
|
@@ -28,19 +24,14 @@ import org.geotools.filter.SortByImpl;
|
|
|
import org.geotools.filter.text.ecql.ECQL;
|
|
|
import org.geotools.jdbc.JDBCDataStoreFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
-import javax.sql.DataSource;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
-public class ECqlServiceImpl implements IECqlService{
|
|
|
-
|
|
|
- private Map<String,DataStore> dataStoreMaps = new ConcurrentHashMap<String,DataStore>();
|
|
|
+public class ECqlServiceImpl extends BuildDataStoreImpl implements IECqlService{
|
|
|
|
|
|
/**
|
|
|
* cql 通用查询接口
|
|
@@ -58,8 +49,6 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
|
|
|
|
|
|
- DataStore dataStore = null;
|
|
|
-
|
|
|
String host = dsParams.get(JDBCDataStoreFactory.HOST.key).toString();
|
|
|
|
|
|
String database = dsParams.get(JDBCDataStoreFactory.DATABASE.key).toString();
|
|
@@ -79,7 +68,7 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
try {
|
|
|
|
|
|
- dataStore = createDataStore(dsParams);
|
|
|
+ DataStore dataStore = createDataStore(dsParams);
|
|
|
|
|
|
if (dataStore != null) {
|
|
|
|
|
@@ -266,11 +255,9 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
String database = mapParams.get(JDBCDataStoreFactory.DATABASE.key).toString();
|
|
|
|
|
|
- DataStore dataStore = null;
|
|
|
-
|
|
|
try{
|
|
|
|
|
|
- dataStore = createDataStore(mapParams);
|
|
|
+ DataStore dataStore = createDataStore(mapParams);
|
|
|
|
|
|
if (dataStore != null) {
|
|
|
|
|
@@ -342,11 +329,9 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
String database = mapParams.get(JDBCDataStoreFactory.DATABASE.key).toString();
|
|
|
|
|
|
- DataStore dataStore = null;
|
|
|
-
|
|
|
try{
|
|
|
|
|
|
- dataStore = createDataStore(mapParams);
|
|
|
+ DataStore dataStore = createDataStore(mapParams);
|
|
|
|
|
|
if (dataStore != null) {
|
|
|
|
|
@@ -409,11 +394,9 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
String database = mapParams.get(JDBCDataStoreFactory.DATABASE.key).toString();
|
|
|
|
|
|
- DataStore dataStore = null;
|
|
|
-
|
|
|
try{
|
|
|
|
|
|
- dataStore = createDataStore(mapParams);
|
|
|
+ DataStore dataStore = createDataStore(mapParams);
|
|
|
|
|
|
if (dataStore != null) {
|
|
|
|
|
@@ -462,11 +445,9 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
String database = mapParams.get(JDBCDataStoreFactory.DATABASE.key).toString();
|
|
|
|
|
|
- DataStore dataStore = null;
|
|
|
-
|
|
|
try{
|
|
|
|
|
|
- dataStore = createDataStore(mapParams);
|
|
|
+ DataStore dataStore = createDataStore(mapParams);
|
|
|
|
|
|
if (dataStore != null) {
|
|
|
|
|
@@ -503,62 +484,4 @@ public class ECqlServiceImpl implements IECqlService{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- private DataStore createDataStore(Map<String, Object> mapParams) throws Exception{
|
|
|
-
|
|
|
-
|
|
|
- String host = mapParams.get(JDBCDataStoreFactory.HOST.key).toString();
|
|
|
-
|
|
|
- String port = mapParams.get(JDBCDataStoreFactory.PORT.key).toString();
|
|
|
-
|
|
|
- String database = mapParams.get(JDBCDataStoreFactory.DATABASE.key).toString();
|
|
|
-
|
|
|
- int hashKey = HashCodeUtil.hashCode(host+"-"+port+"-"+database);
|
|
|
-
|
|
|
- DataStore dataStore = null;
|
|
|
-
|
|
|
- JDBCDataStoreFactory jDBCDataStoreFactory = null;
|
|
|
-
|
|
|
- if(dataStoreMaps.containsKey(String.valueOf(hashKey))){
|
|
|
-
|
|
|
- dataStore = dataStoreMaps.get(String.valueOf(hashKey));
|
|
|
-
|
|
|
- log.info("系统从内存连接到位于:" + host + "的空间数据库" + database + "成功!");
|
|
|
-
|
|
|
- }else{
|
|
|
-
|
|
|
-
|
|
|
- DataSource dataSource = DataSourceFinder.getDataSource(mapParams);
|
|
|
-
|
|
|
- if(dataSource !=null){
|
|
|
-
|
|
|
- if(mapParams.get(DBCPDataSourceFactory.DRIVERCLASS.key).equals("com.mysql.cj.jdbc.Driver")){
|
|
|
-
|
|
|
- jDBCDataStoreFactory = new MySQLDataStoreFactory();
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, Object> dataStoreParams = new HashMap<String, Object>();
|
|
|
-
|
|
|
- dataStoreParams.put(JDBCDataStoreFactory.SCHEMA.key, database);
|
|
|
- dataStoreParams.put(JDBCDataStoreFactory.DATASOURCE.key,dataSource);
|
|
|
- dataStoreParams.put(JDBCDataStoreFactory.BATCH_INSERT_SIZE.key, 1000);
|
|
|
-
|
|
|
- dataStore = jDBCDataStoreFactory.createDataStore(dataStoreParams);
|
|
|
-
|
|
|
- dataStoreMaps.put(String.valueOf(hashKey),dataStore);
|
|
|
-
|
|
|
- log.info("系统新建连接到位于:" + host + "的空间数据库" + database + "成功!");
|
|
|
-
|
|
|
- }else{
|
|
|
-
|
|
|
- log.info("获取"+host+"-"+port+"-"+database+"的数据源连接池失败!");
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return dataStore;
|
|
|
-
|
|
|
- }
|
|
|
}
|