src/main/java/com/lf/server/controller/data/DataLoaderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/helper/GdalHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/helper/GdbHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/helper/MdbHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/all/BaseUploadService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/data/DataLoaderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/lf/server/controller/data/DataLoaderController.java
@@ -3,11 +3,14 @@ import com.lf.server.annotation.SysLog; import com.lf.server.controller.all.BaseUploadController; import com.lf.server.entity.all.ResponseMsg; import com.lf.server.entity.ctrl.TabEntity; import com.lf.server.entity.ctrl.TabMapperEntity; import com.lf.server.entity.ctrl.UploadEntity; import com.lf.server.entity.data.MetaEntity; import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.StringHelper; import com.lf.server.helper.WebHelper; import com.lf.server.service.all.BaseQueryService; import com.lf.server.service.data.DataLoaderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -18,6 +21,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; /** * æ°æ®å ¥åº @@ -28,9 +32,41 @@ @RequestMapping("/dataLoader") public class DataLoaderController extends BaseUploadController { @Autowired BaseQueryService baseQueryService; @Autowired DataLoaderService dataLoaderService; @SysLog() @ApiOperation(value = "æ¥è¯¢ææè¡¨") @GetMapping(value = "/selectTabs") public ResponseMsg<List<TabEntity>> selectTabs() { try { List<TabEntity> list = baseQueryService.selectTabs(); return success(list); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "æ¥è¯¢æ å°") @ApiImplicitParams({ @ApiImplicitParam(name = "path", value = "è·¯å¾", dataType = "String", paramType = "query") }) @GetMapping(value = "/selectMappers") public ResponseMsg<List<TabMapperEntity>> selectMappers(String path) { try { List<TabMapperEntity> list = dataLoaderService.selectMappers(path); return success(list); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "æå ¥æä»¶") @ApiImplicitParams({ @ApiImplicitParam(name = "entity", value = "ä¸ä¼ å®ä½ç±»", dataType = "UploadEntity", paramType = "body") src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java
@@ -8,11 +8,27 @@ public TabMapperEntity() { } public TabMapperEntity(String fileName, String type, String tab) { this.fileName = fileName; this.type = type; this.tab = tab; } public TabMapperEntity(String fileName, String type, String tab, String subPath) { this.fileName = fileName; this.type = type; this.tab = tab; this.subPath = subPath; } private String fileName; private String type; private String tab; private String subPath; private String entity; @@ -40,6 +56,14 @@ this.tab = tab; } public String getSubPath() { return subPath; } public void setSubPath(String subPath) { this.subPath = subPath; } public String getEntity() { return entity; } src/main/java/com/lf/server/helper/GdalHelper.java
@@ -238,7 +238,7 @@ } while (true); } } catch (Exception ex) { ex.printStackTrace(); log.error(ex.getMessage(), ex); } } src/main/java/com/lf/server/helper/GdbHelper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.lf.server.helper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.ogr.DataSource; import org.gdal.ogr.Layer; import org.gdal.ogr.ogr; import java.util.ArrayList; import java.util.List; /** * GDB帮å©ç±» * @author WWW */ public class GdbHelper { private final static Log log = LogFactory.getLog(GdbHelper.class); /** * è·å表å */ public static List<String> getTabNames(String filePath) { List<String> list = new ArrayList<>(); try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("OpenFileGDB"); if (driver == null) { return list; } DataSource dataSource = driver.Open(filePath, 0); for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { Layer layer = dataSource.GetLayer(i); list.add(layer.GetName()); } } catch (Exception ex) { log.error(ex.getMessage(), ex); } return list; } } src/main/java/com/lf/server/helper/MdbHelper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.lf.server.helper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.ogr.DataSource; import org.gdal.ogr.Layer; import org.gdal.ogr.ogr; import java.util.ArrayList; import java.util.List; /** * MDB帮å©ç±» * @author WWW */ public class MdbHelper { private final static Log log = LogFactory.getLog(MdbHelper.class); /** * è·å表å */ public static List<String> getTabNames(String filePath) { List<String> list = new ArrayList<>(); try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("PGeo"); if (driver == null) { return list; } DataSource dataSource = driver.Open(filePath, 0); for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { Layer layer = dataSource.GetLayer(i); list.add(layer.GetName()); } } catch (Exception ex) { log.error(ex.getMessage(), ex); } return list; } } src/main/java/com/lf/server/service/all/BaseUploadService.java
@@ -31,13 +31,6 @@ public final Log log = LogFactory.getLog(getClass()); /** * æ¥è¯¢ç®å½ */ public String selectPath() { return pathHelper.getTempPathName(); } /** * æ¥è¯¢æä»¶ */ public List<MetaFileEntity> selectFiles(String subPath) throws IOException { @@ -71,6 +64,13 @@ } /** * æ¥è¯¢ç®å½ */ public String selectPath() { return pathHelper.getTempPathName(); } /** * ä¸ä¼ æä»¶ */ public <T> List<MetaFileEntity> uploadData(T t, String path, HttpServletRequest req, HttpServletResponse res) throws Exception { src/main/java/com/lf/server/service/data/DataLoaderService.java
@@ -5,9 +5,7 @@ import com.lf.server.entity.ctrl.TabMapperEntity; import com.lf.server.entity.data.MetaEntity; import com.lf.server.entity.data.MetaFileEntity; import com.lf.server.helper.ClassHelper; import com.lf.server.helper.ExcelHelper; import com.lf.server.helper.FileHelper; import com.lf.server.helper.*; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import com.lf.server.service.all.BaseUploadService; @@ -16,6 +14,7 @@ import java.io.File; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; /** @@ -34,9 +33,172 @@ private final static String MDB = ".mdb"; private final static String SHP = ".shp"; private final static String GDB = ".gdb"; private final static String SHP_ZIP = ".shp.zip"; private final static String GDB_ZIP = ".gdb.zip"; private final static String ZIP = ".zip"; /** * æ¥è¯¢æ å° */ public List<TabMapperEntity> selectMappers(String subPath) { String root = pathHelper.getConfig().getTempPath() + File.separator + subPath; File file = new File(root); if (!file.exists() && !file.isDirectory()) { return null; } File[] files = file.listFiles(); if (null == files || files.length == 0) { return null; } File zipFile = new File(root + "_zip"); if (!zipFile.exists() || !zipFile.isDirectory()) { zipFile.mkdirs(); } return getMappers(zipFile.getPath(), files); } /** * è·åæ å° */ private List<TabMapperEntity> getMappers(String zipPath, File[] files) { List<TabMapperEntity> list = new ArrayList<>(); for (File f : files) { String fileName = FileHelper.getFileName(f.getPath()); if (fileName.contains(XLS)) { list.add(new TabMapperEntity(fileName, "xls", fileName)); continue; } if (fileName.contains(MDB)) { List<String> tabs = MdbHelper.getTabNames(f.getPath()); for (String tab : tabs) { list.add(new TabMapperEntity(fileName, "mdb", tab, fileName)); } continue; } if (fileName.contains(SHP_ZIP)) { String subPath = zipPath + File.separator + f.getName().toLowerCase().replace(".zip", ""); ZipHelper.unzip(f.getPath(), subPath); getShpFiles(f.getName(), subPath, list); continue; } if (fileName.contains(GDB_ZIP)) { String subPath = zipPath + File.separator + f.getName().toLowerCase().replace(".zip", ""); ZipHelper.unzip(f.getPath(), subPath); getGdbFiles(f.getName(), subPath, list); continue; } if (!fileName.contains(ZIP)) { // } } return list; } /** * è·åShpæä»¶ */ private void getShpFiles(String sourceName, String subPath, List<TabMapperEntity> list) { List<String> files = new ArrayList<>(); getShpFiles(subPath, files); String root = subPath.substring(0, subPath.lastIndexOf(File.separator) + 1); for (String file : files) { String name = FileHelper.getFileName(file); String path = file.replace(root, ""); list.add(new TabMapperEntity(sourceName, "shp", name, path)); } } /** * è·åShpæä»¶ */ private void getShpFiles(String shpPath, List<String> list) { File file = new File(shpPath); File[] files = file.listFiles(); if (null == files || files.length == 0) { return; } for (File f : files) { if (f.isDirectory()) { getShpFiles(f.getPath(), list); continue; } if (f.getName().toLowerCase().endsWith(".shp")) { list.add(f.getPath()); } } } /** * è·åGdbæä»¶ */ private void getGdbFiles(String sourceName, String subPath, List<TabMapperEntity> list) { List<String> files = new ArrayList<>(); getGdbFiles(subPath, files); String root = subPath.substring(0, subPath.lastIndexOf(File.separator) + 1); for (String file : files) { String path = file.replace(root, ""); List<String> tabs = GdbHelper.getTabNames(file); for (String tab : tabs) { list.add(new TabMapperEntity(sourceName, "gdb", tab, path)); } } } /** * è·åGdbæä»¶ */ private void getGdbFiles(String shpPath, List<String> list) { File file = new File(shpPath); File[] files = file.listFiles(); if (null == files || files.length == 0) { return; } for (File f : files) { if (!f.isDirectory()) { continue; } if (isGdbFile(f)) { list.add(f.getPath()); continue; } getGdbFiles(f.getPath(), list); } } private boolean isGdbFile(File f) { if (f.getName().toLowerCase().endsWith(GDB)) { File[] files = f.listFiles(); if (null == files || files.length == 0) { return false; } for (File file : files) { if ("gdb".equals(file.getName())) { return true; } } } return false; } /** * æå ¥æä»¶ @@ -152,10 +314,10 @@ if (name.contains(MDB)) { return "mdb"; } if (name.contains(SHP)) { if (name.contains(SHP_ZIP)) { return "shp"; } if (name.contains(GDB)) { if (name.contains(GDB_ZIP)) { return "gdb"; }