⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geodatabase.java

📁 用于GIS(全球地理系统)的分析和处理的代码。
💻 JAVA
字号:
/*
 * This file is part of the GeOxygene project source files. 
 * 
 * GeOxygene aims at providing an open framework which implements OGC/ISO specifications for 
 * the development and deployment of geographic (GIS) applications. It is a open source 
 * contribution of the COGIT laboratory at the Institut G閛graphique National (the French 
 * National Mapping Agency).
 * 
 * See: http://oxygene-project.sourceforge.net 
 *  
 * Copyright (C) 2005 Institut G閛graphique National
 *
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation; 
 * either version 2.1 of the License, or any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY 
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with 
 * this library (see file LICENSE if present); if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *  
 */

package fr.ign.cogit.geoxygene.datatools;


import java.io.File;
import java.sql.Connection;
import java.util.List;

import org.odmg.OQLQuery;

import fr.ign.cogit.geoxygene.feature.FT_FeatureCollection;
import fr.ign.cogit.geoxygene.spatial.geomroot.GM_Object;


/// A revoir plus tard : compatiblite avec la norme JDO...

/**
 * Represente une connection a une base de donnees geographique.
 * Gere la manipulation des donnees via un mappeur objet-relationnel (Castor, OJB).
 *
 * @author Thierry Badard & Arnaud Braun
 * @version 1.1
 * 
 */



public interface Geodatabase  {
	
	
	public static final int ORACLE = 1;
	public static final int POSTGIS = 2;
    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// gestion des transactions //////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////        
    /** Ouvre une transaction. */
    public void begin() ;
    
    /** Commit la transaction sans la fermer. */
    public void checkpoint() ;
        
    /** Commite et ferme la transaction. */
    public void commit() ;
    
    /** Annule et ferme la transaction. */
    public void abort() ;
    
    /** Renvoie true si la transaction est ouverte. */
    public boolean isOpen() ;
    
    /** Ferme la connection (libere les ressources). */
    public void close() ;
            
    /** Vide le cache de la transaction. 
     A appeler a l'interieur d'une transaction ouverte. */    
    public void clearCache() ;

    
    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// gestion de la persistance /////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////        
    /** Rend persistant un objet. 
        A appeler a l'interieur d'une transaction ouverte.*/
    public void makePersistent(Object obj) ;
       
    /** Detruit un objet persistant. 
        A appeler a l'interieur d'une transaction ouverte. */
    public void deletePersistent(Object obj) ;
    
    
    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// chargement d'objets ///////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    /** Charge l'objet d'identifiant id. 
        A utilisser avec precaution, car ne charge pas forcement toutes les relations.
        Passer un Integer pour id, si l'identifiant est un int.
        Renvoie null si l'objet d'identifiant id n'existe pas.
        A appeler a l'interieur d'une transaction ouverte. */
    public java.lang.Object load(Class clazz, Object id) ;
    
    /** Charge tous les objets persistants de la classe theClass et les met dans une liste.
        A appeler a l'interieur d'une transaction ouverte. */
    public List loadAll(Class theClass) ;

	/** Charge tous les FT_Feature de la classe theClass dans la classe FT_FeatureCollection.
		A appeler a l'interieur d'une transaction ouverte. 
		La classe theClass doit etre une sous-classe de FT_Feature, sinon renvoie une liste vide. */
	public FT_FeatureCollection loadAllFeatures(Class featureClass) ;
    
    /** Charge tous les FT_Feature de la classe theClass dans la classe featureListClass.
        A appeler a l'interieur d'une transaction ouverte. 
        La classe theClass doit etre une sous-classe de FT_Feature, sinon renvoie une liste vide.
        La classe featureListClass doit etre un sous classe de FT_FeatureCollection.*/
    public Object loadAllFeatures(Class featureClass, Class featureListClass) ;
        
	/** Charge tous les FT_Feature de la classe theClass intersectant le GM_Object geom, dans la classe FT_FeatureCollection.
		 A appeler a l'interieur d'une transaction ouverte. 
		 La classe theClass doit etre une sous-classe de FT_Feature, sinon renvoie une liste vide. */         
	public FT_FeatureCollection loadAllFeatures(Class featureClass, GM_Object geom) ;

    /** Charge tous les FT_Feature de la classe theClass intersectant le GM_Object geom, dans la classe featureListClass.
         A appeler a l'interieur d'une transaction ouverte. 
         La classe theClass doit etre une sous-classe de FT_Feature, sinon renvoie une liste vide. 
         La classe featureListClass doit etre un sous classe de FT_FeatureCollection.*/         
    public Object loadAllFeatures(Class featureClass, Class featureListClass, GM_Object geom) ;

	/** Charge tous les FT_Feature de la classe theClass a une distance dist du GM_Object geom, dans la classe FT_FeatureCollection.
		Si geom est la geometrie d'un FT_Feature de theClass, alors ce FT_Feature appartiendra au resultat.
		 A appeler a l'interieur d'une transaction ouverte. 
		 La classe theClass doit etre une sous-classe de FT_Feature, sinon renvoie une liste vide.*/         
	public FT_FeatureCollection loadAllFeatures(Class featureClass, GM_Object geom, double dist) ;
    
    /** Charge tous les FT_Feature de la classe theClass a une distance dist du GM_Object geom, dans la classe featureListClass.
        Si geom est la geometrie d'un FT_Feature de theClass, alors ce FT_Feature appartiendra au resultat.
         A appeler a l'interieur d'une transaction ouverte. 
         La classe theClass doit etre une sous-classe de FT_Feature, sinon renvoie une liste vide.
        La classe featureListClass doit etre un sous classe de FT_FeatureCollection.*/         
    public Object loadAllFeatures(Class featureClass, Class featureListClass, GM_Object geom, double dist) ;

    /** Execute la requete OQL query, la lie avec le parametre param, et met le resultat dans une liste.
        A appeler a l'interieur d'une transaction ouverte.  
        On peut passer null pour param, si on ne souhaite lier la requete a aucune variable. */
    public  List loadOQL(String query, Object param) ;
    

    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// OQL ///////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    /** Cree une une nouvelle requete OQL (ODMG). */
    public OQLQuery newOQLQuery() ;
  
    
    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// Gestion de l'information spatiale /////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////    
    /** Renvoie la liste des metadonnees. */
    public List getMetadata() ;
    
    /** Renvoie les metadonnees de la classe theClass. 
        theClass doit etre une classe definie dans le mapping.*/
    public Metadata getMetadata(Class theClass);
    
    /** Renvoie les metadonnees de la classe mappee avec la table theTable.
        theTable doit etre une table definie dans le mapping. 
        Si theTable est mappee avec plusieurs classes, en renvoie une. */
    public Metadata getMetadata(String theTable) ;    
    
   /** Calcule DANS LE SGBD l'emprise la table mappee avec la classe (utile pour Oracle ...).
       La classe doit heriter de FT_Feature, la table doit contenir une geometrie. */
    public void mbr(Class clazz) ;
    
   /** Calcule DANS LE SGBD un index spatial sur la table mappee avec la classe (R-Tree).
       La classe doit heriter de FT_Feature, la table doit contenir une geometrie. */
    public void spatialIndex(Class clazz) ;
        
    
    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// SQL ///////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    /** Renvoie la connection JDBC sous-jacente. */
    public Connection getConnection() ;
    
    /** Renvoie le type de SGBD. */
    public int getDBMS() ;
    
    /** Execute une commande SQL.
        Cette commande ne doit pas renvoyer de resultat : INSERT, UPDATE, DELETE, mais pas SELECT. 
        Utile uniquement pour debugger : on ne doit pas utiliser de SQL direct avec GeOxygene !*/
    public void exeSQL(String query) ;
    
    /** Execute une requete et met les resultats dans une liste de tableau d'objets.
        Les tableaux ont la taille du nombre d'objets demandes dans le SELECT.
        Exemple d'utilisation du resultat : 
        <tt> List edges = db.exeSQLQuery("SELECT edgeID FROM tableName WHERE ..."). </tt>
        Pour recuperer le premier resultat :
        <tt> edgeId = ( (BigDecimal) ((Object[]) (edges.get(0)) )[0] ).intValue(); </tt> 
        Utile uniquement pour debugger : on ne doit pas utiliser de SQL direct avec GeOxygene !*/
    public List exeSQLQuery(String query) ;
    

    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// divers ////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    /** Renvoie le nombre d'objets persistants de la classe theClass.
        A appeler a l'interieur d'une transaction ouverte. */
    public int countObjects(Class theClass)  ;
    
     /** Renvoie l'identifiant maximum de la classe theClass.
        ATTENTION : La classe passee en parametre doit avoir un champ "id" de type int (marche pour les FT_Feature).
        A appeler a l'interieur d'une transaction ouverte. */
    public int maxId(Class theClass)  ;
    
   /** Renvoie l'identifiant minimum de la classe theClass.
       ATTENTION : La classe passee en parametre doit avoir un champ "id" de type int (marche pour les FT_Feature).
       A appeler a l'interieur d'une transaction ouverte. */
    public int minId(Class theClass)  ;
    
	/** Recharger un fichier de mapping qui a ete modifie. */              
	public void refreshRepository(File newRepository) throws Exception ;

    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -