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

org.wikibrain.spatial.dao.SpatialDataDao Maven / Gradle / Ivy

The newest version!
package org.wikibrain.spatial.dao;

import com.vividsolutions.jts.geom.Geometry;
import org.wikibrain.core.dao.DaoException;
import org.wikibrain.core.lang.Language;
import org.wikibrain.spatial.SpatialContainerMetadata;
import org.wikibrain.spatial.constants.Precision;

import java.util.List;
import java.util.Map;

/**
 * Created by Brent Hecht on 12/29/13.
 */
public interface SpatialDataDao {

    /**
     * Gets a geometry by Wikidata item id, layer name, and reference system name.
     * @param itemId
     * @param layerName
     * @param refSysName
     * @return
     * @throws DaoException
     */
    public Geometry getGeometry(int itemId, String layerName, String refSysName) throws DaoException;

    /**
     * Gets a geometry by Wikidata item id and layer name. Assumes "earth" reference system.
     * @param itemId
     * @param layerName
     * @return
     * @throws DaoException
     */
    public Geometry getGeometry(int itemId, String layerName) throws DaoException;

    /**
     * Gets a geometry by Wikidata item id, layer name, and minimum precision. Assumes "earth" reference system.
     * All geometries of shape type greater than point are high precision.
     * @param itemId
     * @param layerName
     * @param minPrecision See definition of LatLonPrecision
     * @return
     * @throws DaoException
     */
    public Geometry getGeometry(int itemId, String layerName, Precision.LatLonPrecision minPrecision) throws DaoException;

    /**
     * Gets a geometry by article name, language, and layer. Assumes "earth" reference system.
     * @param articleName (e.g. "Minnesota", "Minneapolis", "Kalifornien")
     * @param language (e.g. Language.EN, Language.DE)
     * @param layerName (e.g. Layers.STATE)
     * @return the geometry, or null if no geometry could be found
     * @throws DaoException
     */
    public Geometry getGeometry(String articleName, Language language, String layerName) throws DaoException;

    /**
     * Gets a geometry by article name, language, layer, and minimum precision. Assumes "earth" reference system.
     * All geometries of shape type greater than point are high precision.
     * @param articleName
     * @param language
     * @param layerName
     * @param minPrecision See definition of LatLonPrecision
     * @return
     * @throws DaoException
     */
    public Geometry getGeometry(String articleName, Language language, String layerName, Precision.LatLonPrecision minPrecision) throws DaoException;

    /**
     * public Geometry getGeometry(String articleName, Language language, String layerName) throws DaoException;
     * @param articleName (e.g. "Minnesota", "Minneapolis", "Kalifornien")
     * @param language (e.g. Language.EN, Language.DE)
     * @param layerName (e.g. Layers.STATE)
     * @param refSysName (e.g. Layers.EARTH)
     * @return the geometry, or null if no geometry could be found
     * @throws DaoException
     */

    // getGeometry("Minnesota", Language.SIMPLE, "gadm1", "earth");
    public Geometry getGeometry(String articleName, Language language, String layerName, String refSysName) throws DaoException;

    /**
     * Gets all geometries associated with a given Wikidata item id (all layers, all reference systems)
     * @param itemId
     * @return
     * @throws DaoException
     */
    public Map getGeometries(int itemId) throws DaoException;



    /**
     * Gets all the geometries in a given layer.
     * @param layerName
     * @param refSysName
     * @return null if layer does not exist
     * @throws DaoException
     */
    public Map getAllGeometriesInLayer(String layerName, String refSysName) throws DaoException;


    /**
     * Gets all the geometries in a given layer, assumes 'earth' reference system
     * @param layerName
     * @return null if layer does not exist
     * @throws DaoException
     */
    public Map getAllGeometriesInLayer(String layerName) throws DaoException;


    /**
     * Gets all the geometries in a given layer with a minimum precision, assumes 'earth' reference system
     * @param layerName
     * @param minPrecision See definition of LatLonPrecision
     * @return not if layer does not exist
     * @throws DaoException
     */
    public Map getAllGeometriesInLayer(String layerName, Precision.LatLonPrecision minPrecision) throws DaoException;


    /**
     * Gets all geometries in layerName that are not in notInLayers
     * @param layerName
     * @param notInLayers
     * @param refSysName the reference system for both layerName and notInLayers
     * @return null if layer does not exist
     * @throws DaoException
     */
    public Map getAllGeometriesInLayer(String layerName, String[] notInLayers, String refSysName) throws DaoException;


    /**
     *
     * @param idList an iterable of ids of geometries
     * @param layerName
     * @param refSysName the reference system for both layerName and notInLayers
     * @return null if layer does not exist
     * @throws DaoException
     */
    public Map getBulkGeometriesInLayer(List idList, String layerName, String refSysName) throws DaoException;

    /**
     * Gets the names of all loaded reference systems.
     * @return
     * @throws DaoException
     */
    public Iterable getAllRefSysNames() throws DaoException;

    /**
     * Gets the names of all loaded layers.
     * @param refSysName
     * @return
     * @throws DaoException
     */
    public Iterable getAllLayerNames(String refSysName) throws DaoException;

    /**
     * Gets the metadata for a given reference system.
     * @param refSysName
     * @return
     * @throws DaoException
     */
    public SpatialContainerMetadata getReferenceSystemMetadata(String refSysName) throws DaoException;

    /**
     * Gets the metadata for a given layer
     * @param layerName
     * @param refSysName
     * @return
     * @throws DaoException
     */
    public SpatialContainerMetadata getLayerMetadata(String layerName, String refSysName) throws DaoException;

    /**
     * This should be called prior to any saveGeometry() calls.
     * @throws DaoException
     */
    public void beginSaveGeometries() throws DaoException;

    /**
     * This should be called at the end of a spatial data loading process (when all the saveGeometry() calls are completed).
     * Usually will contain indexing and related functionality.
     * @throws DaoException
     */
    public void endSaveGeometries() throws DaoException;

    /**
     * Saves a geometry. Should only occur during a loading process (advanced only).
     * @param itemId
     * @param layerName
     * @param refSysName
     * @param g
     * @throws DaoException
     */
    public void saveGeometry(int itemId, String layerName, String refSysName, Geometry g) throws DaoException;


    /**
     * Removes the layer with the given reference system.
     * @param refSysName
     * @param layerName
     * @throws DaoException
     */
    public void removeLayer(String refSysName, String layerName) throws DaoException;

    /**
     * Optimizes the database, if necessary.
     */
    public void optimize() throws DaoException;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy