Project

General

Profile

1
package eu.dnetlib.uoaadmintools.controllers;
2

    
3
import eu.dnetlib.uoaadmintools.dao.CommunityDAO;
4
import eu.dnetlib.uoaadmintools.entities.*;
5
import eu.dnetlib.uoaadmintools.dao.PageDAO;
6

    
7
import org.apache.log4j.Logger;
8
import org.springframework.web.bind.annotation.*;
9
import org.springframework.beans.factory.annotation.Autowired;
10

    
11
import java.util.ArrayList;
12
import java.util.Iterator;
13
import java.util.List;
14
import java.util.Map;
15

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

    
21
    @Autowired
22
    private PageDAO pageDAO;
23

    
24
    @Autowired
25
    private CommunityDAO communityDAO;
26

    
27
    @Autowired
28
    private PageHelpContentController pageHelpContentController;
29

    
30
    @Autowired
31
    private DivHelpContentController divHelpContentController;
32

    
33
    @Autowired
34
    private DivIdController divIdController;
35

    
36
    @RequestMapping(value = "/page", method = RequestMethod.GET)
37
    public List<Page> getAllPages() {
38
        return pageDAO.findAll();
39
    }
40

    
41
    @RequestMapping(value = "/page", method = RequestMethod.DELETE)
42
    public void deleteAllPages() {
43
        pageDAO.deleteAll();
44
    }
45

    
46
    @RequestMapping(value = "/page/update", method = RequestMethod.POST)
47
    public CommunityPage updatePage(@RequestBody CommunityPage communityPage) {
48
        Page page = this.getPageByCommunityPage(communityPage);
49
        pageDAO.save(page);
50
        return communityPage;
51
    }
52

    
53
    @RequestMapping(value = "/page/save", method = RequestMethod.POST)
54
    public CommunityPage insertPage(@RequestBody CommunityPage communityPage) {
55
        Page page = this.getPageByCommunityPage(communityPage);
56
        Page savedPage = pageDAO.save(page);
57
        communityPage.setId(savedPage.getId());
58

    
59
        // add page in communities
60
        List<Community> communities = communityDAO.findAll();
61
        for( Community community : communities ) {
62
            Map<String, Boolean> pages = community.getPages();
63
            pages.put(page.getId(), false);
64
            community.setPages(pages);
65
            communityDAO.save(community);
66
        }
67

    
68
        return communityPage;
69
    }
70

    
71
    private Page getPageByCommunityPage(CommunityPage communityPage) {
72
        Page page = new Page();
73
        page.setId(communityPage.getId());
74
        page.setRoute(communityPage.getRoute());
75
        page.setName(communityPage.getName());
76
        page.setType(communityPage.getType());
77

    
78
        List<Entity> fullEntities = communityPage.getEntities();
79
        List<String> entities = new ArrayList<String>();
80
        for(Entity entity : fullEntities) {
81
            entities.add(entity.getId());
82
        }
83
        page.setEntities(entities);
84

    
85
        return page;
86
    }
87

    
88
    @RequestMapping(value = "/page/delete", method = RequestMethod.POST)
89
    public Boolean deletePages(@RequestBody List<String> pages) throws Exception {
90
        for (String id: pages) {
91
            pageDAO.delete(id);
92

    
93
            // delete divIds related to this page from all communities
94
            List<DivId> divIds = divIdController.getDivIds(null, id);
95
            for(DivId divId : divIds) {
96
                divIdController.deleteDivId(divId.getId());
97
            }
98

    
99
            // delete div contents related to this page from all communities
100
            List<DivHelpContentResponse> divHelpContentResponses = divHelpContentController.getDivHelpContents(null, id, null);
101
            for(DivHelpContentResponse divHelpContentResponse : divHelpContentResponses) {
102
                divHelpContentController.deleteDivHelpContent(divHelpContentResponse.getId());
103
            }
104

    
105
            // delete page contents related to this page from all communities
106
            List<PageHelpContentResponse> pageHelpContentResponses = pageHelpContentController.getPageHelpContents(null, id, null, null, null);
107
            for(PageHelpContentResponse pageHelpContentResponse : pageHelpContentResponses) {
108
                pageHelpContentController.deletePageHelpContent(pageHelpContentResponse.getId());
109
            }
110

    
111
            // delete page from communities
112
            List<Community> communities = communityDAO.findAll();
113
            for( Community community : communities ) {
114
                Map<String, Boolean> communityPages = community.getPages();
115
                communityPages.remove(id);
116
                community.setPages(communityPages);
117
                communityDAO.save(community);
118
            }
119
        }
120

    
121
        return true;
122
    }
123

    
124
    @RequestMapping(value = "/page/{id}", method = RequestMethod.GET)
125
    public Page getPage(@PathVariable(value = "id") String id) {
126
        return pageDAO.findById(id);
127
    }
128

    
129
    @RequestMapping(value = "/page/{id}", method = RequestMethod.DELETE)
130
    public void deletePage(@PathVariable(value = "id") String id) {
131
        pageDAO.delete(id);
132
    }
133

    
134
    @RequestMapping(value = "/page/{id}/entity", method = RequestMethod.GET)
135
    public List<String> getPageEntities(@PathVariable(value = "id") String id) {
136
        return pageDAO.findById(id).getEntities();
137
    }
138

    
139
    @RequestMapping(value = "page/{id}/entity/toggle", method = RequestMethod.POST)
140
    public Page togglePageEntity(@PathVariable(value = "id") String id, @RequestParam String entityId, @RequestParam String status) throws Exception {
141
        log.debug("Toggle entity : "+entityId +" of page: "+id+" to "+status);
142
        Page page = pageDAO.findById(id);
143
        List<String> entities = page.getEntities();
144
        if(Boolean.parseBoolean(status) && !entities.contains(entityId)) {
145
            entities.add(entityId);
146
        } else if (!Boolean.parseBoolean(status)) {
147
            entities.remove(entityId);
148
        }
149
        page.setEntities(entities);
150
        return pageDAO.save(page);
151
    }
152
}
153

    
(4-4/7)