Project

General

Profile

1
package eu.dnetlib.data.claims.utils;
2

    
3
import com.google.gson.Gson;
4
import org.apache.logging.log4j.LogManager;
5
import org.apache.logging.log4j.Logger;
6

    
7
import java.io.BufferedReader;
8
import java.io.InputStreamReader;
9
import java.io.StringReader;
10
import java.net.HttpURLConnection;
11
import java.net.URL;
12
import java.util.Arrays;
13
import java.util.List;
14

    
15
public class ManagerUtils {
16
    private static String registryAPIForManagerEmails;
17
    private String id;
18
    private String email;
19
    private String name;
20
    private String memberSince;
21

    
22
    private final static Logger log = LogManager.getLogger(ManagerUtils.class);
23

    
24
    public String getRegistryAPIForManagerEmails() { return registryAPIForManagerEmails; }
25
    public void setRegistryAPIForManagerEmails(String registryAPIForManagerEmails) { ManagerUtils.registryAPIForManagerEmails = registryAPIForManagerEmails; }
26

    
27
    public String getName() {
28
        return name;
29
    }
30
    public void setName(String name) {
31
        this.name = name;
32
    }
33

    
34
    public String getId() {
35
        return id;
36
    }
37

    
38
    public void setId(String id) {
39
        this.id = id;
40
    }
41

    
42
    public String getEmail() {
43
        return email;
44
    }
45

    
46
    public void setEmail(String email) {
47
        this.email = email;
48
    }
49

    
50
    public String getMemberSince() {
51
        return memberSince;
52
    }
53

    
54
    public void setMemberSince(String memberSince) {
55
        this.memberSince = memberSince;
56
    }
57

    
58
    public  List<ManagerUtils> getManagersByEmail(String community) {
59
        String url = registryAPIForManagerEmails.replace("{community}", community);
60

    
61
        URL obj = null;
62
        String responseStr = null;
63
        log.debug("Registry url is " + url);
64

    
65
        try {
66
            obj = new URL(url);
67
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
68
             log.debug("Get manager emails from registry response code is: " + con.getResponseCode());
69
            if (con.getResponseCode() != 200) {
70
                return null;
71
            }
72
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
73
            StringBuffer response = new StringBuffer();
74
            String inputLine;
75
            while ((inputLine = in.readLine()) != null) {
76
                response.append(inputLine).append("\n");
77
            }
78
            in.close();
79
            responseStr = response.toString();
80
        } catch (Exception e) {
81
            log.error("An error occured while trying to fetch manager emails from registry ", e);
82
            return null;
83
        }
84
        return json2ManagerUtils(responseStr);
85
    }
86

    
87
    class ManagersResponse {
88
        public List<ManagerUtils> response;
89

    
90
        public List<ManagerUtils> getResponse() {
91
            return response;
92
        }
93

    
94
        public void setResponse(List<ManagerUtils> response) {
95
            this.response = response;
96
        }
97
    }
98

    
99
    private List<ManagerUtils> json2ManagerUtils(String json){
100

    
101
        log.debug("Try to create List<ManagerUtils> from json: "+json);
102
        if (json == null){
103
            return null;
104
        }
105

    
106
        BufferedReader br = new BufferedReader(new StringReader(json));
107
        //convert the json string back to object
108
        Gson gson = new Gson();
109
        ManagersResponse managersResponse = null;
110
        List<ManagerUtils> managerUtilsList = null;
111

    
112
        try {
113
            ManagerUtils[] testCase = gson.fromJson(br, ManagerUtils[].class);
114
            managerUtilsList = Arrays.asList(testCase);
115
        }catch(Throwable e){
116
            log.debug("Error in parsing json response. Given json is : "+json, e);
117
            e.printStackTrace();
118
            return null;
119
        }
120

    
121
        log.debug("Original response.........: "+managerUtilsList.size());
122

    
123

    
124

    
125
        return managerUtilsList;
126
    }
127

    
128
    public Boolean isCommunityManager(String communityId, String userMail) {
129
        List<ManagerUtils> managerUtils = this.getManagersByEmail(communityId);
130
        if(managerUtils != null) {
131
            for(ManagerUtils manager : managerUtils) {
132
                if(manager.getEmail() != null && manager.getEmail().equals(userMail)) {
133
                    return true;
134
                }
135
            }
136
        }
137
        return false;
138
    }
139

    
140
    @Override
141
    public String toString() {
142
        return "ManagerUtils{" +
143
                "id='" + id + '\'' +
144
                ", email='" + email + '\'' +
145
                ", name='" + name + '\'' +
146
                ", memberSince='" + memberSince + '\'' +
147
                '}';
148
    }
149
}
(8-8/10)