Project

General

Profile

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

    
3
import org.apache.log4j.Logger;
4
import sun.net.www.protocol.http.HttpURLConnection;
5

    
6
import java.io.*;
7
import java.net.MalformedURLException;
8
import java.net.URL;
9

    
10

    
11
/**
12
 * Created by argirok on 26/4/2017.
13
 */
14
public class DirectIndexHandler {
15

    
16
    private String directClaimAPIUrl;
17
    private static final Logger logger = Logger.getLogger(DirectIndexHandler.class);
18

    
19

    
20
    public boolean insertRecord(String record){
21

    
22
        return this.feedIndex(record);
23
    }
24
    public boolean updateRecord(String record){
25

    
26
        return this.feedIndex(record);
27
    }
28
    public boolean deleteRecord(String originalId, String collectedFromId){
29

    
30
        return this.removeObjectFromIndex(originalId,collectedFromId);
31
    }
32

    
33
    private boolean feedIndex(String record) {
34

    
35
        URL obj = null;
36
        try {
37
            obj = new URL(directClaimAPIUrl+"/feedObject");
38
        } catch (MalformedURLException e) {
39
            logger.error("Malformed  direct Claim APIUrl" + directClaimAPIUrl,e);
40
            return false;
41

    
42
        }
43
        HttpURLConnection con = null;
44
        try {
45
            con = (HttpURLConnection) obj.openConnection();
46

    
47

    
48

    
49
            //add request header
50
            con.setRequestMethod("POST");
51
            //con.setRequestProperty("User-Agent", USER_AGENT);
52
            con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
53
            con.setRequestProperty("Content-Type", "application/json");
54

    
55
            logger.info("Feeding index with " + record);
56
            String urlParameters = record;
57

    
58
            // Send post request
59
            con.setDoOutput(true);
60
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
61
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8"));
62
            writer.write(urlParameters);
63
            writer.close();
64
            wr.close();
65

    
66
            int responseCode = con.getResponseCode();
67
            logger.info("\nSending 'POST' request to URL : " + directClaimAPIUrl);
68
            logger.info("Post parameters : " + urlParameters);
69
            logger.info("Response Code : " + responseCode);
70

    
71
            BufferedReader in = new BufferedReader(
72
                    new InputStreamReader(con.getInputStream()));
73
            String inputLine;
74
            StringBuffer response = new StringBuffer();
75

    
76
            while ((inputLine = in.readLine()) != null) {
77
                response.append(inputLine);
78
            }
79
            in.close();
80
            if(responseCode != 200){
81
                logger.error("An error occured. Record isn't saved in the Index.\n"+response.toString());
82
                return false;
83
            }else{
84
                return true;
85
            }
86
        } catch (IOException e) {
87
            logger.error("An error occured while trying to feed object" ,e);
88

    
89
            return false;
90
        }
91
    }
92
    private boolean removeObjectFromIndex(String originalId, String collectedFromId){
93

    
94
        URL obj = null;
95
        String urlParameters = "?originalId="+originalId+"&collectedFromId="+collectedFromId;
96

    
97
        try {
98
            obj = new URL(directClaimAPIUrl+"/deleteObject"+urlParameters);
99
        } catch (MalformedURLException e) {
100
            logger.error("Malformed  direct Claim APIUrl" + directClaimAPIUrl,e);
101
            return false;
102

    
103
        }
104
        HttpURLConnection con = null;
105
        try {
106
            con = (HttpURLConnection) obj.openConnection();
107

    
108

    
109

    
110
            //add request header
111
            con.setRequestMethod("POST");
112
            //con.setRequestProperty("User-Agent", USER_AGENT);
113
            con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
114
            con.setRequestProperty("Content-Type", "application/json");
115

    
116

    
117
            // Send post request
118
            con.setDoOutput(true);
119
//            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
120
//            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8"));
121
//            writer.write(urlParameters);
122
//            writer.close();
123
//            wr.close();
124

    
125
            int responseCode = con.getResponseCode();
126
            logger.info("\nSending 'POST' request to URL : " + directClaimAPIUrl+urlParameters);
127
            logger.info("Post parameters : " + urlParameters);
128
            logger.info("Response Code : " + responseCode);
129

    
130
            BufferedReader in = new BufferedReader(
131
                    new InputStreamReader(con.getInputStream()));
132
            String inputLine;
133
            StringBuffer response = new StringBuffer();
134

    
135
            while ((inputLine = in.readLine()) != null) {
136
                response.append(inputLine);
137
            }
138
            in.close();
139

    
140
            //print result
141
            logger.info(response.toString());
142
            if(response.toString().equals("true")){
143
                return true;
144
            }else{
145
                return false;
146
            }
147
        } catch (IOException e) {
148
            logger.error("An error occured while trying to delete object",e);
149

    
150
            return false;
151
        }
152
    }
153

    
154
    public String getDirectClaimAPIUrl() {
155
        return directClaimAPIUrl;
156
    }
157

    
158
    public void setDirectClaimAPIUrl(String directClaimAPIUrl) {
159
        this.directClaimAPIUrl = directClaimAPIUrl;
160
    }
161
}
(3-3/12)