Project

General

Profile

1
package eu.dnetlib.uoaadmintools.controllers;
2

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

    
12
import java.util.*;
13

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

    
19
    @Autowired
20
    private DivIdDAO divIdDAO;
21

    
22
    @Autowired
23
    private PageDAO pageDAO;
24

    
25
    @Autowired
26
    private DivHelpContentController divHelpContentController;
27

    
28
    DivIdController() {}
29

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

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

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

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

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

    
70
            divIdResponses.add(divIdResponse);
71
        }
72

    
73
        return divIdResponses;
74
    }
75

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

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

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

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

    
102
    @RequestMapping(value = "/div/save", method = RequestMethod.POST)
103
    public DivIdResponse insertDivId(@RequestBody DivId divId) {
104
        divIdDAO.save(divId);
105
        return this.getDivIdFull(divId.getId());
106
    }
107

    
108
    @RequestMapping(value = "/div/update", method = RequestMethod.POST)
109
    public DivIdResponse updateDivId(@RequestBody DivId _divId) {
110
        DivId divId = divIdDAO.findById(_divId.getId());
111
        divId.setName(_divId.getName());
112
        /*List<String> pageIds = new ArrayList<>();
113
        for(Page page : divIdResponse.getPages()) {
114
            pageIds.add(page.getId());
115
        }*/
116
        divId.setPages(_divId.getPages());
117
        divIdDAO.save(divId);
118
        return this.getDivIdFull(divId.getId());
119
    }
120

    
121
    @RequestMapping(value = "/div/delete", method = RequestMethod.POST)
122
    public Boolean deleteDivIds(@RequestBody List<String> divIds) throws Exception {
123
        for (String id: divIds) {
124
            DivId divId = divIdDAO.findById(id);
125

    
126
            // delete div contents related to this divId
127
            List<DivHelpContentResponse> divHelpContentResponses = divHelpContentController.getDivHelpContents(null, null, divId.getName(), null);
128
            for(DivHelpContentResponse divHelpContentResponse : divHelpContentResponses) {
129
                divHelpContentController.deleteDivHelpContent(divHelpContentResponse.getId());
130
            }
131

    
132
            divIdDAO.delete(id);
133
        }
134
        return true;
135
    }
136

    
137
    @RequestMapping(value = "/div/{id}", method = RequestMethod.DELETE)
138
    public void deleteDivId(@PathVariable(value = "id") String id) {
139
        divIdDAO.delete(id);
140
    }
141

    
142
    @RequestMapping(value = "/div/pages", method = RequestMethod.GET)
143
    public Set<String> getDivIdsPages() {
144
        List<DivId> divIds = null;
145
        Set<String> hasCommunityPageDivIds = new HashSet<>();
146

    
147
        divIds = divIdDAO.findAll();
148

    
149
        for(DivId divId : divIds) {
150
            for(String pageId : divId.getPages()) {
151
                hasCommunityPageDivIds.add(pageId);
152
            }
153
        }
154
        return hasCommunityPageDivIds;
155
    }
156

    
157
}
(4-4/15)