
mil.nga.geopackage.user.UserTableReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of geopackage-core Show documentation
Show all versions of geopackage-core Show documentation
Core functionality for GeoPackage implementations
package mil.nga.geopackage.user;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import mil.nga.geopackage.GeoPackageException;
import mil.nga.geopackage.db.GeoPackageCoreConnection;
import mil.nga.geopackage.db.master.SQLiteMaster;
import mil.nga.geopackage.db.table.ColumnConstraints;
import mil.nga.geopackage.db.table.TableColumn;
import mil.nga.geopackage.db.table.TableConstraints;
import mil.nga.geopackage.db.table.TableInfo;
/**
* Reads the metadata from an existing user table
*
* @param
* column type
* @param
* table type
*
* @author osbornb
*/
public abstract class UserTableReader> {
/**
* Logger
*/
private static final Logger log = Logger
.getLogger(UserTableReader.class.getName());
/**
* Table name
*/
private final String tableName;
/**
* Constructor
*
* @param tableName
* table name
*/
protected UserTableReader(String tableName) {
this.tableName = tableName;
}
/**
* Create the table
*
* @param tableName
* table name
* @param columnList
* column list
* @return table
*/
protected abstract TTable createTable(String tableName,
List columnList);
/**
* Create the column
*
* @param tableColumn
* table column
* @return column
*/
protected abstract TColumn createColumn(TableColumn tableColumn);
/**
* Read the table
*
* @param db
* connection
* @return table
*/
public TTable readTable(GeoPackageCoreConnection db) {
List columnList = new ArrayList();
TableInfo tableInfo = TableInfo.info(db, tableName);
if (tableInfo == null) {
throw new GeoPackageException("Table does not exist: " + tableName);
}
TableConstraints constraints = SQLiteMaster.queryForConstraints(db,
tableName);
for (TableColumn tableColumn : tableInfo.getColumns()) {
if (tableColumn.getDataType() == null) {
log.log(Level.SEVERE,
"Unexpected column data type: '" + tableColumn.getType()
+ "', column: " + tableColumn.getName());
}
TColumn column = createColumn(tableColumn);
column.setAutoincrement(false);
ColumnConstraints columnConstraints = constraints
.getColumnConstraints(column.getName());
if (columnConstraints != null
&& columnConstraints.hasConstraints()) {
column.clearConstraints(false);
column.addConstraints(columnConstraints);
}
columnList.add(column);
}
TTable table = createTable(tableName, columnList);
table.addConstraints(constraints.getTableConstraints());
return table;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy