Project

General

Profile

1
package eu.dnetlib.uoaadmintools.controllers;
2

    
3
import eu.dnetlib.uoaadmintools.dao.CommunityDAO;
4
import eu.dnetlib.uoaadmintools.dao.DivIdDAO;
5
import eu.dnetlib.uoaadmintools.dao.PageDAO;
6
import eu.dnetlib.uoaadmintools.entities.*;
7
import org.apache.log4j.Logger;
8
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.web.bind.annotation.*;
10

    
11
import java.util.*;
12

    
13
@RestController
14
@CrossOrigin(origins = "*")
15
public class DivIdController {
16
    private final Logger log = Logger.getLogger(this.getClass());
17

    
18
    @Autowired
19
    private DivIdDAO divIdDAO;
20

    
21
    @Autowired
22
    private PageDAO pageDAO;
23

    
24
    @Autowired
25
    private DivHelpContentController divHelpContentController;
26

    
27
    DivIdController() {}
28

    
29
    @RequestMapping(value = "/div", method = RequestMethod.GET)
30
    public List<DivId> getDivIds(@RequestParam(required = false) String page,
31
                                 @RequestParam(required = false) String name) {
32
        List<DivId> divIds = null;
33

    
34
        if(page != null && name != null) {
35
            DivId divId = divIdDAO.findByPagesContainingAndName(page, name);
36
            if(divId != null) {
37
                divIds = new ArrayList<>();
38
                divIds.add(divId);
39
            }
40
        } else if(page != null) {
41
            divIds = divIdDAO.findByPagesContaining(page);
42
        } else if(name != null) {
43
            DivId divId = divIdDAO.findByName(name);
44
            if(divId != null) {
45
                divIds = new ArrayList<>();
46
                divIds.add(divId);
47
            }
48
        } else {
49
            divIds = divIdDAO.findAll();
50
        }
51
        return divIds;
52
    }
53

    
54
    @RequestMapping(value = "/divFull", method = RequestMethod.GET)
55
    public List<DivIdResponse> getDivIdsFull(@RequestParam(required = false) String page,
56
                                             @RequestParam(required = false) String name) {
57

    
58
        List<DivId> divIds = this.getDivIds(page, name);
59

    
60
        List<DivIdResponse> divIdResponses = new ArrayList<>();
61
        for(DivId divId : divIds) {
62
            DivIdResponse divIdResponse = new DivIdResponse(divId);
63
            List<Page> pages = new ArrayList<>();
64
            for(String pageId : divId.getPages()) {
65
                pages.add(pageDAO.findById(pageId));
66
            }
67
            divIdResponse.setPages(pages);
68

    
69
            divIdResponses.add(divIdResponse);
70
        }
71

    
72
        return divIdResponses;
73
    }
74

    
75
    @RequestMapping(value = "/div/{id}", method = RequestMethod.GET)
76
    public DivId getDivId(@PathVariable(value = "id") String id) {
77
        return divIdDAO.findById(id);
78
    }
79

    
80
    @RequestMapping(value = "/divFull/{id}", method = RequestMethod.GET)
81
    public DivIdResponse getDivIdFull(@PathVariable(value = "id") String id) {
82
        DivId divId = divIdDAO.findById(id);
83
        return divIdResponseFromDivId(divId);
84
    }
85

    
86
    public DivIdResponse divIdResponseFromDivId(DivId divId) {
87
        DivIdResponse divIdResponse = new DivIdResponse(divId);
88
        List<Page> pages = new ArrayList<>();
89
        for(String pageId : divId.getPages()) {
90
            pages.add(pageDAO.findById(pageId));
91
        }
92
        divIdResponse.setPages(pages);
93
        return divIdResponse;
94
    }
95

    
96
    @RequestMapping(value = "/div", method = RequestMethod.DELETE)
97
    public void deleteAllDivIds() {
98
        divIdDAO.deleteAll();
99
    }
100

    
101
    @RequestMapping(value = "/div/save", method = RequestMethod.POST)
102
    public DivIdResponse insertDivId(@RequestBody DivIdResponse divIdResponse) {
103
        DivId divId = this.getDivIdByDivIdResponse(divIdResponse);
104

    
105
        DivId savedDivId = divIdDAO.save(divId);
106
        divIdResponse.setId(savedDivId.getId());
107

    
108
        return this.getDivIdFull(divId.getId());
109
    }
110

    
111
    private DivId getDivIdByDivIdResponse(DivIdResponse divIdResponse) {
112
        DivId divId = new DivId();
113
        divId.setId(divIdResponse.getId());
114
        divId.setName(divIdResponse.getName());
115

    
116
        List<Page> fullPages = divIdResponse.getPages();
117
        List<String> pages = new ArrayList<String>();
118
        for(Page page : fullPages) {
119
            pages.add(page.getId());
120
        }
121
        divId.setPages(pages);
122

    
123
        return divId;
124
    }
125

    
126
    @RequestMapping(value = "/div/update", method = RequestMethod.POST)
127
    public DivIdResponse updateDivId(@RequestBody DivIdResponse divIdResponse) {
128
        /*
129
        DivId divId = divIdDAO.findById(_divId.getId());
130
        divId.setName(_divId.getName());
131
        divId.setPages(_divId.getPages());
132
        divIdDAO.save(divId);
133
        return this.getDivIdFull(divId.getId());
134
        */
135
        DivId divId = this.getDivIdByDivIdResponse(divIdResponse);
136
        divIdDAO.save(divId);
137
        return divIdResponse;
138
    }
139

    
140
    @RequestMapping(value = "/div/delete", method = RequestMethod.POST)
141
    public Boolean deleteDivIds(@RequestBody List<String> divIds) throws Exception {
142
        for (String id: divIds) {
143
            DivId divId = divIdDAO.findById(id);
144

    
145
            // delete div contents related to this divId
146
            List<DivHelpContentResponse> divHelpContentResponses = divHelpContentController.getDivHelpContents(null, null, divId.getName(), null);
147
            for(DivHelpContentResponse divHelpContentResponse : divHelpContentResponses) {
148
                divHelpContentController.deleteDivHelpContent(divHelpContentResponse.getId());
149
            }
150

    
151
            divIdDAO.delete(id);
152
        }
153
        return true;
154
    }
155

    
156
    @RequestMapping(value = "/div/{id}", method = RequestMethod.DELETE)
157
    public void deleteDivId(@PathVariable(value = "id") String id) {
158
        divIdDAO.delete(id);
159
    }
160

    
161
    @RequestMapping(value = "/div/pages", method = RequestMethod.GET)
162
    public Set<String> getDivIdsPages() {
163
        List<DivId> divIds = null;
164
        Set<String> hasCommunityPageDivIds = new HashSet<>();
165

    
166
        divIds = divIdDAO.findAll();
167

    
168
        for(DivId divId : divIds) {
169
            for(String pageId : divId.getPages()) {
170
                hasCommunityPageDivIds.add(pageId);
171
            }
172
        }
173
        return hasCommunityPageDivIds;
174
    }
175

    
176
}
(5-5/16)