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

📄 geodatabasecastororacle.java

📁 用于GIS(全球地理系统)的分析和处理的代码。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        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, Class featureListClass, GM_Object geom, double dist) {
//		FT_FeatureList result = new FT_FeatureList();
		FT_FeatureCollection result = null;
	  try {
		  result = (FT_FeatureCollection)featureListClass.newInstance();
	  } catch (Exception e)  {
		  e.printStackTrace();
	  }
        if ((FT_Feature.class).isAssignableFrom(featureClass)) {
            // on cherche la liste des identifiants
            List idList = SpatialQuery.loadAllFeatures(this, featureClass, geom, dist);                
            // charge tous les objets dont on a trouve l'identifiant
            Iterator i = idList.iterator();
            while (i.hasNext()) {
                int k = ((BigDecimal)i.next()).intValue();
                try {
                    Object obj = _db.load(featureClass, new Integer(k));   
                    result.add((FT_Feature)obj);
                } catch (Exception e) {
                    e.printStackTrace(); 
                }
            }
        } else {
        _writer.println("loadAllFeatures() : La classe passee en parametre n'est pas une sous-classe de FT_Feature");
        }                
        return result;    
    }   */     
        
    /** 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) {
        List result = new ArrayList();
        QueryResults  results;
        OQLQuery oql;
        try {
            oql = _db.getOQLQuery(query);
            if (param != null) oql.bind(param);
            results = oql.execute();
            while (results.hasMore()) { result.add(results.next());}
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }        */

    
    


    /////////////////////////////////////////////////////////////////////////////////////////
    ///// OQL ///////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    /** Cree une query vide. */
/*    public org.exolab.castor.jdo.Query getQuery() {
        return _db.getQuery();
    }
        
    /** Cree une OQLQuery vide. */
/*    public org.exolab.castor.jdo.OQLQuery getOQLQuery() {
         return _db.getOQLQuery();    
    }
        
    /** Cree une OQLQuery avec la chaine passee en parametre. */
/*    public org.exolab.castor.jdo.OQLQuery getOQLQuery(java.lang.String str) throws org.exolab.castor.jdo.QueryException {
        return _db.getOQLQuery(str);
    }
    
    // pour l'implementation de Geodatabase, n'a rien a voir avec Castor, renvoie null
/*    public org.odmg.OQLQuery newOQLQuery() {
        return null;
    }
 */     

    
    
        
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// Gestion de l'information spatiale /////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////    
    /** Renvoie le tableau des metadonnees. */
    public List getMetadata() {
        return _metadataList;
    }
    
    /** Renvoie les metadonnees de la classe theClass. 
        theClass doit etre une classe definie dans le mapping.*/
    public Metadata getMetadata(Class theClass) {
        for (int i=0; i<_metadataList.size(); i++)
            if (theClass.getName().compareTo(((Metadata)_metadataList.get(i)).getClassName()) == 0)
                return (Metadata)_metadataList.get(i);
        System.out.println("La classe n'est pas dans le fichier de mapping : "+theClass.getName());
        return null;
    }
                
    /** Renvoie les metadonnees de la classe mappee avec la table theTable.
        theTable doit etre une table d?finie dans le mapping. 
        Si theTable est mappee avec plusieurs classes, en renvoie une. */
    public Metadata getMetadata(String theTable) {
        for (int i=0; i<_metadataList.size(); i++)
            if (theTable.compareToIgnoreCase(((Metadata)_metadataList.get(i)).getTableName()) == 0)
                return (Metadata)_metadataList.get(i);
        System.out.println("La table n'est pas dans le fichier de mapping : "+theTable);
        return null;
    }
    
   /** Calcule l'emprise la table mappee avec la classe.
       La classe doit heriter de FT_Feature, la table doit contenir une geometrie. */
    public void mbr(Class clazz) {
//       SpatialQuery.mbr(this, clazz);
    }    
        
   /** Calcule 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) {
//        SpatialQuery.spatialIndex(this, clazz);
    }        
            
        
            
    
    
    /////////////////////////////////////////////////////////////////////////////////////////
    ///// SQL ///////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    /** Renvoie la connection JDBC sous-jacente. */
    public Connection getConnection() {
        return _conn;
    }        
            
    /** Execute une commande SQL.
        Cette commande ne doit pas renvoyer de r?sultat : INSERT, UPDATE, DELETE, mais pas SELECT. */
    public void exeSQL(String query) {
        try {
            Connection conn =getConnection();
            Statement stm = conn.createStatement();
            stm.executeQuery(query);
            stm.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }        
    
    /** Execute une requ?te et met les resultats dans une liste de tableau d'objets.
        Les tableaux ont la taille du nombre d'objets demand?s 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>  */
    public List exeSQLQuery(String query) {
        List result = new ArrayList();
        try {
            Connection conn = getConnection();
            Statement stm = conn.createStatement();
            ResultSet rs = (ResultSet)stm.executeQuery(query);
            ResultSetMetaData rsmd = rs.getMetaData();
            int nbCol = rsmd.getColumnCount();
            while (rs.next()) {
                Object[] array = new Object[nbCol];
                for (int i=1; i<= nbCol; i++)
                    array[i-1] = rs.getObject(i);
                result.add(array);
            }                
            stm.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }          
    
    
    
    

    /////////////////////////////////////////////////////////////////////////////////////////
    ///// 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)  {
        BigDecimal nn = null;
        OQLQuery      tOql;
        QueryResults  results;
        try {
            tOql = _db.getOQLQuery( "SELECT COUNT(*) FROM " + theClass.getName());
            results = tOql.execute();
            while (results.hasMore()) {nn = (BigDecimal)results.next();}
        } catch (Exception e) {
            e.printStackTrace();
        }                
        return nn.intValue();
    }           
    
     /** 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)  {
        BigDecimal nn = null;
        OQLQuery      tOql;
        QueryResults  results;
        try {
            tOql = _db.getOQLQuery( "SELECT MAX(x.id) FROM " + theClass.getName()+" x ");
            results = tOql.execute();
            while (results.hasMore()) {nn = (BigDecimal)results.next();}
        } catch (Exception e) {
            e.printStackTrace();
        }                
        return nn.intValue();            
    }      
                        
   /** Renvoie l'identifiant minimum de la classe theClass.
       ATTENTION : La classe pass?e en param?tre doit avoir un champ "id" de type int (marche pour les FT_Feature).
       A appeler ? l'int?rieur d'une transaction ouverte. */
 /*   public int minId(Class theClass)  {
        BigDecimal nn = null;
        OQLQuery      tOql;
        QueryResults  results;
        try {
            tOql = _db.getOQLQuery( "SELECT MIN(x.id) FROM " + theClass.getName()+" x ");
            results = tOql.execute();
            while (results.hasMore()) {nn = (BigDecimal)results.next();}
        } catch (Exception e) {
            e.printStackTrace();
        }                
        return nn.intValue();            
    }      
   
    
    
    
    public List loadAllElements(Class theClass, GM_Object geom) {
        return null;
    }
    
  */  
        
}

⌨️ 快捷键说明

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