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
	}
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/operation/config/DeleteNonReferencedReferencesConfigurator.java
33 33
	private boolean doReferences = true;
34 34
	private boolean doAuthors = true;
35 35

  
36
	private boolean isKeepReferencesWithTitle = false;
37
	private boolean isKeepRisSources = false;
38

  
36 39
	public DeleteNonReferencedReferencesConfigurator() {
37 40
		super(null);
38 41
	}
......
65 68
    public boolean isDoReferences() {
66 69
        return doReferences;
67 70
    }
68

  
69 71
    public void setDoReferences(boolean doReferences) {
70 72
        this.doReferences = doReferences;
71 73
    }
......
73 75
    public boolean isDoAuthors() {
74 76
        return doAuthors;
75 77
    }
76

  
77 78
    public void setDoAuthors(boolean doAuthors) {
78 79
        this.doAuthors = doAuthors;
79 80
    }
80 81

  
81
	@Override
82
	public Reference getSourceReference() {
83
		return null;
84
	}
82
    public boolean isKeepReferencesWithTitle() {
83
        return isKeepReferencesWithTitle;
84
    }
85
    public void setKeepReferencesWithTitle(boolean isKeepReferencesWithTitle) {
86
        this.isKeepReferencesWithTitle = isKeepReferencesWithTitle;
87
    }
88

  
89
    public boolean isKeepRisSources() {
90
        return isKeepRisSources;
91
    }
92
    public void setKeepRisSources(boolean isKeepRisSources) {
93
        this.isKeepRisSources = isKeepRisSources;
94
    }
95

  
96
    @Override
97
    public Reference getSourceReference() {
98
        return null;
99
    }
85 100
}

Also available in: Unified diff