Project

General

Profile

« Previous | Next » 

Revision 14a417c9

Added by Andreas Müller almost 4 years ago

allow exceptions in DeleteNonReferencedReferencesUpdater

View differences:

cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/operation/DeleteNonReferencedReferencesUpdater.java
8 8
*/
9 9
package eu.etaxonomy.cdm.io.operation;
10 10

  
11
import java.util.ArrayList;
11 12
import java.util.List;
12 13

  
13 14
import org.springframework.stereotype.Component;
......
17 18
import eu.etaxonomy.cdm.io.common.DefaultImportState;
18 19
import eu.etaxonomy.cdm.io.operation.config.DeleteNonReferencedReferencesConfigurator;
19 20
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
21
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
20 22
import eu.etaxonomy.cdm.model.reference.Reference;
23
import eu.etaxonomy.cdm.persistence.query.OrderHint;
21 24

  
22 25
/**
23 26
 * @author k.luther
......
31 34
    @Override
32 35
	protected void doInvoke(DefaultImportState<DeleteNonReferencedReferencesConfigurator> state) {
33 36

  
37
        List<OrderHint> orderHint = new ArrayList<>();
38
        orderHint.add(OrderHint.ORDER_BY_ID);
39

  
34 40
		if (state.getConfig().isDoAuthors()){
35
			List<TeamOrPersonBase> authors =getAgentService().list(TeamOrPersonBase.class, null, null, null, null);
41
			List<TeamOrPersonBase> authors =getAgentService().list(TeamOrPersonBase.class, null, null, orderHint, null);
36 42

  
37 43
			int deleted = 0;
38 44
			System.out.println("There are " + authors.size() + " authors");
......
44 50
					if (!result.isOk()){
45 51
						System.out.println("Author " + author.getTitleCache() + " with id " + author.getId() + " could not be deleted.");
46 52
						result = null;
53
					}else{
54
					    System.out.println("Deleted: " + author.getTitleCache() + "; id = " + author.getId());
47 55
					}
48 56
				}
49 57
			}
50 58
			System.out.println(deleted + " authors are deleted.");
51 59
		}
60

  
61
		List<String> propertyPath = new ArrayList<>();
62
		propertyPath.add("sources.citation");
63
		propertyPath.add("createdBy");
52 64
		if (state.getConfig().isDoReferences()){
53
			List<Reference> references =getReferenceService().list(Reference.class, null, null, null, null);
65
			List<Reference> references =getReferenceService().list(Reference.class, null, null, orderHint, propertyPath);
54 66

  
55 67
			int deleted = 0;
56 68
			System.out.println("There are " + references.size() + " references");
57 69
			for (Reference ref: references){
58 70
				long refObjects = getCommonService().getReferencingObjectsCount(ref);
59 71
				if (refObjects == 0) {
60
				    DeleteResult result = getReferenceService().delete(ref);
61
					deleted++;
62
					if (!result.isOk()){
63
						System.out.println("Reference " + ref.getTitle() + " with id " + ref.getId() + " could not be deleted.");
64
						result = null;
65
					}
72
				    if (isIgnore(state, ref)){
73
				        System.out.println("Ignore: " + ref.getId() + "\t" + ref.getType() + "\t" +ref.getTitleCache() + "\t" + ref.getCreated()+ "\t" +
74
				                (ref.getCreatedBy() == null? "" : ref.getCreatedBy().getUsername()) + "\t" +
75
				                ref.getUpdated() + "\t" +  getSources(ref));
76
				    }else{
77
				        DeleteResult result = getReferenceService().delete(ref);
78
				        deleted++;
79
				        if (!result.isOk()){
80
				            System.out.println("Reference " + ref.getTitle() + " with id " + ref.getId() + " could not be deleted.");
81
				            result = null;
82
				        }else{
83
//				            System.out.println("Deleted: " + ref.getTitleCache() + "; id = " + ref.getId());
84
				        }
85
				    }
66 86
				}
67 87
			}
68 88
			System.out.println(deleted + " references are deleted.");
69 89
		}
70 90
	}
71 91

  
72
	@Override
92
    private boolean isIgnore(DefaultImportState<DeleteNonReferencedReferencesConfigurator> state, Reference ref) {
93
        if (state.getConfig().isKeepReferencesWithTitle() && isNotBlank(ref.getTitle())
94
                || state.getConfig().isKeepRisSources() && hasRISSource(ref)){
95
            return true;
96
        }else{
97
            return false;
98
        }
99
    }
100

  
101
    private String getSources(Reference ref) {
102
        String result = "";
103
        for (IdentifiableSource source : ref.getSources()){
104
            result += source.getType() + ": " + (source.getCitation() == null? "" : source.getCitation().getTitleCache()) + "\t";
105
        }
106
        return result;
107
    }
108

  
109
    private boolean hasRISSource(Reference ref) {
110
        for (IdentifiableSource source : ref.getSources()){
111
            Reference citation = source.getCitation();
112
            if (citation != null && citation.getTitleCache().startsWith("RIS Reference")){
113
                return true;
114
            }
115
        }
116
        return false;
117
    }
118

  
119
    @Override
73 120
	protected boolean doCheck(DefaultImportState<DeleteNonReferencedReferencesConfigurator> state) {
74 121
		return true;
75 122
	}

Also available in: Unified diff