/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.inbio.ara.webService.taxonomy;
import java.util.List;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ejb.Stateless;
import org.inbio.ara.dto.inventory.TaxonDTO;
import org.inbio.ara.dto.inventory.TaxonomicalRangeDTO;
import org.inbio.ara.facade.taxonomy.TaxonomyFacadeRemote;
/**
*
* @author gsulca
*/
@WebService()
@Stateless()
public class TaxonomyWebService {
//Injection
@EJB
private TaxonomyFacadeRemote taxonFacade;
/**
* Web service
*/
@WebMethod(operationName = "getTaxonByGatheringObservation")
public String getTaxonByGatheringObservation(@WebParam(name = "gathObsId")
String gathObsId) {
List<String> scientificNames = taxonFacade.getDefaultNameByGathObsId(Long.parseLong(gathObsId));
String result = scientificNames.toString();
return result.substring(1, result.length()-1);
}
@WebMethod(operationName = "getTaxonRootByCollectionId")
public String getTaxonRootByCollectionId(@WebParam(name = "collectionId")
String collectionId) {
TaxonDTO taxonRoot = taxonFacade.getTaxonRootByCollectionId(new Long(collectionId));
TaxonomicalRangeDTO taxonomicalName = taxonFacade.getTaxonRangeName(taxonRoot.getTaxonomicalRangeId());
String result = "<taxonRoot>";
if(taxonRoot != null){
result += "<taxon>";
result += "<id>"+taxonRoot.getTaxonKey()+"</id>";
result += "<name><![CDATA["+taxonRoot.getCurrentName()+" ("+taxonomicalName.getName()+")]]>"+"</name>";
result += "</taxon>\n";
}
result += "</taxonRoot>";
return result;
}
@WebMethod(operationName = "getChildrenByTaxonId")
public List<TaxonDTO> getChildrenByTaxonId(@WebParam(name = "taxonId")
String taxonId) {
List<TaxonDTO> children = taxonFacade.getTaxonChildren(new Long(taxonId));
//System.out.println("children = "+children);
for(TaxonDTO child: children)
{
TaxonomicalRangeDTO taxonomicalName = taxonFacade.getTaxonRangeName(child.getTaxonomicalRangeId());
child.setCurrentName(child.getCurrentName()+" ("+taxonomicalName.getName()+")");
}
/*
String result = "<taxonomy>";
if(children != null){
for(TaxonDTO child: children)
{
TaxonomicalRangeDTO taxonomicalName = taxonFacade.getTaxonRangeName(child.getTaxonomicalRangeId());
result += "<taxon>";
result += "<id>"+child.getTaxonKey()+"</id>";
result += "<name><![CDATA["+child.getCurrentName()+" ("+taxonomicalName.getName()+")]]>"+"</name>";
result += "</taxon>\n";
}
}
result += "</taxonomy>";
return result;
*/
return children;
}
@WebMethod(operationName = "getAllTaxonByRange")
public String getAllTaxonByRange(@WebParam(name = "rangeId")
String rangeId) {
List<TaxonDTO> taxonDTOList = taxonFacade.getAllTaxonByRange(new Long(rangeId));
//System.out.println("taxonDTOList = "+taxonDTOList);
String result = "<taxonomy>";
if(taxonDTOList != null){
for(TaxonDTO taxonDTO : taxonDTOList){
TaxonomicalRangeDTO taxonomicalName = taxonFacade.getTaxonRangeName(taxonDTO.getTaxonomicalRangeId());
result += "<taxon>";
result += "<id>"+taxonDTO.getTaxonKey()+"</id>";
result += "<name>"+taxonDTO.getCurrentName()+" ("+taxonomicalName.getName()+")"+"</name>";
result += "</taxon>\n";
}
}
result += "</taxonomy>";
return result;
}
@WebMethod(operationName = "getNextLevelsByTaxon")
public String getNextLevelsByTaxon(@WebParam(name = "taxonId")
String taxonId) {
List<TaxonomicalRangeDTO> taxonomicalRangeDTOList = taxonFacade.getNextLevelsByTaxonId(new Long(taxonId));
String result = "<taxonomyRanges>";
if(taxonomicalRangeDTOList != null){
for(TaxonomicalRangeDTO taxonomicalRange : taxonomicalRangeDTOList){
result += "<taxonRange>";
result += "<id>"+taxonomicalRange.getTaxonomicalRangeKey()+"</id>";
result += "<name>"+taxonomicalRange.getName()+"</name>";
result += "</taxonRange>\n";
}
}
result += "</taxonomyRanges>";
return result;
}
}