Revision 128317f4
Added by Katja Luther over 2 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonNodeDaoHibernateImpl.java | ||
---|---|---|
1149 | 1149 |
|
1150 | 1150 |
@Override |
1151 | 1151 |
public List<TaxonNodeDto> getTaxonNodeDto(Integer limit, String pattern, UUID classificationUuid) { |
1152 |
String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "(" |
|
1153 |
+ "tn.uuid, tn.id, t.titleCache, rank " |
|
1154 |
+ ") " |
|
1155 |
+ " FROM TaxonNode tn " |
|
1156 |
+ " INNER JOIN tn.taxon AS t " |
|
1157 |
+ " INNER JOIN tn.classification AS cls " |
|
1158 |
+ " INNER JOIN t.name AS name " |
|
1159 |
+ " LEFT OUTER JOIN name.rank AS rank " |
|
1160 |
+ " WHERE t.titleCache LIKE :pattern "; |
|
1152 |
String queryString = getTaxonNodeDtoQuery(); |
|
1153 |
queryString += " INNER JOIN tn.classification AS cls " + " WHERE t.titleCache LIKE :pattern "; |
|
1154 |
|
|
1161 | 1155 |
if(classificationUuid != null){ |
1162 | 1156 |
queryString += "AND cls.uuid = :classificationUuid"; |
1163 | 1157 |
} |
... | ... | |
1171 | 1165 |
|
1172 | 1166 |
@SuppressWarnings("unchecked") |
1173 | 1167 |
List<SortableTaxonNodeQueryResult> result = query.list(); |
1174 |
Collections.sort(result, new SortableTaxonNodeQueryResultComparator());
|
|
1168 |
List<TaxonNodeDto> list = createNodeDtos(result);
|
|
1175 | 1169 |
|
1176 |
List<TaxonNodeDto> list = new ArrayList<>(); |
|
1177 |
for(SortableTaxonNodeQueryResult queryDTO : result){ |
|
1178 |
list.add(new TaxonNodeDto(queryDTO.getTaxonNodeUuid(), queryDTO.getTaxonNodeId(), queryDTO.getTaxonTitleCache())); |
|
1179 |
} |
|
1180 | 1170 |
return list; |
1181 | 1171 |
} |
1182 | 1172 |
|
1183 | 1173 |
@Override |
1184 | 1174 |
public TaxonNodeDto getTaxonNodeDto(UUID nodeUuid) { |
1185 |
String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "(" |
|
1186 |
+ "tn.uuid, tn.id, t.titleCache, name.titleCache, rank " |
|
1187 |
+ ") " |
|
1188 |
+ " FROM TaxonNode tn " |
|
1189 |
+ " INNER JOIN tn.taxon AS t " |
|
1190 |
+ " INNER JOIN t.name AS name " |
|
1191 |
+ " LEFT OUTER JOIN name.rank AS rank " |
|
1192 |
+ " WHERE t.uuid LIKE :uuid "; |
|
1193 |
|
|
1194 |
|
|
1175 |
@SuppressWarnings("unchecked") |
|
1176 |
String queryString = getTaxonNodeDtoQuery(); |
|
1177 |
queryString += " WHERE t.uuid LIKE :uuid "; |
|
1195 | 1178 |
Query query = getSession().createQuery(queryString); |
1196 | 1179 |
|
1197 | 1180 |
query.setParameter("uuid", nodeUuid.toString()); |
... | ... | |
1199 | 1182 |
|
1200 | 1183 |
@SuppressWarnings("unchecked") |
1201 | 1184 |
List<SortableTaxonNodeQueryResult> result = query.list(); |
1202 |
Collections.sort(result, new SortableTaxonNodeQueryResultComparator()); |
|
1203 | 1185 |
|
1204 |
List<TaxonNodeDto> list = new ArrayList<>(); |
|
1205 |
for(SortableTaxonNodeQueryResult queryDTO : result){ |
|
1206 |
list.add(new TaxonNodeDto(queryDTO.getTaxonNodeUuid(), queryDTO.getTaxonNodeId(), queryDTO.getNameTitleCache(), queryDTO.getTaxonTitleCache())); |
|
1207 |
} |
|
1186 |
|
|
1187 |
|
|
1188 |
List<TaxonNodeDto> list = createNodeDtos(result); |
|
1208 | 1189 |
return list.get(0); |
1209 | 1190 |
} |
1210 | 1191 |
|
1211 |
@Override |
|
1212 |
public List<TaxonNodeDto> getTaxonNodeDtos(List<UUID> nodeUuids) { |
|
1192 |
/** |
|
1193 |
* @param nodeUuid |
|
1194 |
* @return |
|
1195 |
*/ |
|
1196 |
private String getTaxonNodeDtoQuery() { |
|
1213 | 1197 |
String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "(" |
1214 | 1198 |
+ "tn.uuid, tn.id, t.titleCache, name.titleCache, rank " |
1215 | 1199 |
+ ") " |
1216 | 1200 |
+ " FROM TaxonNode tn " |
1217 | 1201 |
+ " INNER JOIN tn.taxon AS t " |
1218 | 1202 |
+ " INNER JOIN t.name AS name " |
1219 |
+ " LEFT OUTER JOIN name.rank AS rank " |
|
1220 |
+ " WHERE t.uuid IN (:uuid) "; |
|
1203 |
+ " LEFT OUTER JOIN name.rank AS rank "; |
|
1204 |
|
|
1205 |
return queryString; |
|
1206 |
} |
|
1207 |
|
|
1208 |
|
|
1209 |
|
|
1210 |
@Override |
|
1211 |
public List<TaxonNodeDto> getTaxonNodeDtos(List<UUID> nodeUuids) { |
|
1212 |
String queryString = getTaxonNodeDtoQuery(); |
|
1213 |
queryString = queryString + " WHERE t.uuid IN (:uuid) "; |
|
1221 | 1214 |
|
1222 | 1215 |
|
1223 | 1216 |
Query query = getSession().createQuery(queryString); |
1224 |
// List<String> uuidStrings = nodeUuids.stream().map(e -> e.toString()).collect(Collectors.toList()); |
|
1225 | 1217 |
|
1226 | 1218 |
query.setParameterList("uuid", nodeUuids); |
1227 | 1219 |
|
... | ... | |
1230 | 1222 |
List<SortableTaxonNodeQueryResult> result = query.list(); |
1231 | 1223 |
Collections.sort(result, new SortableTaxonNodeQueryResultComparator()); |
1232 | 1224 |
|
1233 |
List<TaxonNodeDto> list = new ArrayList<>(); |
|
1225 |
List<TaxonNodeDto> list = createNodeDtos(result); |
|
1226 |
|
|
1227 |
return list; |
|
1228 |
} |
|
1229 |
|
|
1230 |
/** |
|
1231 |
* @param result |
|
1232 |
* @param list |
|
1233 |
*/ |
|
1234 |
private List<TaxonNodeDto> createNodeDtos(List<SortableTaxonNodeQueryResult> result) { |
|
1235 |
List<TaxonNodeDto> nodeDtos = new ArrayList<>(); |
|
1236 |
Collections.sort(result, new SortableTaxonNodeQueryResultComparator()); |
|
1234 | 1237 |
for(SortableTaxonNodeQueryResult queryDTO : result){ |
1235 | 1238 |
TaxonNodeDto nodeDto = new TaxonNodeDto(queryDTO.getTaxonNodeUuid(), queryDTO.getTaxonNodeId(), queryDTO.getNameTitleCache(), queryDTO.getTaxonTitleCache(), queryDTO.getNameRank().getOrderIndex()); |
1236 |
|
|
1237 |
list.add(nodeDto); |
|
1239 |
nodeDtos.add(nodeDto); |
|
1238 | 1240 |
} |
1239 |
return list;
|
|
1241 |
return nodeDtos;
|
|
1240 | 1242 |
} |
1241 | 1243 |
|
1242 | 1244 |
@Override |
1243 | 1245 |
public List<TaxonNodeDto> getTaxonNodeForTaxonInClassificationDto(UUID taxonUUID, UUID classificationUuid) { |
1244 |
String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "(" |
|
1245 |
+ "tn.uuid, tn.id, t.titleCache, name.titleCache, rank " |
|
1246 |
+ ") " |
|
1247 |
+ " FROM TaxonNode tn " |
|
1248 |
+ " INNER JOIN tn.taxon AS t " |
|
1249 |
+ " INNER JOIN tn.classification AS cls " |
|
1250 |
+ " INNER JOIN tn.taxon AS t " |
|
1251 |
+ " INNER JOIN t.name AS name " |
|
1252 |
+ " LEFT OUTER JOIN name.rank AS rank " |
|
1253 |
// + " LEFT OUTER JOIN tn.taxon.name.rank AS rank " |
|
1254 |
+ " WHERE t.uuid = :uuid "; |
|
1246 |
String queryString = getTaxonNodeDtoQuery(); |
|
1247 |
queryString = queryString + " INNER JOIN tn.classification AS cls " + " WHERE t.uuid = :uuid "; |
|
1248 |
|
|
1255 | 1249 |
if(classificationUuid != null){ |
1256 | 1250 |
queryString += "AND cls.uuid = :classificationUuid"; |
1257 | 1251 |
} |
1258 | 1252 |
|
1259 | 1253 |
Query query = getSession().createQuery(queryString); |
1260 |
|
|
1261 | 1254 |
query.setParameter("uuid", taxonUUID); |
1255 |
|
|
1262 | 1256 |
if(classificationUuid != null){ |
1263 | 1257 |
query.setParameter("classificationUuid", classificationUuid); |
1264 | 1258 |
} |
1265 | 1259 |
|
1266 | 1260 |
@SuppressWarnings("unchecked") |
1267 | 1261 |
List<SortableTaxonNodeQueryResult> result = query.list(); |
1268 |
Collections.sort(result, new SortableTaxonNodeQueryResultComparator()); |
|
1269 | 1262 |
|
1270 |
List<TaxonNodeDto> list = new ArrayList<>(); |
|
1271 |
for(SortableTaxonNodeQueryResult queryDTO : result){ |
|
1272 |
list.add(new TaxonNodeDto(queryDTO.getTaxonNodeUuid(), queryDTO.getTaxonNodeId(), queryDTO.getNameTitleCache(),queryDTO.getTaxonTitleCache(), queryDTO.getNameRank().getOrderIndex())); |
|
1273 |
} |
|
1263 |
List<TaxonNodeDto> list = createNodeDtos(result); |
|
1264 |
|
|
1274 | 1265 |
return list; |
1275 | 1266 |
} |
1276 | 1267 |
|
Also available in: Unified diff
code cleaning