📄 geodatabasecastororacle.java
字号:
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 + -