All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mil.nga.geopackage.tiles.user.TileTableMetadata Maven / Gradle / Ivy

package mil.nga.geopackage.tiles.user;

import java.util.List;

import mil.nga.geopackage.BoundingBox;
import mil.nga.geopackage.contents.ContentsDataType;
import mil.nga.geopackage.user.UserTableMetadata;

/**
 * Tile Table Metadata for defining table creation information
 * 
 * @author osbornb
 * @since 4.0.0
 */
public class TileTableMetadata extends UserTableMetadata {

	/**
	 * Default data type
	 */
	public static final String DEFAULT_DATA_TYPE = ContentsDataType.TILES
			.getName();

	/**
	 * Create metadata
	 * 
	 * @return metadata
	 */
	public static TileTableMetadata create() {
		return new TileTableMetadata();
	}

	/**
	 * Create metadata
	 * 
	 * @param autoincrement
	 *            autoincrement ids
	 * @return metadata
	 */
	public static TileTableMetadata create(boolean autoincrement) {
		return new TileTableMetadata(null, autoincrement, null, null, null, -1);
	}

	/**
	 * Create metadata
	 * 
	 * @param tableName
	 *            table name
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata create(String tableName,
			BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(tableName, null, null, tileBoundingBox,
				tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata create(String tableName,
			boolean autoincrement, BoundingBox tileBoundingBox,
			long tileSrsId) {
		return new TileTableMetadata(tableName, autoincrement, null, null,
				tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param tableName
	 *            table name
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata create(String tableName,
			BoundingBox contentsBoundingBox, BoundingBox tileBoundingBox,
			long tileSrsId) {
		return new TileTableMetadata(tableName, contentsBoundingBox, null,
				tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata create(String tableName,
			boolean autoincrement, BoundingBox contentsBoundingBox,
			BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(tableName, autoincrement,
				contentsBoundingBox, null, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param tableName
	 *            table name
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata create(String tableName,
			BoundingBox contentsBoundingBox, long contentsSrsId,
			BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(tableName, contentsBoundingBox,
				contentsSrsId, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata create(String tableName,
			boolean autoincrement, BoundingBox contentsBoundingBox,
			long contentsSrsId, BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(tableName, autoincrement,
				contentsBoundingBox, contentsSrsId, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata createTyped(String dataType,
			String tableName, BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(dataType, tableName, null, null,
				tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata createTyped(String dataType,
			String tableName, boolean autoincrement,
			BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(dataType, tableName, autoincrement, null,
				null, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata createTyped(String dataType,
			String tableName, BoundingBox contentsBoundingBox,
			BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(dataType, tableName, contentsBoundingBox,
				null, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata createTyped(String dataType,
			String tableName, boolean autoincrement,
			BoundingBox contentsBoundingBox, BoundingBox tileBoundingBox,
			long tileSrsId) {
		return new TileTableMetadata(dataType, tableName, autoincrement,
				contentsBoundingBox, null, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata createTyped(String dataType,
			String tableName, BoundingBox contentsBoundingBox,
			long contentsSrsId, BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(dataType, tableName, contentsBoundingBox,
				contentsSrsId, tileBoundingBox, tileSrsId);
	}

	/**
	 * Create metadata
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 * @return metadata
	 */
	public static TileTableMetadata createTyped(String dataType,
			String tableName, boolean autoincrement,
			BoundingBox contentsBoundingBox, long contentsSrsId,
			BoundingBox tileBoundingBox, long tileSrsId) {
		return new TileTableMetadata(dataType, tableName, autoincrement,
				contentsBoundingBox, contentsSrsId, tileBoundingBox, tileSrsId);
	}

	/**
	 * Contents bounding box
	 */
	private BoundingBox contentsBoundingBox;

	/**
	 * Contents SRS id
	 */
	private Long contentsSrsId;

	/**
	 * Tile bounding box
	 */
	private BoundingBox tileBoundingBox;

	/**
	 * Tile SRS id
	 */
	private long tileSrsId = -1;

	/**
	 * Constructor
	 */
	public TileTableMetadata() {

	}

	/**
	 * Constructor
	 * 
	 * @param tableName
	 *            table name
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 */
	public TileTableMetadata(String tableName, BoundingBox contentsBoundingBox,
			Long contentsSrsId, BoundingBox tileBoundingBox, long tileSrsId) {
		this(null, tableName, contentsBoundingBox, contentsSrsId,
				tileBoundingBox, tileSrsId);
	}

	/**
	 * Constructor
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 */
	public TileTableMetadata(String dataType, String tableName,
			BoundingBox contentsBoundingBox, Long contentsSrsId,
			BoundingBox tileBoundingBox, long tileSrsId) {
		this.dataType = dataType;
		this.tableName = tableName;
		this.contentsBoundingBox = contentsBoundingBox;
		this.contentsSrsId = contentsSrsId;
		this.tileBoundingBox = tileBoundingBox;
		this.tileSrsId = tileSrsId;
	}

	/**
	 * Constructor
	 * 
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 */
	public TileTableMetadata(String tableName, boolean autoincrement,
			BoundingBox contentsBoundingBox, Long contentsSrsId,
			BoundingBox tileBoundingBox, long tileSrsId) {
		this(null, tableName, autoincrement, contentsBoundingBox, contentsSrsId,
				tileBoundingBox, tileSrsId);
	}

	/**
	 * Constructor
	 * 
	 * @param dataType
	 *            data type
	 * @param tableName
	 *            table name
	 * @param autoincrement
	 *            autoincrement ids
	 * @param contentsBoundingBox
	 *            contents bounding box
	 * @param contentsSrsId
	 *            contents SRS id
	 * @param tileBoundingBox
	 *            tile bounding box
	 * @param tileSrsId
	 *            tile SRS id
	 */
	public TileTableMetadata(String dataType, String tableName,
			boolean autoincrement, BoundingBox contentsBoundingBox,
			Long contentsSrsId, BoundingBox tileBoundingBox, long tileSrsId) {
		this.dataType = dataType;
		this.tableName = tableName;
		this.autoincrement = autoincrement;
		this.contentsBoundingBox = contentsBoundingBox;
		this.contentsSrsId = contentsSrsId;
		this.tileBoundingBox = tileBoundingBox;
		this.tileSrsId = tileSrsId;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public String getDefaultDataType() {
		return DEFAULT_DATA_TYPE;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public List buildColumns() {

		List tileColumns = getColumns();

		if (tileColumns == null) {
			tileColumns = TileTable.createRequiredColumns(isAutoincrement());
		}

		return tileColumns;
	}

	/**
	 * Get the contents bounding box
	 * 
	 * @return contents bounding box
	 */
	public BoundingBox getContentsBoundingBox() {
		return contentsBoundingBox != null ? contentsBoundingBox
				: getTileBoundingBox();
	}

	/**
	 * Set the contents bounding box
	 * 
	 * @param contentsBoundingBox
	 *            contents bounding box
	 */
	public void setContentsBoundingBox(BoundingBox contentsBoundingBox) {
		this.contentsBoundingBox = contentsBoundingBox;
	}

	/**
	 * Get the contents SRS id
	 * 
	 * @return contents SRS id
	 */
	public long getContentsSrsId() {
		return contentsSrsId != null ? contentsSrsId : getTileSrsId();
	}

	/**
	 * Set the contents SRS id
	 * 
	 * @param contentsSrsId
	 *            SRS id
	 */
	public void setContentsSrsId(Long contentsSrsId) {
		this.contentsSrsId = contentsSrsId;
	}

	/**
	 * Get the tile bounding box
	 * 
	 * @return tile bounding box
	 */
	public BoundingBox getTileBoundingBox() {
		return tileBoundingBox;
	}

	/**
	 * Set the tile bounding box
	 * 
	 * @param tileBoundingBox
	 *            tile bounding box
	 */
	public void setTileBoundingBox(BoundingBox tileBoundingBox) {
		this.tileBoundingBox = tileBoundingBox;
	}

	/**
	 * Get the tile SRS id
	 * 
	 * @return tile SRS id
	 */
	public long getTileSrsId() {
		return tileSrsId;
	}

	/**
	 * Set the tile SRS id
	 * 
	 * @param tileSrsId
	 *            SRS id
	 */
	public void setTileSrsId(long tileSrsId) {
		this.tileSrsId = tileSrsId;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy