// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
//
// Contact: phylosoft @ gmail . com
-// WWW: www.phylosoft.org/forester
+// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
package org.forester.phylogeny.data;
import org.forester.io.parsers.phyloxml.PhyloXmlDataFormatException;
import org.forester.io.parsers.phyloxml.PhyloXmlMapping;
import org.forester.io.parsers.phyloxml.PhyloXmlUtil;
-import org.forester.util.ForesterConstants;
import org.forester.util.ForesterUtil;
public class Taxonomy implements PhylogenyData, MultipleUris, Comparable<Taxonomy> {
-
-
private String _scientific_name;
private String _common_name;
private List<String> _synonyms;
public boolean isEmpty() {
return ( ( getIdentifier() == null ) && ForesterUtil.isEmpty( getTaxonomyCode() )
- && ForesterUtil.isEmpty( getCommonName() ) && ForesterUtil.isEmpty( getScientificName() )
- && ForesterUtil.isEmpty( getRank() ) && ForesterUtil.isEmpty( _uris )
- && ForesterUtil.isEmpty( getAuthority() ) && ForesterUtil.isEmpty( _synonyms ) && ForesterUtil
+ && ForesterUtil.isEmpty( getCommonName() ) && ForesterUtil.isEmpty( getScientificName() ) && ForesterUtil
.isEmpty( _lineage ) );
}
else if ( !ForesterUtil.isEmpty( getCommonName() ) && !ForesterUtil.isEmpty( tax.getCommonName() ) ) {
return getCommonName().equalsIgnoreCase( tax.getCommonName() );
}
- else if ( !ForesterUtil.isEmpty( getScientificName() ) && !ForesterUtil.isEmpty( tax.getCommonName() ) ) {
- return getScientificName().equalsIgnoreCase( tax.getCommonName() );
- }
- else if ( !ForesterUtil.isEmpty( getCommonName() ) && !ForesterUtil.isEmpty( tax.getScientificName() ) ) {
- return getCommonName().equalsIgnoreCase( tax.getScientificName() );
- }
- throw new RuntimeException( "comparison not possible with empty fields" );
+ //throw new RuntimeException( "comparison not possible with empty fields" );
+ return false;
}
public void setAuthority( final String authority ) {
_synonyms = synonyms;
}
- public void setTaxonomyCode( final String taxonomy_code ) throws PhyloXmlDataFormatException {
- if ( ForesterConstants.TAXONOMY_CODE_STRICT ) {
- if ( !ForesterUtil.isEmpty( taxonomy_code )
- && !PhyloXmlUtil.TAXOMONY_CODE_PATTERN_STRICT.matcher( taxonomy_code ).matches() ) {
- throw new PhyloXmlDataFormatException( "illegal taxonomy code: [" + taxonomy_code + "]" );
- }
+ public void setTaxonomyCode( String taxonomy_code ) throws PhyloXmlDataFormatException {
+ if ( !ForesterUtil.isEmpty( taxonomy_code )
+ && !PhyloXmlUtil.TAXOMONY_CODE_PATTERN.matcher( taxonomy_code ).matches() ) {
+ throw new PhyloXmlDataFormatException( "illegal taxonomy code: [" + taxonomy_code + "]" );
}
- else {
- if ( !ForesterUtil.isEmpty( taxonomy_code )
- && !PhyloXmlUtil.TAXOMONY_CODE_PATTERN_LAX.matcher( taxonomy_code ).matches() ) {
- throw new PhyloXmlDataFormatException( "illegal taxonomy code: [" + taxonomy_code + "]" );
- }
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //TODO FIXME (added on 13-11-18) remove me eventually
+ if ( taxonomy_code.equals( "ACIBL" ) ) {
+ taxonomy_code = "KORVE";
+ }
+ else if ( taxonomy_code.equals( "PYRKO" ) ) {
+ taxonomy_code = "THEKO";
}
+ //TODO FIXME (added on 13-11-18) remove me eventually
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_taxonomy_code = taxonomy_code;
}
if ( equals( o ) ) {
return 0;
}
- else if ( !ForesterUtil.isEmpty( getScientificName() ) && !ForesterUtil.isEmpty( o.getScientificName() ) ) {
+ if ( ( getIdentifier() != null ) && ( o.getIdentifier() != null )
+ && !ForesterUtil.isEmpty( getIdentifier().getValue() )
+ && !ForesterUtil.isEmpty( o.getIdentifier().getValue() ) ) {
+ final int x = getIdentifier().getValuePlusProvider().compareTo( o.getIdentifier().getValuePlusProvider() );
+ if ( x != 0 ) {
+ return x;
+ }
+ }
+ if ( !ForesterUtil.isEmpty( getScientificName() ) && !ForesterUtil.isEmpty( o.getScientificName() ) ) {
return getScientificName().compareToIgnoreCase( o.getScientificName() );
}
- else if ( !ForesterUtil.isEmpty( getCommonName() ) && !ForesterUtil.isEmpty( o.getCommonName() ) ) {
+ if ( !ForesterUtil.isEmpty( getCommonName() ) && !ForesterUtil.isEmpty( o.getCommonName() ) ) {
return getCommonName().compareToIgnoreCase( o.getCommonName() );
}
- else if ( !ForesterUtil.isEmpty( getTaxonomyCode() ) && !ForesterUtil.isEmpty( o.getTaxonomyCode() ) ) {
+ if ( !ForesterUtil.isEmpty( getTaxonomyCode() ) && !ForesterUtil.isEmpty( o.getTaxonomyCode() ) ) {
return getTaxonomyCode().compareToIgnoreCase( o.getTaxonomyCode() );
}
- return 0;
+ if ( ( getIdentifier() != null ) && ( o.getIdentifier() != null )
+ && !ForesterUtil.isEmpty( getIdentifier().getValue() )
+ && !ForesterUtil.isEmpty( o.getIdentifier().getValue() ) ) {
+ return getIdentifier().getValuePlusProvider().compareTo( o.getIdentifier().getValuePlusProvider() );
+ }
+ return 1;
}
public void setLineage( final List<String> lineage ) {