Project

General

Profile

1
package eu.dnetlib.repo.manager.server.services;
2

    
3
import eu.dnetlib.domain.functionality.validator.JobForValidation;
4
import eu.dnetlib.domain.functionality.validator.RuleSet;
5
import eu.dnetlib.domain.functionality.validator.StoredJob;
6
import eu.dnetlib.gwt.server.service.SpringGwtRemoteServiceServlet;
7
import eu.dnetlib.repo.manager.client.services.ValidationService;
8
import eu.dnetlib.repo.manager.server.utils.EmailUtils;
9
import eu.dnetlib.repo.manager.service.controllers.MonitorApi;
10
import eu.dnetlib.repo.manager.service.controllers.ValidatorApi;
11
import eu.dnetlib.repo.manager.shared.InterfaceInformation;
12
import eu.dnetlib.repo.manager.shared.JobsOfUser;
13
import eu.dnetlib.repo.manager.shared.ValidationServiceException;
14
import org.apache.log4j.Logger;
15
import org.json.JSONException;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.beans.factory.annotation.Value;
18
import org.springframework.stereotype.Service;
19

    
20
import javax.annotation.PostConstruct;
21
import javax.servlet.ServletConfig;
22
import javax.servlet.ServletException;
23
import java.util.List;
24

    
25
/**
26
 * Created by nikonas on 22/12/15.
27
 */
28
@Service("validationService")
29
public class ValidationServiceImpl extends SpringGwtRemoteServiceServlet implements ValidationService {
30

    
31
    private static final Logger LOGGER = Logger
32
            .getLogger(ValidationServiceImpl.class);
33

    
34
    @Autowired
35
    private EmailUtils emailUtils;
36

    
37
    @Value("${services.repo-manager.deploy.environment}")
38
    private String deployEnvironment;
39

    
40
    //private ServiceLocator<ValidatorService> validatorServiceLocator;
41

    
42
    //private Map<String, List<RuleSet>> rulesetMap = new ConcurrentHashMap<String, List<RuleSet>>();
43

    
44
    public void init(ServletConfig config) throws ServletException {
45

    
46
        LOGGER.info("initializing validation service impl ");
47
        super.init(config);
48
    }
49

    
50
    @Autowired
51
    private ValidatorApi validatorApi;
52
    @Autowired
53
    private MonitorApi monitorApi;
54

    
55
    @PostConstruct
56
    public void initRulesets() {
57
        LOGGER.info("initializing validation service impl ");
58
        //this.loadRulesets();
59
    }
60

    
61
    @Override
62
    public List<String> getSets(String baseUrl) throws ValidationServiceException {
63
        return validatorApi.getSetsOfRepository(baseUrl);
64
    }
65

    
66
    @Override
67
    public Boolean identifyRepository(String baseUrl) throws ValidationServiceException {
68
        return validatorApi.identifyRepo(baseUrl);
69
    }
70

    
71
    @Override
72
    public InterfaceInformation getInterfaceInformation(String baseUrl) throws ValidationServiceException {
73
        try {
74
            LOGGER.debug("Getting interface information with url: " + baseUrl);
75
            InterfaceInformation interfaceInformation = new InterfaceInformation();
76
            interfaceInformation.setIdentified(this.identifyRepository(baseUrl));
77
            if (interfaceInformation.isIdentified())
78
                interfaceInformation.setSets(this.getSets(baseUrl));
79

    
80
            return interfaceInformation;
81
        } catch (Exception e) {
82
            LOGGER.error("Error getting interface information with url: " + baseUrl, e);
83
//            emailUtils.reportException(e);
84
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
85
        }
86
    }
87

    
88
    @Override
89
    public List<RuleSet> getRuleSets(String validationMode) throws ValidationServiceException {
90
        try {
91
            return validatorApi.getRuleSets(validationMode);
92
        } catch (Exception e) {
93
            LOGGER.error("Error getting rulesets", e);
94
            emailUtils.reportException(e);
95
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
96
        }
97
    }
98

    
99
    @Override
100
    public RuleSet getRuleSet(String acronym) throws ValidationServiceException {
101
        return validatorApi.getRuleSet(acronym);
102
    }
103

    
104
    @Override
105
    public void submitValidationJob(JobForValidation job) throws ValidationServiceException {
106
        try {
107
            validatorApi.submitJobForValidation(job);
108
        } catch (Exception e) {
109
            LOGGER.error("Error while submitting validation job", e);
110
            emailUtils.reportException(e);
111
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
112
        }
113
    }
114

    
115
    @Override
116
    public void reSubmitValidationJob(int jobId)
117
            throws ValidationServiceException {
118
        try {
119
            validatorApi.reSubmitJobForValidation(String.valueOf(jobId));
120
        } catch (JSONException e) {
121
            LOGGER.error("Error while re-submitting validation job", e);
122
            emailUtils.reportException(e);
123
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
124
        }
125
    }
126

    
127
    @Override
128
    public StoredJob getJobSummary(int jobId, String groupBy)
129
            throws ValidationServiceException {
130

    
131
        try {
132
            return monitorApi.getJobSummary(String.valueOf(jobId),groupBy);
133
        } catch (Exception e) {
134
            LOGGER.error("Error getting job summary for id: " + jobId, e);
135
            emailUtils.reportException(e);
136
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
137
        }
138
    }
139

    
140
    @Override
141
    public List<StoredJob> getJobsOfUser(String user, String jobType, Integer offset, Integer limit, String dateFrom, String dateTo, String validationStatus) throws ValidationServiceException {
142
        try {
143
            LOGGER.debug("getting jobs of user " + user);
144
            List<StoredJob> jobs;
145
            //TODO update after declaring roles
146
//            if (this.userOverridesRepoRegistration(user))
147
//                jobs = getValidationService().getStoredJobs(null, jobType, offset, limit, null, null);
148
//            else
149
            jobs = validatorApi.getStoredJobsNew(user, jobType, offset, limit, dateFrom, dateTo, validationStatus);
150
           // jobs = getValidationService().getStoredJobsNew(user, jobType, offset, limit, dateFrom, dateTo, validationStatus);
151
            return jobs;
152
//            return monitorApi.getJobsOfUser(user, jobType, offset, limit, dateFrom, dateTo, validationStatus);
153
        } catch (Exception e) {
154
            LOGGER.error("Error getting jobs of user " + user, e);
155
            emailUtils.reportException(e);
156
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
157
        }
158
    }
159

    
160
    @Override
161
    public int getJobsTotalNumberOfUser(String user, String jobType, String validationStatus) throws ValidationServiceException {
162
        try {
163
            LOGGER.debug("getting jobs of user " + user);
164
            int sum;
165
            //TODO update after declaring roles
166
//            if (this.userOverridesRepoRegistration(user))
167
//                sum = getValidationService().getStoredJobsTotalNumber(null, jobType);
168
//            else
169
            //sum = getValidationService().getStoredJobsTotalNumberNew(user, jobType, validationStatus);
170
            sum = validatorApi.getStoredJobsTotalNumberNew(user, jobType, validationStatus);
171
            return sum;
172
        } catch (Exception e) {
173
            LOGGER.error("Error getting jobs of user " + user, e);
174
            emailUtils.reportException(e);
175
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
176
        }
177
    }
178

    
179
    @Override
180
    public JobsOfUser getJobsOfUser(String user, String jobType, Integer offset, Integer limit, String dateFrom, String dateTo, String validationStatus, boolean includeJobsTotal) throws ValidationServiceException {
181
        try {
182
            LOGGER.debug("getting jobs of user " + user + " totalJobs included: " + includeJobsTotal);
183
            JobsOfUser retJobs = new JobsOfUser();
184

    
185
            return monitorApi.getJobsOfUser(user, jobType, String.valueOf(offset), String.valueOf(limit),
186
                    dateFrom, dateTo, validationStatus, String.valueOf(includeJobsTotal));
187

    
188
        } catch (Exception e) {
189
            LOGGER.error("getting jobs of user " + user + " totalJobs included: " + includeJobsTotal, e);
190
            throw new ValidationServiceException("login.generalError", ValidationServiceException.ErrorCode.GENERAL_ERROR);
191
        }
192
    }
193

    
194

    
195
  /*  private ValidatorService getValidationService() {
196
        return this.validatorServiceLocator.getService();
197
    }
198

    
199
    public ServiceLocator<ValidatorService> getValidatorServiceLocator() {
200
        return validatorServiceLocator;
201
    }
202

    
203
    public void setValidatorServiceLocator(ServiceLocator<ValidatorService> validatorServiceLocator) {
204
        this.validatorServiceLocator = validatorServiceLocator;
205
    }*/
206
}
(6-6/6)