From: <rv...@us...> - 2010-06-16 15:01:24
|
Revision: 722 http://treebase.svn.sourceforge.net/treebase/?rev=722&view=rev Author: rvos Date: 2010-06-16 15:01:17 +0000 (Wed, 16 Jun 2010) Log Message: ----------- Fixes for issue 2960840: * we want more information in the "description" elements of search RSS. To this end, a @Transient getDescription() method has been added to the NexmlWritable interface, and a default implementation (which returns an empty string) has been added to AbstractPersistedObject. For the Study object, this method is overridden to return the associated Article's abstract (if available). Some classes already have getDescription() methods based on table columns. To these an @Override annotation has been added. * because there are troublesome characters in some abstracts and titles, a method to deal with these has been added to TreebaseUtil ("removeTroublesomeCharacters"), which is invoked by the Study class to process the abstract and title strings that are returned. * the issue with Safari not displaying RSS seems to have to do with the way the view was previously returned, using new ModelAndView(new RedirectView("templateName"));. It seems that this redirecting doesn't play well with Safari's feed:// pseudoprotocol. By instead just returning new ModelAndView("templateName") this issue seems to be fixed. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/TreebaseUtil.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/AbstractPersistedObject.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/NexmlWritable.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DiscreteCharState.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/GapMode.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/ItemDefinition.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/Matrix.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixDataType.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixKind.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PhyloChar.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PolyTCount.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/StateFormat.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Algorithm.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/CitationStatus.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Software.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Study.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/StudyStatus.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/Taxon.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/TaxonAuthority.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeKind.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeQuality.java trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeType.java trunk/treebase-core/src/test/java/org/cipres/treebase/TBMockObject.java trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchController.java trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchResultsAsRDFController.java trunk/treebase-web/src/main/webapp/WEB-INF/pages/searchResultsAsRDF.jsp Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/TreebaseUtil.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/TreebaseUtil.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/TreebaseUtil.java 2010-06-16 15:01:17 UTC (rev 722) @@ -6,6 +6,11 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CodingErrorAction; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -151,6 +156,25 @@ return buf.toString(); } + public static String removeTroublesomeCharacters(String inString) { + if ( inString == null ) { + return null; + } + StringBuilder newString = new StringBuilder(); + for (int i = 0; i < inString.length(); i++) { + char ch = inString.charAt(i); + // remove any characters outside the valid UTF-8 range as well as all control characters + // except tabs and new lines + if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' || ch == '\r') { + newString.append(ch); + } + } + return newString.toString(); + + } + + + /** * Reads the contents of a file into a string * @param file 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 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/AbstractPersistedObject.java 2010-06-16 15:01:17 UTC (rev 722) @@ -145,4 +145,13 @@ return null; } + /* + * (non-Javadoc) + * @see org.cipres.treebase.domain.NexmlWritable#getDescription() + */ + @Transient + public String getDescription() { + return this.getNamespacedGUID().toString(); + } + } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/NexmlWritable.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/NexmlWritable.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/NexmlWritable.java 2010-06-16 15:01:17 UTC (rev 722) @@ -5,4 +5,5 @@ public interface NexmlWritable { public List<Annotation> getAnnotations (); public String getLabel(); + public String getDescription(); } Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DiscreteCharState.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DiscreteCharState.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/DiscreteCharState.java 2010-06-16 15:01:17 UTC (rev 722) @@ -92,6 +92,7 @@ * * @return String */ + @Override @Column(name = "Description", nullable = true, length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/GapMode.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/GapMode.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/GapMode.java 2010-06-16 15:01:17 UTC (rev 722) @@ -41,6 +41,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/ItemDefinition.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/ItemDefinition.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/ItemDefinition.java 2010-06-16 15:01:17 UTC (rev 722) @@ -40,6 +40,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/Matrix.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/Matrix.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/Matrix.java 2010-06-16 15:01:17 UTC (rev 722) @@ -83,6 +83,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING_NOTES) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixDataType.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixDataType.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixDataType.java 2010-06-16 15:01:17 UTC (rev 722) @@ -57,6 +57,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixKind.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixKind.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/MatrixKind.java 2010-06-16 15:01:17 UTC (rev 722) @@ -58,6 +58,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_100) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PhyloChar.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PhyloChar.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PhyloChar.java 2010-06-16 15:01:17 UTC (rev 722) @@ -53,6 +53,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PolyTCount.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PolyTCount.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/PolyTCount.java 2010-06-16 15:01:17 UTC (rev 722) @@ -40,6 +40,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/StateFormat.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/StateFormat.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/matrix/StateFormat.java 2010-06-16 15:01:17 UTC (rev 722) @@ -40,6 +40,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Algorithm.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Algorithm.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Algorithm.java 2010-06-16 15:01:17 UTC (rev 722) @@ -51,6 +51,7 @@ * * @return String mDescription */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING_NOTES) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/CitationStatus.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/CitationStatus.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/CitationStatus.java 2010-06-16 15:01:17 UTC (rev 722) @@ -71,6 +71,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_50) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Software.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Software.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Software.java 2010-06-16 15:01:17 UTC (rev 722) @@ -45,6 +45,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING_NOTES) public String getDescription() { return mDescription; 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 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/Study.java 2010-06-16 15:01:17 UTC (rev 722) @@ -694,11 +694,20 @@ @Override @Transient + public String getDescription() { + if ( null != getCitation() ) { + return TreebaseUtil.removeTroublesomeCharacters(getCitation().getAbstract()); + } + return ""; + } + + @Override + @Transient public String getLabel() { if ( null != getCitation() ) { - return getCitation().getTitle(); + return TreebaseUtil.removeTroublesomeCharacters(getCitation().getTitle()); } - return getName(); + return TreebaseUtil.removeTroublesomeCharacters(getName()); } @Transient Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/StudyStatus.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/StudyStatus.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/study/StudyStatus.java 2010-06-16 15:01:17 UTC (rev 722) @@ -47,6 +47,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/Taxon.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/Taxon.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/Taxon.java 2010-06-16 15:01:17 UTC (rev 722) @@ -72,6 +72,7 @@ * * @return String */ + @Override @Column(name = "Description", nullable = true, length = TBPersistable.COLUMN_LENGTH_STRING_NOTES) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/TaxonAuthority.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/TaxonAuthority.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/taxon/TaxonAuthority.java 2010-06-16 15:01:17 UTC (rev 722) @@ -55,6 +55,7 @@ * * @return String */ + @Override @Column(name = "Description", nullable = true, length = TBPersistable.COLUMN_LENGTH_STRING_NOTES) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeKind.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeKind.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeKind.java 2010-06-16 15:01:17 UTC (rev 722) @@ -47,6 +47,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_100) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeQuality.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeQuality.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeQuality.java 2010-06-16 15:01:17 UTC (rev 722) @@ -62,6 +62,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeType.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeType.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/domain/tree/TreeType.java 2010-06-16 15:01:17 UTC (rev 722) @@ -59,6 +59,7 @@ * * @return String */ + @Override @Column(name = "Description", length = TBPersistable.COLUMN_LENGTH_STRING) public String getDescription() { return mDescription; Modified: trunk/treebase-core/src/test/java/org/cipres/treebase/TBMockObject.java =================================================================== --- trunk/treebase-core/src/test/java/org/cipres/treebase/TBMockObject.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-core/src/test/java/org/cipres/treebase/TBMockObject.java 2010-06-16 15:01:17 UTC (rev 722) @@ -80,4 +80,9 @@ return null; } + public String getDescription() { + // TODO Auto-generated method stub + return null; + } + } Modified: trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchController.java =================================================================== --- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchController.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchController.java 2010-06-16 15:01:17 UTC (rev 722) @@ -163,7 +163,7 @@ if ( null != root ) { request.getSession().setAttribute("normalizedCQLQuery", URLEncoder.encode(root.toCQL(),"UTF-8")); } - return new ModelAndView(new RedirectView("searchResultsAsRDF.rdf")); + return new ModelAndView("searchResultsAsRDF"); } protected <E extends TBPersistable> SearchResults<E> intersectSearchResults( Modified: trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchResultsAsRDFController.java =================================================================== --- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchResultsAsRDFController.java 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/SearchResultsAsRDFController.java 2010-06-16 15:01:17 UTC (rev 722) @@ -5,16 +5,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.cipres.treebase.NamespacedGUID; -import org.cipres.treebase.PhyloWSPath; -import org.cipres.treebase.TreebaseIDString; import org.cipres.treebase.TreebaseUtil; -import org.cipres.treebase.domain.matrix.Matrix; import org.cipres.treebase.domain.search.SearchResults; import org.cipres.treebase.domain.search.SearchResultsFrozen; -import org.cipres.treebase.domain.search.SearchResultsType; -import org.cipres.treebase.domain.study.Study; -import org.cipres.treebase.domain.tree.PhyloTree; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import org.z3950.zing.cql.CQLNode; Modified: trunk/treebase-web/src/main/webapp/WEB-INF/pages/searchResultsAsRDF.jsp =================================================================== --- trunk/treebase-web/src/main/webapp/WEB-INF/pages/searchResultsAsRDF.jsp 2010-06-15 17:56:12 UTC (rev 721) +++ trunk/treebase-web/src/main/webapp/WEB-INF/pages/searchResultsAsRDF.jsp 2010-06-16 15:01:17 UTC (rev 722) @@ -26,9 +26,9 @@ </image--%> <c:forEach var="result" items="${searchResultsThawed.results}" varStatus="status"> <item rdf:about="${baseURL}<c:out value="${result.phyloWSPath}"/>"> - <title><c:out value="${result.label}"/></title> + <title><![CDATA[<c:out value="${result.label}"/>]]></title> <link>${baseURL}<c:out value="${result.phyloWSPath}"/></link> - <description><c:out value="${result.namespacedGUID}"/></description> + <description><![CDATA[<c:out value="${result.description}"/>]]></description> <c:forEach var="anno" items="${result.annotations}" varStatus="annoStatus"> <<c:out value="${anno.property}"/> xmlns:<c:out value="${anno.prefix}"/>="<c:out value="${anno.URI}"/>"><c:out value="${anno.value}" escapeXml="true"/></<c:out value="${anno.property}"/>> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |