From: Guanming Wu <gua...@us...> - 2004-11-29 22:11:15
|
Update of /cvsroot/gmod/apollo/src/java/apollo/editor In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6635/apollo/src/java/apollo/editor Modified Files: TransactionManager.java Log Message: bug fixes: exons are cloned during transcript merging Index: TransactionManager.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/editor/TransactionManager.java,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** TransactionManager.java 29 Nov 2004 16:05:48 -0000 1.43 --- TransactionManager.java 29 Nov 2004 22:10:52 -0000 1.44 *************** *** 224,231 **** (tx instanceof AddTransaction) && (tx.getSubpart() == null) && ! (tmp == deletedFeat)) { isNew = true; } ! if (deletedFeat.isAncestorOf(tmp)) it.remove(); } --- 224,233 ---- (tx instanceof AddTransaction) && (tx.getSubpart() == null) && ! (isIdentical(tmp, deletedFeat))) { isNew = true; } ! if (deletedFeat.isAncestorOf(tmp) || ! isIdentical(tmp, deletedFeat)) // deletedFeat might be cloned (e.g. exons ! // during merging) it.remove(); } *************** *** 264,267 **** --- 266,284 ---- /** + * Check if two SeqFeatureI objects reference to the same feature. + * @param feature1 + * @param feature2 + * @return + */ + private boolean isIdentical(SeqFeatureI feature1, SeqFeatureI feature2) { + if (feature1 == feature2) + return true; + if ((feature1.getType().equals(feature2.getType())) && + (feature1.sameRange(feature2))) + return true; + return false; + } + + /** * A helper to determine another Transaction should be coalesced because of * a newly added DeleteTransaction. *************** *** 457,461 **** ExonI exonCopy = (ExonI) changedFeature.clone(); exonCopy.setRefFeature(oldParent); ! // Keep all old information transaction = new DeleteTransaction(exonCopy, oldParent); --- 474,478 ---- ExonI exonCopy = (ExonI) changedFeature.clone(); exonCopy.setRefFeature(oldParent); ! updateExonID(changedFeature); transaction = new DeleteTransaction(exonCopy, oldParent); |