Project

General

Profile

« Previous | Next » 

Revision 0ccecb37

Added by Andreas Müller over 3 years ago

ref #1447 latest changes to PesiFindIdenticalNamesActivator and PesiEuroMedValidator

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/app/pesi/merging/PesiFindIdenticalNamesActivator.java
75 75
	private static Map<UUID,String> sourcesLabels = new HashMap<>();
76 76

  
77 77
    static {
78
        sourceRefUuids.addAll(Arrays.asList(new UUID[]{emSourceUuid, ermsSourceUuid, faunaEuSourceUuid, ifSourceUuid}));
78
        sourceRefUuids.addAll(Arrays.asList(new UUID[]{
79
//                emSourceUuid,
80
                ermsSourceUuid
81
                ,faunaEuSourceUuid
82
//              ,  ifSourceUuid
83
        }));
79 84
        sourcesLabels.put(emSourceUuid, "E+M");
80 85
        sourcesLabels.put(ermsSourceUuid, "ERMS");
81 86
        sourcesLabels.put(faunaEuSourceUuid, "FauEu");
......
201 206
                                differenceExists |= isDifferent(merge1, merge2, method);
202 207
                            }
203 208
                        }
209
                        int combinations = mergeList1.size() * mergeList2.size();
204 210
                        if (differenceExists){
205 211
                            for (PesiMergeObject merge1 : mergeList1){
206 212
                                for (PesiMergeObject merge2 : mergeList2){
207
                                    writeCsvLine(writer, merge1, merge2, method, isNextNameCache);
213
                                    writeCsvLine(writer, merge1, merge2, method, isNextNameCache, combinations);
208 214
                                    isNextNameCache = false;
209 215
                                }
210 216
                            }
......
225 231

  
226 232
        try {
227 233
            if (method == null){
228
                return true;
234
                return !merge1.getIdTaxon().equals(merge2.getIdTaxon());
229 235
            }
230 236
            Object value1 = method.invoke(merge1);
231 237
            Object value2 = method.invoke(merge2);
......
243 249
            writeHeaderPair(writer, "tid");
244 250
            writer.append("use;");
245 251
            writer.append("nameUse;");
246
            writer.append("next;");
252
            writer.append("combinations;");
247 253
            writer.append("diff;");
248 254
            writeHeaderPair(writer, "src");
249 255
//            writeHeaderPair(writer, "nuuid");
......
252 258
            writeHeaderPair(writer, "author");
253 259
            writeHeaderPair(writer, "nom.ref.");
254 260
            writeHeaderPair(writer, "rank");
261
            writeHeaderPair(writer, "classification");
255 262
            writeHeaderPair(writer, "kingdom");
256 263
            writeHeaderPair(writer, "phylum");
264
            writeHeaderPair(writer, "class");
265
            writeHeaderPair(writer, "order");
257 266
            writeHeaderPair(writer, "family");
258 267
            writeHeaderPair(writer, "parentString");
259 268
            writeHeaderPair(writer, "parentRankString");
260 269
            writeHeaderPair(writer, "status");
261 270
            writeHeaderPair(writer, "tuuid");
271
            writer.append("firstAuthor;");
272
            writer.append("firstRank;");
273
            writer.append("firstClassification;");
274
            writer.append("firstKingdom;");
275
            writer.append("firstPhylum;");
276
            writer.append("firstClass;");
277
            writer.append("firstOrder;");
278
            writer.append("firstFamily;");
279
            writer.append("firstStatus;");
262 280

  
263 281
            writer.append('\n');
264 282
        } catch (IOException e) {
......
271 289
        writer.append(header+"2").append(';');
272 290
    }
273 291

  
292
    //needs to be synchronized with writeHeader()
274 293
    private void writeCsvLine(Writer writer,
275 294
           PesiMergeObject merge1, PesiMergeObject merge2,
276
           Method method, boolean isNextNameCache){
295
           Method method, boolean isNextNameCache, int combinations){  //isNextNameCache probably not needed anymore
277 296

  
278 297
        writePair(writer, merge1, merge2, "IdTaxon", Compare.NO);
279 298
        writeSingleValue(writer, "");
280 299
        writeSingleValue(writer, "");
281
        writeSingleValue(writer, isNextNameCache?"1":"0");
300
//        writeSingleValue(writer, isNextNameCache?"1":"0");
301
        writeSingleValue(writer, String.valueOf(combinations));
282 302
        boolean different = isDifferent(merge1,  merge2, method);
283 303
        writeSingleValue(writer, different?"1":"0");
284 304
        writeSingleValue(writer, sourcesLabels.get(UUID.fromString(merge1.getUuidSource())));
......
290 310
        writePair(writer, merge1, merge2, "Author", Compare.YES);
291 311
        writePair(writer, merge1, merge2, "NomenclaturalReference", Compare.YES);
292 312
        writePair(writer, merge1, merge2, "Rank", Compare.YES);
293
        writePair(writer, merge1, merge2, "KingdomCache", Compare.KEEP_FIRST);
313
        writePair(writer, merge1, merge2, "ClassificationCache", Compare.YES);
314
        writePair(writer, merge1, merge2, "KingdomCache", Compare.YES);
294 315
        writePair(writer, merge1, merge2, "PhylumCache", Compare.YES);
316
        writePair(writer, merge1, merge2, "ClassCache", Compare.YES);
317
        writePair(writer, merge1, merge2, "OrderCache", Compare.YES);
295 318
        writePair(writer, merge1, merge2, "FamilyCache", Compare.YES);
296 319
        writePair(writer, merge1, merge2, "ParentString", Compare.YES);
297 320
        writePair(writer, merge1, merge2, "ParentRankString", Compare.YES);
298 321
        writePair(writer, merge1, merge2, "StatusStr", Compare.YES);
299 322
        writePair(writer, merge1, merge2, "UuidTaxon", Compare.YES);
323
        writeSingleValue(writer, merge1.getAuthor());
324
        writeSingleValue(writer, merge1.getRank());
325
        writeSingleValue(writer, merge1.getClassificationCache());
326
        writeSingleValue(writer, merge1.getKingdomCache());
327
        writeSingleValue(writer, merge1.getPhylumCache());
328
        writeSingleValue(writer, merge1.getClassCache());
329
        writeSingleValue(writer, merge1.getOrderCache());
330
        writeSingleValue(writer, merge1.getFamilyCache());
331
        writeSingleValue(writer, merge1.getStatusStr());
332

  
300 333

  
301 334
        try {
302 335
            writer.append('\n');
......
319 352
        KEEP_FIRST;
320 353

  
321 354
        boolean isAnyCompare(){
322
            return this == NO;
355
            return this != NO;
323 356
        }
324 357
    }
325 358

  
......
342 375
    }
343 376

  
344 377
    private String normalize(String val) {
345
        return CdmUtils.Nz(val).replace(";", "@");
378
        return Nz(val).replace(";", "@");
346 379
    }
347 380

  
348 381
    private List<Map<UUID,List<PesiMergeObject>>> createMergeObjects(
......
403 436
                    //rank
404 437
                    mergeObject.setRank(name.getRank().getLabel());
405 438

  
439
                    //higherTaxa
440
                    List<TaxonNodeDto> higherTaxa = getHigherTaxa(appCtr, name);
441
                    mergeObject.setHigherClassification(higherTaxa);
442

  
406 443
                    //Kingdom
407 444
                    TaxonNodeDto kingdom = getHigherTaxon(appCtr, name, Rank.KINGDOM());
408 445
                    mergeObject.setKingdom(kingdom);
......
414 451
                    }
415 452
                    mergeObject.setPhylum(phylum);
416 453

  
454
                    //Class
455
                    TaxonNodeDto tclass = getHigherTaxon(appCtr, name, Rank.CLASS());
456
                    mergeObject.setTClass(tclass);
457

  
458
                    //Class
459
                    TaxonNodeDto order = getHigherTaxon(appCtr, name, Rank.ORDER());
460
                    mergeObject.setOrder(order);
461

  
417 462
                    //Family
418 463
                    TaxonNodeDto family = getHigherTaxon(appCtr, name, Rank.FAMILY());
419 464
                    mergeObject.setFamily(family);
......
504 549
        }
505 550
    }
506 551

  
552
    private List<TaxonNodeDto> getHigherTaxa(CdmApplicationController appCtr, TaxonName name) {
553
        List<TaxonNodeDto> result = new ArrayList<>();
554
        Taxon taxon = getAcceptedTaxon(name);
555
        if (taxon.getTaxonNodes().isEmpty()){
556
            return null;  //probably MAN
557
        }
558
        if (taxon.getTaxonNodes().size()>1){
559
            logger.warn("More than 1 node not yet handled for getHigherTaxon. Take arbitrary one.");
560
        }
561
        TaxonNode node = taxon.getTaxonNodes().iterator().next();
562
        TaxonNodeDto nodeDto = new TaxonNodeDto(node);
563
        if (!taxon.getName().equals(name)){
564
            result.add(nodeDto);  //for synonyms add accepted taxon as first node
565
        }
566
        while (nodeDto.getTaxonUuid()!= null){
567
            nodeDto = appCtr.getTaxonNodeService().parentDto(nodeDto.getUuid());
568
            if (nodeDto.getTaxonUuid()!= null){
569
                result.add(0, nodeDto);  //for synonyms add accepted taxon as first node
570
            }
571
        }
572
        return result;
573
    }
574

  
507 575
    private TaxonNodeDto getHigherTaxon(CdmApplicationController appCtr, TaxonName name, Rank rank) {
508 576
        if (name.getRank().equals(rank)) {
509 577
            Taxon taxon = getAcceptedTaxon(name);
......
607 675
        return result;
608 676
    }
609 677

  
610
    private CharSequence Nz(String str) {
678
    private String Nz(String str) {
611 679
        return CdmUtils.Nz(str);
612 680
    }
613 681

  

Also available in: Unified diff