From: elee <gk...@us...> - 2008-08-13 15:14:38
|
Update of /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv25306/dataadapter/chado/jdbc Modified Files: AbstractChadoInstance.java ChadoInstance.java JdbcChadoAdapter.java Log Message: + Added lookups by synonyms Index: AbstractChadoInstance.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/AbstractChadoInstance.java,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** AbstractChadoInstance.java 8 Jan 2008 19:43:18 -0000 1.39 --- AbstractChadoInstance.java 13 Aug 2008 15:14:46 -0000 1.40 *************** *** 89,92 **** --- 89,94 ---- private StrandedFeatureSet annots; private FeatureLocImplementation topFeatLoc; + + private boolean useSynonyms; protected AbstractChadoInstance() {} *************** *** 170,173 **** --- 172,185 ---- } + public boolean getUseSynonyms() + { + return useSynonyms; + } + + public void setUseSynonyms(boolean useSynonyms) + { + this.useSynonyms = useSynonyms; + } + /** * Return array for all the gene prediction programs. This comes from xml configuration Index: ChadoInstance.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/ChadoInstance.java,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** ChadoInstance.java 6 Dec 2007 01:40:42 -0000 1.47 --- ChadoInstance.java 13 Aug 2008 15:14:46 -0000 1.48 *************** *** 422,425 **** --- 422,428 ---- public boolean getCopyGeneModelsIntoResultTier(); + public boolean getUseSynonyms(); + public void setUseSynonyms(boolean useSynonyms); + // ----------------------------------------------------------------------- // Writeback adapter Index: JdbcChadoAdapter.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/JdbcChadoAdapter.java,v retrieving revision 1.198 retrieving revision 1.199 diff -C2 -d -r1.198 -r1.199 *** JdbcChadoAdapter.java 22 May 2008 01:19:14 -0000 1.198 --- JdbcChadoAdapter.java 13 Aug 2008 15:14:46 -0000 1.199 *************** *** 447,454 **** * loading the sequence and sequence annotations. * ! * @param seqType Name of a sequence type found in the current chado database's cvterm.name column. ! * @param seqId A sequence identifier found in the current chado database's feature.uniquename column. */ public void validateConnectionAndSequence(String seqType, String seqId) throws ApolloAdapterException { Connection conn = getConnection(); --- 447,467 ---- * loading the sequence and sequence annotations. * ! * @param seqType Name of a sequence type found in the current chado database's cvterm.name column. ! * @param seqId A sequence identifier found in the current chado database's feature.uniquename column. */ public void validateConnectionAndSequence(String seqType, String seqId) throws ApolloAdapterException { + validateConnectionAndSequence(seqType, seqId, null); + } + + /** + * Check that the current connection information and the supplied sequence id are both valid. + * Used by the GUI to determine whether it should display an error dialog or proceed to + * loading the sequence and sequence annotations. + * + * @param seqType Name of a sequence type found in the current chado database's cvterm.name column. + * @param seqId A sequence identifier found in the current chado database's feature.uniquename column. + * @param realSeqId StringBuilder that gets updated with actual feature.uniquename (used for synonym lookups). + */ + public void validateConnectionAndSequence(String seqType, String seqId, StringBuilder realSeqId) throws ApolloAdapterException { Connection conn = getConnection(); *************** *** 462,466 **** throw new ApolloAdapterException("No sequence specified - please enter a valid sequence name"); } ! if (!chadoFeatureExists(conn, seqType, seqId)) { logger.error("cannot find seq", new Throwable()); throw new ApolloAdapterException("Cannot find sequence of type '" + seqType + "'" + " with uniquename '" + seqId + "'"); --- 475,479 ---- throw new ApolloAdapterException("No sequence specified - please enter a valid sequence name"); } ! if (!chadoFeatureExists(conn, seqType, seqId, realSeqId)) { logger.error("cannot find seq", new Throwable()); throw new ApolloAdapterException("Cannot find sequence of type '" + seqType + "'" + " with uniquename '" + seqId + "'"); *************** *** 526,529 **** --- 539,570 ---- } + /** Get feature.feature_id by searching against synonyms. Updates the synonym StringBuilder object to feature.uniquename + * which is expected elsewhere. + * + * @param c - Connection object to the database + * @param featType - Chado cvterm.name + * @param synonym - Synonym to be searched + * @param realSeqId - StringBuilder that gets updated with the actual id for the feature + * @return The feature_id of the specified chado feature or -1 if it could not be determined. + */ + protected long getFeatureIdBySynonym(Connection c, String featType, String synonym, StringBuilder realSeqId) + { + long featureId = -1; + try { + //String sql = "SELECT feature_id, uniquename FROM gene_synonym INNER JOIN feature ON (gene_synonym.name = feature.name) WHERE key='" + synonym + "'"; + String sql = "SELECT f.feature_id, f.uniquename FROM feature f INNER JOIN feature_synonym fs ON (f.feature_id = fs.feature_id) INNER JOIN synonym s ON (fs.synonym_id = s.synonym_id) WHERE s.name='" + synonym + "'"; + ResultSet rs = executeLoggedSelectQuery("getFeatureIdBySynonym", c, sql); + if (rs.next()) { + featureId = rs.getLong("feature_id"); + realSeqId.delete(0, realSeqId.length()); + realSeqId.append(rs.getString("uniquename")); + } + } + catch (SQLException sqle) { + logger.error("getFeatureIdBySynonym: SQLException retrieving feature.feature_id for " + synonym, sqle); + } + return featureId; + } + /** * Retrieve the Chado feature.feature_id for a specified feature. *************** *** 587,597 **** * on every feature in the database.) * ! * @param conn JDBC Connection to a Chado-compliant relational database. ! * @param seqType Name of a sequence type found in the current chado database's cvterm.name column. ! * @param seqId A sequence identifier found in the current chado database's feature.uniquename column. ! * @return Whether the specified Chado feature can be found */ public boolean chadoFeatureExists(Connection conn, String seqType, String seqId) { ! long featId = getFeatureId(conn, seqType, seqId); return (featId != -1); } --- 628,657 ---- * on every feature in the database.) * ! * @param conn JDBC Connection to a Chado-compliant relational database. ! * @param seqType Name of a sequence type found in the current chado database's cvterm.name column. ! * @param seqId A sequence identifier found in the current chado database's feature.uniquename column. ! * @return Whether the specified Chado feature can be found */ public boolean chadoFeatureExists(Connection conn, String seqType, String seqId) { ! return chadoFeatureExists(conn, seqType, seqId, null); ! } ! ! /** ! * Check whether a particular feature exists in a given Chado database. Note ! * that this method may return false if the feature exists but is unreadable by ! * the current user (i.e., the specified username may not have SELECT permissions ! * on every feature in the database.) ! * ! * @param conn JDBC Connection to a Chado-compliant relational database. ! * @param seqType Name of a sequence type found in the current chado database's cvterm.name column. ! * @param seqId A sequence identifier found in the current chado database's feature.uniquename column. ! * @param realSeqId StringBuilder object that will get populated with feature.uniquename. ! * @return Whether the specified Chado feature can be found ! */ ! public boolean chadoFeatureExists(Connection conn, String seqType, String seqId, StringBuilder realSeqId) { ! long featId = getFeatureId(conn, seqType, seqId.toString()); ! if (featId == -1 && realSeqId != null && chadoInstance.getUseSynonyms()) { ! featId = getFeatureIdBySynonym(conn, seqType, seqId, realSeqId); ! } return (featId != -1); } |