Project

General

Profile

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
122

    
123

    
124
        return managerUtilsList;
125
    }
126

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

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