import ca.odell.glazedlists.TreeList;
import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
+import eu.etaxonomy.cdm.api.service.dto.SpecimenRowWrapperDTO;
+import eu.etaxonomy.cdm.api.service.dto.TaxonRowWrapperDTO;
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@Override
public void getPath(List path, Object element) {
- if(element instanceof RowWrapperDTO){
+ if(element instanceof SpecimenRowWrapperDTO
+ && ((SpecimenRowWrapperDTO) element).getDefaultTaxonDescription()!=null){
+ TaxonRowWrapperDTO defaultTaxonDescription = ((SpecimenRowWrapperDTO) element).getDefaultTaxonDescription();
+ addPathRecursive(path, defaultTaxonDescription.getTaxonNode());
+ path.add(defaultTaxonDescription);
+ }
+ else if(element instanceof RowWrapperDTO){
//TODO: check for multiple taxon nodes in multiple classifications
TaxonNode taxonNode = ((RowWrapperDTO) element).getTaxonNode();
addPathRecursive(path, taxonNode);
}
private void addPathRecursive(List path, TaxonNode node){
- if(node.getParent()!=null
+ if(node!=null
+ && node.getParent()!=null
&& node.getTaxon()!=null
&& node.getTaxon().getName()!=null
&& node.getTaxon().getName().getRank()!=null){
Rank rank = node.getTaxon().getName().getRank();
- if(maxRank==null || maxRank.equals(rank)){
+ if(maxRank!=null && maxRank.equals(rank)){
path.add(node);
return;
}
@Override
public boolean allowsChildren(Object element) {
- if(element instanceof TaxonNode){
- return true;
- }
- return false;
+ return true;
}
@Override