22 |
22 |
import java.util.stream.Collectors;
|
23 |
23 |
|
24 |
24 |
import org.apache.log4j.Logger;
|
25 |
|
import org.hibernate.Query;
|
26 |
25 |
import org.springframework.beans.factory.annotation.Autowired;
|
27 |
26 |
import org.springframework.security.core.Authentication;
|
28 |
27 |
import org.springframework.stereotype.Service;
|
... | ... | |
90 |
89 |
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao;
|
91 |
90 |
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeFilterDao;
|
92 |
91 |
import eu.etaxonomy.cdm.persistence.dto.HomotypicGroupDto;
|
93 |
|
import eu.etaxonomy.cdm.persistence.dto.SortableTaxonNodeQueryResult;
|
94 |
|
import eu.etaxonomy.cdm.persistence.dto.SortableTaxonNodeQueryResultComparator;
|
95 |
92 |
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
|
96 |
93 |
import eu.etaxonomy.cdm.persistence.permission.ICdmPermissionEvaluator;
|
97 |
94 |
import eu.etaxonomy.cdm.persistence.query.OrderHint;
|
... | ... | |
1449 |
1446 |
|
1450 |
1447 |
@Override
|
1451 |
1448 |
public TaxonNodeDto getTaxonNodeDto(UUID nodeUuid) {
|
1452 |
|
String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "("
|
1453 |
|
+ "tn.uuid, tn.id, t.titleCache, name.titleCache, rank "
|
1454 |
|
+ ") "
|
1455 |
|
+ " FROM TaxonNode tn "
|
1456 |
|
+ " INNER JOIN tn.taxon AS t "
|
1457 |
|
+ " INNER JOIN t.name AS name "
|
1458 |
|
+ " LEFT OUTER JOIN name.rank AS rank "
|
1459 |
|
+ " WHERE t.uuid LIKE :uuid ";
|
1460 |
|
|
1461 |
|
|
1462 |
|
Query query = getSession().createQuery(queryString);
|
1463 |
|
|
1464 |
|
query.setParameter("uuid", nodeUuid.toString());
|
1465 |
|
|
1466 |
|
|
1467 |
|
@SuppressWarnings("unchecked")
|
1468 |
|
List<SortableTaxonNodeQueryResult> result = query.list();
|
1469 |
|
Collections.sort(result, new SortableTaxonNodeQueryResultComparator());
|
1470 |
|
|
1471 |
|
List<TaxonNodeDto> list = new ArrayList<>();
|
1472 |
|
for(SortableTaxonNodeQueryResult queryDTO : result){
|
1473 |
|
list.add(new TaxonNodeDto(queryDTO.getTaxonNodeUuid(), queryDTO.getTaxonNodeId(), queryDTO.getNameTitleCache(), queryDTO.getTaxonTitleCache()));
|
1474 |
|
}
|
1475 |
|
return list.get(0);
|
|
1449 |
return dao.getTaxonNodeDto(nodeUuid);
|
1476 |
1450 |
}
|
1477 |
1451 |
|
1478 |
1452 |
@Override
|
1479 |
1453 |
public List<TaxonNodeDto> getTaxonNodeDtos(List<UUID> nodeUuids) {
|
1480 |
|
String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "("
|
1481 |
|
+ "tn.uuid, tn.id, t.titleCache, name.titleCache, rank "
|
1482 |
|
+ ") "
|
1483 |
|
+ " FROM TaxonNode tn "
|
1484 |
|
+ " INNER JOIN tn.taxon AS t "
|
1485 |
|
+ " INNER JOIN t.name AS name "
|
1486 |
|
+ " LEFT OUTER JOIN name.rank AS rank "
|
1487 |
|
+ " WHERE t.uuid IN (:uuid) ";
|
1488 |
|
|
1489 |
|
|
1490 |
|
Query query = getSession().createQuery(queryString);
|
1491 |
|
// List<String> uuidStrings = nodeUuids.stream().map(e -> e.toString()).collect(Collectors.toList());
|
1492 |
|
|
1493 |
|
query.setParameterList("uuid", nodeUuids);
|
1494 |
|
|
1495 |
|
|
1496 |
|
@SuppressWarnings("unchecked")
|
1497 |
|
List<SortableTaxonNodeQueryResult> result = query.list();
|
1498 |
|
Collections.sort(result, new SortableTaxonNodeQueryResultComparator());
|
1499 |
|
|
1500 |
|
List<TaxonNodeDto> list = new ArrayList<>();
|
1501 |
|
for(SortableTaxonNodeQueryResult queryDTO : result){
|
1502 |
|
TaxonNodeDto nodeDto = new TaxonNodeDto(queryDTO.getTaxonNodeUuid(), queryDTO.getTaxonNodeId(), queryDTO.getNameTitleCache(), queryDTO.getTaxonTitleCache(), queryDTO.getNameRank().getOrderIndex());
|
1503 |
|
|
1504 |
|
list.add(nodeDto);
|
1505 |
|
}
|
1506 |
|
return list;
|
|
1454 |
return dao.getTaxonNodeDtos(nodeUuids);
|
1507 |
1455 |
}
|
1508 |
1456 |
}
|
code cleaning, move hql queries to dao