package com.moon.server.helper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.ogr.DataSource; import org.gdal.ogr.Driver; 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 getTabNames(String filePath) { List list = new ArrayList<>(); Driver driver = null; DataSource dataSource = null; try { driver = ogr.GetDriverByName("PGeo"); if (null == driver) { log.error("MdbHelper.getTabNames: PGeo is null"); return list; } dataSource = driver.Open(filePath, 0); if (null == dataSource) { log.error("MdbHelper.getTabNames.dataSource is null. " + filePath); return list; } for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { Layer layer = dataSource.GetLayer(i); list.add(layer.GetName()); layer.delete(); } } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { GdbHelper.delete(dataSource, driver); } return list; } /** * 读取数据 */ public static List readData(Class clazz, String filePath, String layerName) { List list = new ArrayList<>(); Driver driver = null; DataSource dataSource = null; try { driver = ogr.GetDriverByName("PGeo"); if (null == driver) { return list; } dataSource = driver.Open(filePath, 0); if (null == dataSource) { return list; } for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { Layer layer = dataSource.GetLayer(i); if (layer.GetName().equals(layerName)) { GdbHelper.readLayer(clazz, layer, list); break; } layer.delete(); } } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { GdbHelper.delete(dataSource, driver); } return list; } }