Update of /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv5851/d Modified Files: JdbcChadoAdapter.java PureJDBCTransactionWriter.java AbstractChadoInstance.java ChadoInstance.java Log Message: The comments with the PureJDBCTransactionWriter The comments added in the featureprop table with the cvterm 'comment' (by default) in the feature Property cv. This parameter is configurable in the chado-adaptor.xml: <commentPropertyTerm>comment</commentPropertyTerm> The author of the comment is stored in pub table related to the featureprop table by featureprop_pub. Index: JdbcChadoAdapter.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/JdbcChadoAdapter.java,v retrieving revision 1.173 retrieving revision 1.174 diff -C2 -d -r1.173 -r1.174 *** JdbcChadoAdapter.java 13 Feb 2007 13:35:42 -0000 1.173 --- JdbcChadoAdapter.java 26 Feb 2007 14:14:05 -0000 1.174 *************** *** 3601,3604 **** --- 3601,3606 ---- pkcMap.put("synonym", "synonym_id"); pkcMap.put("feature_relationship", "feature_relationship_id"); + pkcMap.put("featureprop_pub", "featureprop_pub_id"); + pkcMap.put("pub", "pub_id"); // TODO - add remaining tables *************** *** 3983,3986 **** --- 3985,4005 ---- } + public Long insertFeaturepropRow(Long featureId, Long typeId, String value, long rank, boolean checkNextRank) + { + if(checkNextRank) { + Connection c = getConnectionUsedForLastTransaction(); + + try { + String sql = "SELECT MAX(rank)+1 AS next_rank FROM featureprop WHERE feature_id ="+featureId+" AND type_id="+typeId; + ResultSet rs = executeLoggedSelectQuery("getFeaturepropRankId", c, sql); + if(rs.next()) + rank = rs.getLong("next_rank"); + } catch (SQLException sqle) { + logger.error("SQLException getting row id from get Rank ResultSet", sqle); + return null; + } + } + return insertFeaturepropRow(featureId, typeId, value, rank); + } public Long insertFeaturepropRow(Long featureId, Long typeId, String value, long rank) { *************** *** 4009,4013 **** return null; } ! } public Long insertSynonymRowIfNeeded(String name,Long typeId,String synonym_sgml) { --- 4028,4100 ---- return null; } ! } ! ! public Long insertPubRowIfNeeded(String pubUniquename,long pubTypeId) { ! ! Long pubId = getPubId(pubUniquename); ! if(pubId != null) ! return pubId; ! ! String tableName = "pub"; ! HashMap colValues = new HashMap(); ! ! // TODO - add some error checking ! ! // add synonym_id ! long newPubId = addPrimaryKeyColumnValue(tableName, colValues); ! ! // non-NULLable columns ! colValues.put("uniquename", pubUniquename); ! colValues.put("type_id", pubTypeId); ! ! // Unquoted/hard-coded columns ! HashMap unquotedCols =null; ! ! if (insertRow(tableName, colValues, unquotedCols)) { ! return new Long(newPubId); ! } else { ! return null; ! } ! } ! ! private Long getPubId(String uniquename) { ! Connection c = getConnectionUsedForLastTransaction(); ! ! try { ! String sql = "SELECT pub_id FROM pub WHERE uniquename ='"+uniquename+"'"; ! ResultSet rs = executeLoggedSelectQuery("getSynonymId", c, sql); ! if(rs.next()) ! return rs.getLong("pub_id"); ! } catch (SQLException sqle) { ! logger.error("SQLException getting row id from getPubId() ResultSet", sqle); ! return null; ! } ! return null; ! } ! ! public Long insertFeaturepropPubRow(long featPropId, long pubId) { ! ! String tableName = "featureprop_pub"; ! HashMap colValues = new HashMap(); ! ! // TODO - add some error checking ! ! // add feature_synonym_id ! long newFeaturepropPubId = addPrimaryKeyColumnValue(tableName, colValues); ! ! // non-NULLable columns ! colValues.put("featureprop_id", featPropId); ! colValues.put("pub_id", pubId); ! ! // Unquoted/hard-coded columns ! HashMap unquotedCols =null; ! ! if (insertRow(tableName, colValues, unquotedCols)) { ! return new Long(newFeaturepropPubId); ! } else { ! return null; ! } ! } ! public Long insertSynonymRowIfNeeded(String name,Long typeId,String synonym_sgml) { Index: PureJDBCTransactionWriter.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/PureJDBCTransactionWriter.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** PureJDBCTransactionWriter.java 23 Feb 2007 10:58:17 -0000 1.14 --- PureJDBCTransactionWriter.java 26 Feb 2007 14:14:06 -0000 1.15 *************** *** 20,23 **** --- 20,24 ---- import apollo.datamodel.Transcript; import apollo.datamodel.SequenceEdit; + import apollo.datamodel.Comment; import apollo.dataadapter.chado.ChadoAdapter; *************** *** 622,625 **** --- 623,628 ---- if (subpart.isSynonym()) { addSucceeded = addSynonym(feature,t); + } else if(subpart.isComment()) { + addSucceeded = addComment(feature,t); } else { logger.error("not yet implemented - gene AddTransaction with subpart = " + subpart); *************** *** 1137,1140 **** --- 1140,1189 ---- return true; } + /** + Comment strings look like this: + Only one EST supports this alternative transcript::DATE:Mon Feb 26 18:08:49 CET 2007::TS:1172509728919 + + With the author in the pub table + */ + protected boolean addComment (SeqFeatureI feature, AddTransaction t) { + long featId = getChadoFeatureId(feature); + + Comment comment= (Comment) t.getNewSubpartValue(); + + if(comment == null) { + logger.error("Can't insert a comment with a value null"); + return false; + } + String fullText = comment.getText(); + long timeStamp = comment.getTimeStamp(); + String person = comment.getPerson(); + Date date = t.getDate(); + String fullComment =fullText+"::DATE:"+date+"::TS:"+timeStamp; + + String commentTerm = this.jdbcAdapter.getChadoInstance().getCommentPropertyTerm(); + Long commentTypeId = this.jdbcAdapter.getPropertyTypeCVTermId(commentTerm); + if (commentTypeId == null) { + logger.warn("database has no "+commentTerm+" cvterm"); + return false; + } + + String ownerTerm = this.jdbcAdapter.getChadoInstance().getFeatureOwnerPropertyTerm(); + Long ownerTypeId = this.jdbcAdapter.getPropertyTypeCVTermId(ownerTerm); + if (ownerTypeId == null) { + logger.warn("database has no '"+ownerTerm+"' cvterm;"); + return false; + } + boolean checkNextRank = true; + Long commentFpId = this.jdbcAdapter.insertFeaturepropRow(featId, commentTypeId, fullComment, 0,checkNextRank); + if (commentFpId == null) return false; + + Long pubId = this.jdbcAdapter.insertPubRowIfNeeded(person, ownerTypeId); + if (pubId == null) return false; + + Long commentFppubId = this.jdbcAdapter.insertFeaturepropPubRow(commentFpId,pubId); + if (commentFppubId == null) return false; + + return true; + } Index: AbstractChadoInstance.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/AbstractChadoInstance.java,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** AbstractChadoInstance.java 8 Feb 2007 20:53:06 -0000 1.31 --- AbstractChadoInstance.java 26 Feb 2007 14:14:06 -0000 1.32 *************** *** 68,71 **** --- 68,72 ---- private String featureOwnerPropertyTerm = "owner"; private String featureCreateDatePropertyTerm = "date"; + private String commentPropertyTerm = "comment"; // boolean flags *************** *** 312,315 **** --- 313,323 ---- } + public void setCommentPropertyTerm(String commentTerm) { + this.commentPropertyTerm = commentTerm; + } + public String getCommentPropertyTerm() { + return this.commentPropertyTerm; + } + public String getSeqDescriptionCVName() { // use propertyTypeCVName by default for reverse compatability Index: ChadoInstance.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/dataadapter/chado/jdbc/ChadoInstance.java,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** ChadoInstance.java 8 Feb 2007 20:53:06 -0000 1.42 --- ChadoInstance.java 26 Feb 2007 14:14:06 -0000 1.43 *************** *** 270,273 **** --- 270,276 ---- public String getFeatureCreateDatePropertyTerm(); public void setFeatureCreateDatePropertyTerm(String term); + + public void setCommentPropertyTerm(String commentTerm); + public String getCommentPropertyTerm(); // ----------------------------------------------------------------------- |