ref #10222 add nameType and loading to taxon dto and add nameUuid loading
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / portal / PortalDtoServiceImpl.java
index 5ea68e0e3e296c03a014775348479e847a1c13ac..fdc589ff1318b9221c651d83c8562f55036d834f 100644 (file)
@@ -12,12 +12,16 @@ import java.util.List;
 import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.dto.portal.TaxonPageDto;
 import eu.etaxonomy.cdm.api.dto.portal.config.TaxonPageDtoConfiguration;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;
+import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
 
 /**
  * @author a.mueller
@@ -30,9 +34,32 @@ public class PortalDtoServiceImpl implements IPortalDtoService {
     @Autowired
     private ICdmGenericDao dao;
 
+    @Autowired
+    private ITaxonDao taxonDao;
+
+    @Autowired()
+    @Qualifier("cdmRepository")
+    private ICdmRepository repository;
+
     @Override
     public TaxonPageDto taxonPageDto(TaxonPageDtoConfiguration config) {
-        TaxonPageDto dto = new TaxonPageDto();
+
+        PortalDtoLoader loader = new PortalDtoLoader(repository);
+        Taxon taxon = (Taxon)taxonDao.load(config.getTaxonUuid());
+        TaxonPageDto dto = null;
+        try {
+            dto = loader.load(taxon, config);
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        if (dto != null) {
+            return dto;
+        }else if (true) {
+            return dto;
+        }
+
+        dto = new TaxonPageDto();
 
         //taxon data
         String taxonHql = " SELECT t.id as id, t.uuid as uuid, t.titleCache as taxonLabel,"
@@ -40,13 +67,14 @@ public class PortalDtoServiceImpl implements IPortalDtoService {
                 + " FROM Taxon t JOIN t.name as n "
                 + " WHERE t.uuid = :uuid ";
         //TODO singleResult
-        List<Object[]> hqlResult = dao.getHqlResult(taxonHql, new Object[] {config.taxonUuid}, Object[].class);
-        dto.id = (int)hqlResult.get(0)[0];
-        dto.uuid = (UUID)hqlResult.get(0)[1];
-        dto.taxonLabel = (String)hqlResult.get(0)[2];
-        dto.nameLabel = (String)hqlResult.get(0)[3];
-        dto.typedTaxonLabel = null;
-        dto.typedNameLabel = null;
+        List<Object[]> hqlResult = dao.getHqlResult(taxonHql, new Object[] {config.getTaxonUuid()}, Object[].class);
+        dto.setId((int)hqlResult.get(0)[0]);
+        dto.setUuid((UUID)hqlResult.get(0)[1]);
+        dto.setLabel((String)hqlResult.get(0)[2]);
+        dto.setNameLabel((String)hqlResult.get(0)[3]);
+//        dto.setTypedTaxonLabel(null);
+//        dto.setTypedNameLabel(null);
+        dto.setTaggedLabel(null);
 
         //taxonNodes
 
@@ -57,7 +85,7 @@ public class PortalDtoServiceImpl implements IPortalDtoService {
                 + "    n.titleCache as nameLabel, n.homotypicalGroup.uuid "
                 + " FROM Synonym s JOIN s.acceptedTaxon t JOIN s.name as n "
                 + " WHERE t.uuid = :uuid ";
-        List<Object[]> sysnonymsResult = dao.getHqlResult(synonymsHql, new Object[] {config.taxonUuid}, Object[].class);
+        List<Object[]> sysnonymsResult = dao.getHqlResult(synonymsHql, new Object[] {config.getTaxonUuid()}, Object[].class);
 
         //facts