Project

General

Profile

1 49863 tsampikos.
package eu.dnetlib.uoaadmintools.controllers;
2
3 50222 konstantin
import eu.dnetlib.uoaadmintools.dao.CommunityDAO;
4 50612 konstantin
import eu.dnetlib.uoaadmintools.entities.*;
5 49863 tsampikos.
import eu.dnetlib.uoaadmintools.dao.PageDAO;
6
7
import org.apache.log4j.Logger;
8 50222 konstantin
import org.springframework.web.bind.annotation.*;
9 49863 tsampikos.
import org.springframework.beans.factory.annotation.Autowired;
10
11 50222 konstantin
import java.util.ArrayList;
12 50612 konstantin
import java.util.Iterator;
13 49863 tsampikos.
import java.util.List;
14 50222 konstantin
import java.util.Map;
15 49863 tsampikos.
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 50222 konstantin
    @Autowired
25
    private CommunityDAO communityDAO;
26
27 50612 konstantin
    @Autowired
28
    private PageHelpContentController pageHelpContentController;
29
30
    @Autowired
31
    private DivHelpContentController divHelpContentController;
32
33
    @Autowired
34
    private DivIdController divIdController;
35
36 49863 tsampikos.
    @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 50222 konstantin
    @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 49863 tsampikos.
    }
52
53 50222 konstantin
    @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 50612 konstantin
            // 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 50222 konstantin
            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 49863 tsampikos.
    @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 50222 konstantin
    @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 49863 tsampikos.
139 50222 konstantin
    @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 49863 tsampikos.
}