From: <rv...@us...> - 2012-01-19 22:38:23
|
Revision: 1014 http://treebase.svn.sourceforge.net/treebase/?rev=1014&view=rev Author: rvos Date: 2012-01-19 22:38:16 +0000 (Thu, 19 Jan 2012) Log Message: ----------- Adding interface method and implementations for getStudy(). This so we can determine for any object i. whether it logically belongs to a Study (e.g. User objects don't, but trees do) ii. subsequently whether the data object is under embargo. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/AbstractPersistedObject.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/TBPersistable.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DistanceMatrixElement.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixColumn.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixElement.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixRow.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/RowSegment.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalysisStep.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalyzedData.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Study.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/PhyloTreeNode.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeBlock.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/AbstractPersistedObject.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/AbstractPersistedObject.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/AbstractPersistedObject.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -18,6 +18,7 @@ import org.cipres.treebase.PhyloWSPath; import org.cipres.treebase.TreebaseIDString; import org.cipres.treebase.TreebaseUtil; +import org.cipres.treebase.domain.study.Study; import org.hibernate.annotations.GenericGenerator; /** @@ -165,4 +166,12 @@ return this.getNamespacedGUID().toString(); } + /* + * (non-Javadoc) + * @see org.cipres.treebase.domain.TBPersistable#getStudy() + */ + public Study getStudy() { + return null; + } + } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/TBPersistable.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/TBPersistable.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/TBPersistable.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -4,6 +4,7 @@ import org.cipres.treebase.NamespacedGUID; import org.cipres.treebase.PhyloWSPath; import org.cipres.treebase.TreebaseIDString; +import org.cipres.treebase.domain.study.Study; /** * A tagging interface for all persisted treebase objects. @@ -31,11 +32,6 @@ public static final int CITATION_TITLE_COLUMN_LENGTH = 500; public static final int CITATION_ABSTRACT_COLUMN_LENGTH = 10000; - /** - * Return the id. - * - * @return - */ public Long getId(); public TreebaseIDString getTreebaseIDString (); @@ -44,6 +40,20 @@ public PhyloWSPath getPhyloWSPath (); + /** + * Is an object that implements this is logically + * part of a containing object (e.g. a node is part + * of a tree), this method returns that containing + * object. + * @return + */ public TBPersistable getContext (); + + /** + * If an object that implements this logically belongs to a Study, + * this method returns that Study. Otherwise returns null. + * @return + */ + public Study getStudy(); } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DistanceMatrixElement.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DistanceMatrixElement.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DistanceMatrixElement.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -12,6 +12,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy; import org.cipres.treebase.domain.AbstractPersistedObject; +import org.cipres.treebase.domain.study.Study; import org.cipres.treebase.domain.taxon.TaxonLabel; /** @@ -113,5 +114,9 @@ public void setMatrix(DistanceMatrix pNewMatrix) { mMatrix = pNewMatrix; } + + public Study getStudy() { + return getMatrix().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixColumn.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixColumn.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixColumn.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -23,6 +23,7 @@ import org.hibernate.annotations.Index; import org.cipres.treebase.domain.AbstractPersistedObject; +import org.cipres.treebase.domain.study.Study; /** * MatrixColumn.java @@ -153,4 +154,9 @@ if (theMatrix == null) { return null; } return theMatrix.getColumnsReadOnly().indexOf(this); } + + @Transient + public Study getStudy() { + return getMatrix().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixElement.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixElement.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixElement.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -25,6 +25,7 @@ import org.hibernate.annotations.Index; import org.cipres.treebase.domain.AbstractPersistedObject; +import org.cipres.treebase.domain.study.Study; /** * MatrixElement.java @@ -157,4 +158,9 @@ public CharacterMatrix getContext() { return getColumn().getMatrix(); } + + @Transient + public Study getStudy() { + return getContext().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixRow.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixRow.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixRow.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import javax.persistence.AttributeOverride; @@ -28,6 +29,7 @@ import org.cipres.treebase.TreebaseUtil; import org.cipres.treebase.domain.AbstractPersistedObject; +import org.cipres.treebase.domain.study.Study; import org.cipres.treebase.domain.taxon.TaxonLabel; /** @@ -149,10 +151,14 @@ /** * Represents all the elements as symbols in one string. - * For one character one symbol, This can handle 512k size of characters in a matrix. + * This can handle 512k size of characters in a matrix. * * It is precalculated and stored for faster generating nexus blocks. * + * Note that for ambiguous states (e.g. N in a DNA sequence) this + * returns a list of all fundamental states that comprise the ambiguous + * state, i.e. instead of N, this returns {ACGT} + * * @return String */ @Lob @@ -160,6 +166,51 @@ public String getSymbolString() { return mSymbolString; } + + + /** + * Represents all the elements as symbols in one string. + * + * Note that this method post-processes the output of getSymbolString(), i.e. + * if that method returns an {ACGT} this method replaces that with whatever + * ambiguity mapping was provided. E.g. if the map pMapping holds a slot for + * "ACGT" => "N" this method will return that N instead. + * + * @return String + */ + @Transient + public String getSymbolString(Map<String,String> pMapping) { + String inputString = getSymbolString(); + StringBuffer outputString = new StringBuffer(); + List<Character> ambiguous = new ArrayList<Character>(); + boolean isAmbiguous = false; + for ( int i = 0; i < inputString.length(); i++ ) { + char current = inputString.charAt(i); + if ( current == '{' ) { + isAmbiguous = true; + ambiguous.clear(); + continue; + } + if ( current == '}' ) { + isAmbiguous = false; + Collections.sort(ambiguous); + StringBuffer ambigBuffer = new StringBuffer(); + ambigBuffer.append(ambiguous.toArray(new Character[ambiguous.size()])); + String ambigString = ambigBuffer.toString(); + if ( pMapping.containsKey(ambigString) ) { + outputString.append(pMapping.get(ambigString)); + } + continue; + } + if ( isAmbiguous ) { + ambiguous.add(current); + } + else { + outputString.append(current); + } + } + return outputString.toString(); + } /** * Set the SymbolString field. @@ -356,4 +407,9 @@ if (syms == null) { return "(no data)"; } return syms.length() >= DISPLAY_STRING_LENGTH ? syms.substring(0, DISPLAY_STRING_LENGTH) : syms; } + + @Transient + public Study getStudy() { + return getMatrix().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/RowSegment.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/RowSegment.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/RowSegment.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -23,6 +23,7 @@ import org.cipres.treebase.domain.AbstractPersistedObject; import org.cipres.treebase.domain.TBPersistable; import org.cipres.treebase.domain.matrix.RowSegmentService.RowSegmentField; +import org.cipres.treebase.domain.study.Study; import org.cipres.treebase.domain.taxon.SpecimenLabel; import org.cipres.treebase.domain.taxon.TaxonLabel; import org.cipres.treebase.framework.ExecutionResult; @@ -563,4 +564,9 @@ public void setChecked(boolean pChecked) { mChecked = pChecked; } + + @Transient + public Study getStudy() { + return getMatrixRow().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalysisStep.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalysisStep.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalysisStep.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -354,5 +354,10 @@ if (index == -1) return null; return index; } + + @Transient + public Study getStudy() { + return getAnalysis().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalyzedData.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalyzedData.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/AnalyzedData.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -161,4 +161,9 @@ */ @Transient public abstract String getDisplayName(); + + @Transient + public Study getStudy() { + return getAnalysisStep().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Study.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Study.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Study.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -748,5 +748,10 @@ } return annotations; } + + @Transient + public Study getStudy() { + return this; + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/PhyloTreeNode.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/PhyloTreeNode.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/PhyloTreeNode.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -24,6 +24,7 @@ import org.cipres.treebase.TreebaseUtil; import org.cipres.treebase.domain.AbstractPersistedObject; import org.cipres.treebase.domain.TBPersistable; +import org.cipres.treebase.domain.study.Study; import org.cipres.treebase.domain.taxon.TaxonLabel; /** @@ -606,4 +607,9 @@ return getTree(); } */ + + @Transient + public Study getStudy() { + return getTree().getStudy(); + } } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeBlock.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeBlock.java 2012-01-11 17:02:42 UTC (rev 1013) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeBlock.java 2012-01-19 22:38:16 UTC (rev 1014) @@ -346,5 +346,10 @@ } return null; } + + @Transient + public Study getStudy() { + return getContext(); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |