Revision 34342
Added by Nikon Gasparis over 9 years ago
modules/uoa-validator-service/trunk/src/main/java/gr/uoa/di/validator/service/impl/ValidatorManagerImpl.java | ||
---|---|---|
1 |
package gr.uoa.di.validator.service.impl; |
|
2 |
|
|
3 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob; |
|
4 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardNotificationHandler; |
|
5 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardServerHandler; |
|
6 |
import eu.dnetlib.validator.service.dao.Utilities; |
|
7 |
import eu.dnetlib.validator.service.dao.jobs.JobSubmitted; |
|
8 |
import eu.dnetlib.validator.service.dao.jobs.JobSubmittedDAO; |
|
9 |
import eu.dnetlib.validator.service.dao.rules.RuleSet; |
|
10 |
import eu.dnetlib.validator.service.dao.rules.RuleSetDAO; |
|
11 |
import eu.dnetlib.validator.service.dao.rules.RuleStored; |
|
12 |
import eu.dnetlib.validator.service.dao.rules.RuleStoredDAO; |
|
13 |
import gr.uoa.di.validator.Validator; |
|
14 |
import gr.uoa.di.validator.ValidatorException; |
|
15 |
import gr.uoa.di.validator.data.Rule; |
|
16 |
import gr.uoa.di.validator.execution.Job; |
|
17 |
import gr.uoa.di.validator.impls.MemoryThreadValidator; |
|
18 |
import gr.uoa.di.validator.impls.listeners.DnetListener; |
|
19 |
import gr.uoa.di.validator.impls.listeners.ValidatorJobListener; |
|
20 |
import gr.uoa.di.validator.impls.providers.DnetProvider; |
|
21 |
import gr.uoa.di.validator.impls.providers.OAIPMHRecordProvider; |
|
22 |
import gr.uoa.di.validator.impls.providers.OAIPMHSinglePageVerbProvider; |
|
23 |
import gr.uoa.di.validator.impls.rules.ChainRule; |
|
24 |
import gr.uoa.di.validator.impls.rules.RuleTypes; |
|
25 |
|
|
26 |
import java.io.Serializable; |
|
27 |
import java.lang.reflect.InvocationTargetException; |
|
28 |
import java.util.ArrayList; |
|
29 |
import java.util.HashMap; |
|
30 |
import java.util.HashSet; |
|
31 |
import java.util.List; |
|
32 |
import java.util.Map; |
|
33 |
import java.util.Properties; |
|
34 |
import java.util.Set; |
|
35 |
|
|
36 |
import org.apache.log4j.Logger; |
|
37 |
import org.springframework.transaction.annotation.Propagation; |
|
38 |
import org.springframework.transaction.annotation.Transactional; |
|
39 |
|
|
40 |
@Transactional(propagation = Propagation.REQUIRED) |
|
41 |
public abstract class ValidatorManagerImpl implements ValidatorManager { |
|
42 |
|
|
43 |
private Validator validator; |
|
44 |
private JobSubmittedDAO jobSubmittedDao; |
|
45 |
private RuleSetDAO ruleSetDao; |
|
46 |
private RuleStoredDAO ruleStoredDao; |
|
47 |
|
|
48 |
private Integer jobIdRegistry = 1; |
|
49 |
private Integer ruleIdRegistry = 1; |
|
50 |
|
|
51 |
private static Logger logger = Logger.getLogger(ValidatorManagerImpl.class); |
|
52 |
|
|
53 |
protected abstract ValidatorJobListener createListener(); |
|
54 |
protected abstract DnetListener createDnetListener(); |
|
55 |
|
|
56 |
public void start() { |
|
57 |
logger.debug("Initializing Validator Manager module"); |
|
58 |
} |
|
59 |
|
|
60 |
@Transactional(propagation = Propagation.REQUIRED) |
|
61 |
public JobSubmitted beginDataJobForWorkflow(String mdstoreId, String guidelines, String groupBy, BlackboardJob bJob, BlackboardNotificationHandler<BlackboardServerHandler> blackboardHandler, int workers) throws ValidatorException{ |
|
62 |
try { |
|
63 |
logger.debug("Submitting data job for workflow"); |
|
64 |
// String desiredCompatibility = "openaire3.0"; |
|
65 |
Set<Integer> ruleIdsContent = new HashSet<Integer>(); |
|
66 |
for (RuleSet ruleset : ruleSetDao.getRuleSets()) { |
|
67 |
if (ruleset.getGuidelinesAcronym().equals(guidelines)) { |
|
68 |
ruleIdsContent = Utilities.convertListToSet(ruleset.getRuleIdsContent()); |
|
69 |
} |
|
70 |
} |
|
71 |
Properties pros = new Properties(); |
|
72 |
|
|
73 |
pros.setProperty(DnetProvider.MDSTORE_ID, mdstoreId); |
|
74 |
// pros.setProperty(DnetProvider.BATCH_SIZE, bJob.getParameters().get("batchSize")); |
|
75 |
pros.setProperty(DnetProvider.BATCH_SIZE, "50"); |
|
76 |
pros.setProperty(DnetProvider.RECORDS, bJob.getParameters().get("records")); |
|
77 |
|
|
78 |
JobSubmitted newJob = new JobSubmitted(); |
|
79 |
|
|
80 |
Set<Integer> rules = new HashSet<Integer>(); |
|
81 |
|
|
82 |
Map<Integer,Integer> ruleLinkingMap = new HashMap<Integer,Integer>(); |
|
83 |
|
|
84 |
for (Integer ruleId : ruleIdsContent) { |
|
85 |
|
|
86 |
RuleStored tempRule=ruleStoredDao.get(ruleId.toString()); |
|
87 |
|
|
88 |
//special behaviour type of rule is chain |
|
89 |
if(tempRule.getType().equals("ChainRule")) { |
|
90 |
ChainRule<Rule> chainRule = this.handleChain(tempRule); |
|
91 |
validator.addToRegistry(ruleIdRegistry,chainRule, MemoryThreadValidator.RegistryType.rules); |
|
92 |
} |
|
93 |
else { |
|
94 |
validator.addToRegistry(ruleIdRegistry,this.getRuleClassInstanceByType(tempRule.getType(), tempRule.getConfiguration(), ruleIdRegistry), MemoryThreadValidator.RegistryType.rules); |
|
95 |
} |
|
96 |
rules.add(ruleIdRegistry); |
|
97 |
// this.linkRules(ruleIdRegistry, ruleId); |
|
98 |
ruleLinkingMap.put(ruleIdRegistry, ruleId); |
|
99 |
ruleIdRegistry++; |
|
100 |
} |
|
101 |
|
|
102 |
Job job = new Job(this.jobIdRegistry, 3, rules, pros); |
|
103 |
this.jobIdRegistry++; |
|
104 |
|
|
105 |
newJob.setUser("Workflow Service"); |
|
106 |
newJob.setValidationType("OAI Content"); |
|
107 |
newJob.setGuidelines(guidelines); |
|
108 |
newJob.setStatus("working"); |
|
109 |
newJob.setJobType("Workflow Request"); |
|
110 |
newJob.setDuration("--"); |
|
111 |
newJob.setRepo(mdstoreId); |
|
112 |
newJob.setRules(ruleIdsContent); |
|
113 |
newJob.setRecords(pros.getProperty(DnetProvider.RECORDS)); |
|
114 |
newJob.setSet("dnet-workflow"); |
|
115 |
newJob.setGroupBy_xpath(groupBy); |
|
116 |
newJob.setMetadata_prefix("oai_dc"); |
|
117 |
newJob.setId("-1"); |
|
118 |
int jobIdStored = jobSubmittedDao.save(newJob); |
|
119 |
|
|
120 |
ValidatorJobListener listener = createListener(); |
|
121 |
listener.setJobSubmittedId(jobIdStored); |
|
122 |
listener.setJobSubmittedUser("Workflow Service"); |
|
123 |
listener.setRuleLinkingMap(ruleLinkingMap); |
|
124 |
listener.setGroupBy_xpath(groupBy); |
|
125 |
listener.setInternalJobsSum(workers); |
|
126 |
|
|
127 |
DnetListener dnetListener = createDnetListener(); |
|
128 |
dnetListener.setJob(bJob); |
|
129 |
dnetListener.setBlackboardHandler(blackboardHandler); |
|
130 |
|
|
131 |
validator.submitJob(job, workers, listener, dnetListener); |
|
132 |
|
|
133 |
return newJob; |
|
134 |
|
|
135 |
|
|
136 |
} catch (Exception e) { |
|
137 |
logger.error("Error Submitting content job", e); |
|
138 |
throw new ValidatorException(e); |
|
139 |
} |
|
140 |
} |
|
141 |
|
|
142 |
@Override |
|
143 |
public JobSubmitted beginContentJobForWorkflow(String baseUrl, String validationSet, BlackboardJob bJob, BlackboardNotificationHandler<BlackboardServerHandler> blackboardHandler) throws ValidatorException { |
|
144 |
try { |
|
145 |
logger.debug("Submitting content job for workflow"); |
|
146 |
Set<Integer> ruleIdsContent = new HashSet<Integer>(); |
|
147 |
for (RuleSet ruleset : ruleSetDao.getRuleSets()) { |
|
148 |
String regRuleset; |
|
149 |
if (validationSet.equalsIgnoreCase("openaire_data")) { |
|
150 |
regRuleset = "OpenAIRE For Data Archives"; |
|
151 |
} else { |
|
152 |
regRuleset = "OpenAIRE For Literature Repositories"; |
|
153 |
} |
|
154 |
if (ruleset.getName().equals(regRuleset)) { |
|
155 |
ruleIdsContent = Utilities.convertListToSet(ruleset.getRuleIdsContent()); |
|
156 |
} |
|
157 |
} |
|
158 |
|
|
159 |
Properties pros = null; |
|
160 |
pros = new Properties(); |
|
161 |
pros.setProperty(OAIPMHRecordProvider.BASEURL, baseUrl); |
|
162 |
pros.setProperty(OAIPMHRecordProvider.METADATA_PREFIX, "oai_dc"); |
|
163 |
pros.setProperty(OAIPMHRecordProvider.TIMEOUT, "360000"); |
|
164 |
pros.setProperty(OAIPMHRecordProvider.DELAY, "1000"); |
|
165 |
pros.setProperty(OAIPMHRecordProvider.RETRY_DELAY, "60000"); |
|
166 |
pros.setProperty(OAIPMHRecordProvider.RETRY_EFFORTS, "3"); |
|
167 |
// pros.setProperty(OAIPMHRecordProvider.RECORDS, "20"); |
|
168 |
pros.setProperty(OAIPMHRecordProvider.RECORDS, "all"); |
|
169 |
pros.setProperty(OAIPMHRecordProvider.SET, validationSet); |
|
170 |
|
|
171 |
JobSubmitted newJob = new JobSubmitted(); |
|
172 |
|
|
173 |
Set<Integer> rules = new HashSet<Integer>(); |
|
174 |
|
|
175 |
Map<Integer,Integer> ruleLinkingMap = new HashMap<Integer,Integer>(); |
|
176 |
|
|
177 |
for (Integer ruleId : ruleIdsContent) { |
|
178 |
RuleStored tempRule = ruleStoredDao.get(ruleId.toString()); |
|
179 |
|
|
180 |
// special behaviour type of rule is chain |
|
181 |
if (tempRule.getType().equals("ChainRule")) { |
|
182 |
logger.debug("chain rule found"); |
|
183 |
RuleStored tempRuleChain1 = ruleStoredDao.get(tempRule.getConfiguration().getProperty("rule_1")); |
|
184 |
RuleStored tempRuleChain2 = ruleStoredDao.get(tempRule.getConfiguration().getProperty("rule_2")); |
|
185 |
List<Rule> rules_chain = new ArrayList<Rule>(); |
|
186 |
rules_chain.add((Rule) this.getRuleClassInstanceByType(tempRuleChain1.getType(), tempRuleChain1.getConfiguration(), ruleIdRegistry)); |
|
187 |
ruleIdRegistry++; |
|
188 |
rules_chain.add((Rule) this.getRuleClassInstanceByType(tempRuleChain2.getType(), tempRuleChain2.getConfiguration(), ruleIdRegistry)); |
|
189 |
ruleIdRegistry++; |
|
190 |
|
|
191 |
Properties chainPros = new Properties(); |
|
192 |
chainPros.setProperty(ChainRule.TYPE, tempRule.getConfiguration().getProperty(ChainRule.TYPE)); |
|
193 |
ChainRule<Rule> chainRule = new ChainRule<Rule>(chainPros, ruleIdRegistry, rules_chain); |
|
194 |
|
|
195 |
validator.addToRegistry(ruleIdRegistry, chainRule, MemoryThreadValidator.RegistryType.rules); |
|
196 |
} else { |
|
197 |
validator.addToRegistry(ruleIdRegistry, this.getRuleClassInstanceByType(tempRule.getType(), tempRule.getConfiguration(), ruleIdRegistry), MemoryThreadValidator.RegistryType.rules); |
|
198 |
} |
|
199 |
rules.add(ruleIdRegistry); |
|
200 |
// this.linkRules(ruleIdRegistry, ruleId); |
|
201 |
ruleLinkingMap.put(ruleIdRegistry, ruleId); |
|
202 |
ruleIdRegistry++; |
|
203 |
} |
|
204 |
if (pros.getProperty(OAIPMHRecordProvider.SET).equalsIgnoreCase( |
|
205 |
"openaire_data")) |
|
206 |
pros.setProperty(OAIPMHRecordProvider.METADATA_PREFIX, |
|
207 |
"oai_datacite"); |
|
208 |
|
|
209 |
Job job = new Job(this.jobIdRegistry, 1, rules, pros); |
|
210 |
this.jobIdRegistry++; |
|
211 |
|
|
212 |
newJob.setUser("Workflow Service"); |
|
213 |
newJob.setValidationType("OAI Content"); |
|
214 |
// newJob.setType("OAI Content Validation"); |
|
215 |
newJob.setStatus("working"); |
|
216 |
newJob.setJobType("Workflow Request"); |
|
217 |
//TODO FIX |
|
218 |
newJob.setGuidelines("OpenAIRE For Literature Repositories"); |
|
219 |
newJob.setActivation_id(null); |
|
220 |
newJob.setDuration("--"); |
|
221 |
newJob.setRepo(baseUrl); |
|
222 |
newJob.setRules(ruleIdsContent); |
|
223 |
newJob.setRecords(pros.getProperty(OAIPMHRecordProvider.RECORDS)); |
|
224 |
newJob.setSet(pros.getProperty(OAIPMHRecordProvider.SET)); |
|
225 |
newJob.setGroupBy_xpath(null); |
|
226 |
newJob.setMetadata_prefix(pros.getProperty(OAIPMHRecordProvider.METADATA_PREFIX)); |
|
227 |
newJob.setId("-1"); |
|
228 |
int jobIdStored = jobSubmittedDao.save(newJob); |
|
229 |
|
|
230 |
ValidatorJobListener listener = createListener(); |
|
231 |
listener.setJobSubmittedId(jobIdStored); |
|
232 |
listener.setJobSubmittedUser("Workflow Service"); |
|
233 |
listener.setRuleLinkingMap(ruleLinkingMap); |
|
234 |
listener.setGroupBy_xpath(null); |
|
235 |
listener.setInternalJobsSum(1); |
|
236 |
|
|
237 |
DnetListener dnetListener = createDnetListener(); |
|
238 |
dnetListener.setJob(bJob); |
|
239 |
dnetListener.setBlackboardHandler(blackboardHandler); |
|
240 |
|
|
241 |
validator.submitJob(job, 1, listener, dnetListener); |
|
242 |
return newJob; |
|
243 |
|
|
244 |
} catch (Exception e) { |
|
245 |
logger.error("Error Submitting content job for workflow", e); |
|
246 |
throw new ValidatorException(e); |
|
247 |
} |
|
248 |
|
|
249 |
} |
|
250 |
|
|
251 |
@Override |
|
252 |
public JobSubmitted beginUsageJobForWorkflow(String baseUrl, String validationSet, BlackboardJob bJob, BlackboardNotificationHandler<BlackboardServerHandler> blackboardHandler) throws ValidatorException { |
|
253 |
try { |
|
254 |
|
|
255 |
logger.debug("Submitting Usage job(s) for workflow"); |
|
256 |
|
|
257 |
Set<Integer> ruleIdsUsage = new HashSet<Integer>(); |
|
258 |
for (RuleSet ruleset : ruleSetDao.getRuleSets()) { |
|
259 |
String regRuleset; |
|
260 |
if (validationSet.equalsIgnoreCase("openaire_data")) { |
|
261 |
regRuleset = "OpenAIRE For Data Archives"; |
|
262 |
} else { |
|
263 |
regRuleset = "OpenAIRE For Literature Repositories"; |
|
264 |
} |
|
265 |
if (ruleset.getName().equals(regRuleset)) { |
|
266 |
ruleIdsUsage = Utilities.convertListToSet(ruleset |
|
267 |
.getRuleIdsUsage()); |
|
268 |
} |
|
269 |
} |
|
270 |
|
|
271 |
Properties pros = new Properties(); |
|
272 |
pros.setProperty(OAIPMHSinglePageVerbProvider.BASEURL, baseUrl); |
|
273 |
pros.setProperty(OAIPMHSinglePageVerbProvider.TIMEOUT, "360000"); |
|
274 |
pros.setProperty(OAIPMHSinglePageVerbProvider.DELAY, "1000"); |
|
275 |
pros.setProperty(OAIPMHSinglePageVerbProvider.RETRY_DELAY, "60000"); |
|
276 |
pros.setProperty(OAIPMHSinglePageVerbProvider.RETRY_EFFORTS, "3"); |
|
277 |
|
|
278 |
JobSubmitted newJob = new JobSubmitted(); |
|
279 |
|
|
280 |
List<RuleStored> rulesStored = new ArrayList<RuleStored>(); |
|
281 |
for (Integer id : ruleIdsUsage) { |
|
282 |
logger.debug("Rule with id: " + id + " added"); |
|
283 |
rulesStored.add(ruleStoredDao.get(id.toString())); |
|
284 |
} |
|
285 |
|
|
286 |
logger.debug("Creating map for provider information"); |
|
287 |
Map<String, Set<Integer>> verbRuleMap = new HashMap<String, Set<Integer>>(); |
|
288 |
Set<Integer> old, temp = null; |
|
289 |
for (RuleStored ruleStored : rulesStored) { |
|
290 |
logger.debug("Checking for verb : " + ruleStored.getProvider_information()); |
|
291 |
if ((old = verbRuleMap.get(ruleStored.getProvider_information())) == null) { |
|
292 |
logger.debug("Verb doesn't exist"); |
|
293 |
temp = new HashSet<Integer>(); |
|
294 |
temp.add(Integer.parseInt(ruleStored.getId())); |
|
295 |
verbRuleMap.put(ruleStored.getProvider_information(), temp); |
|
296 |
} else { |
|
297 |
logger.debug("Verb exists"); |
|
298 |
old.add(Integer.parseInt(ruleStored.getId())); |
|
299 |
} |
|
300 |
} |
|
301 |
|
|
302 |
Set<Integer> rules = null; |
|
303 |
|
|
304 |
Job job = null; |
|
305 |
newJob.setUser("Workflow Service"); |
|
306 |
newJob.setValidationType("OAI Usage"); |
|
307 |
newJob.setStatus("working"); |
|
308 |
newJob.setJobType("Workflow Request"); |
|
309 |
//TODO FIX |
|
310 |
newJob.setGuidelines("OpenAIRE For Literature Repositories"); |
|
311 |
newJob.setActivation_id(null); |
|
312 |
newJob.setDuration("--"); |
|
313 |
newJob.setRepo(pros.getProperty(OAIPMHSinglePageVerbProvider.BASEURL)); |
|
314 |
newJob.setRules(ruleIdsUsage); |
|
315 |
newJob.setMetadata_prefix(pros.getProperty(OAIPMHRecordProvider.METADATA_PREFIX)); |
|
316 |
newJob.setId("-1"); |
|
317 |
|
|
318 |
int jobIdStored = jobSubmittedDao.save(newJob); |
|
319 |
|
|
320 |
Map<Integer,Integer> ruleLinkingMap = new HashMap<Integer,Integer>(); |
|
321 |
|
|
322 |
ValidatorJobListener listener = createListener(); |
|
323 |
listener.setJobSubmittedId(jobIdStored); |
|
324 |
listener.setJobSubmittedUser("Workflow Service"); |
|
325 |
listener.setRuleLinkingMap(ruleLinkingMap); |
|
326 |
|
|
327 |
listener.setInternalJobsSum(verbRuleMap.size()); |
|
328 |
for (Map.Entry<String, Set<Integer>> entry : verbRuleMap.entrySet()) { |
|
329 |
pros.remove(OAIPMHSinglePageVerbProvider.VERB); |
|
330 |
pros.setProperty(OAIPMHSinglePageVerbProvider.VERB, |
|
331 |
entry.getKey()); |
|
332 |
rules = new HashSet<Integer>(); |
|
333 |
for (Integer ruleId : entry.getValue()) { |
|
334 |
RuleStored tempRule = ruleStoredDao.get(Integer |
|
335 |
.toString(ruleId)); |
|
336 |
logger.debug("prepare to add rule to registry with regexp: " + tempRule.getConfiguration().getProperty("regexp") + " and ruleIdregistry: " + ruleIdRegistry); |
|
337 |
validator.addToRegistry(ruleIdRegistry, this.getRuleClassInstanceByType(tempRule.getType(), tempRule.getConfiguration(), ruleIdRegistry), MemoryThreadValidator.RegistryType.rules); |
|
338 |
rules.add(ruleIdRegistry); |
|
339 |
// this.linkRules(ruleIdRegistry, ruleId); |
|
340 |
ruleLinkingMap.put(ruleIdRegistry, ruleId); |
|
341 |
ruleIdRegistry++; |
|
342 |
} |
|
343 |
|
|
344 |
job = new Job(this.jobIdRegistry, 2, rules, pros); |
|
345 |
|
|
346 |
DnetListener dnetListener = createDnetListener(); |
|
347 |
dnetListener.setJob(bJob); |
|
348 |
dnetListener.setBlackboardHandler(blackboardHandler); |
|
349 |
|
|
350 |
validator.submitJob(job, 1, listener, dnetListener); |
|
351 |
|
|
352 |
this.jobIdRegistry++; |
|
353 |
} |
|
354 |
return newJob; |
|
355 |
} catch (Exception e) { |
|
356 |
logger.error("Error Submitting usage job(s)", e); |
|
357 |
throw new ValidatorException(e); |
|
358 |
} |
|
359 |
|
|
360 |
} |
|
361 |
|
|
362 |
private Serializable getRuleClassInstanceByType(String type, |
|
363 |
Properties pros, int id) throws ValidatorException { |
|
364 |
logger.debug("getting rule object of type " + type); |
|
365 |
String classname = RuleTypes.getClassOfType(type); |
|
366 |
if (classname == null) { |
|
367 |
logger.debug("error getting rule object of type " + type |
|
368 |
+ " classname=null"); |
|
369 |
return null; |
|
370 |
} else { |
|
371 |
try { |
|
372 |
Class<?> clazz = Class.forName(classname); |
|
373 |
logger.debug("classname: " + clazz.getName()); |
|
374 |
return (Serializable) clazz.getConstructor( |
|
375 |
new Class[] { Properties.class, Integer.TYPE }) |
|
376 |
.newInstance(pros, id); |
|
377 |
|
|
378 |
} catch (ClassNotFoundException e) { |
|
379 |
logger.debug("error getting rule object: " + e); |
|
380 |
return null; |
|
381 |
} catch (NoSuchMethodException e) { |
|
382 |
logger.debug("error getting rule object: " + e); |
|
383 |
return null; |
|
384 |
} catch (InvocationTargetException e) { |
|
385 |
logger.debug("error getting rule object: " + e); |
|
386 |
return null; |
|
387 |
} catch (InstantiationException e) { |
|
388 |
logger.debug("error getting rule object: " + e); |
|
389 |
return null; |
|
390 |
} catch (IllegalAccessException e) { |
|
391 |
logger.debug("error getting rule object: " + e); |
|
392 |
return null; |
|
393 |
} |
|
394 |
} |
|
395 |
|
|
396 |
} |
|
397 |
|
|
398 |
private ChainRule<Rule> handleChain(RuleStored tempRule) throws Exception { |
|
399 |
logger.debug("chain rule found"); |
|
400 |
List<Rule> rules_chain = new ArrayList<Rule>(); |
|
401 |
RuleStored tempRuleChain1=ruleStoredDao.get(tempRule.getConfiguration().getProperty("rule_1")); |
|
402 |
if(tempRuleChain1.getType().equals("ChainRule")) { |
|
403 |
ChainRule<Rule> chainRule1 = this.handleChain(tempRuleChain1); |
|
404 |
rules_chain.add(chainRule1); |
|
405 |
ruleIdRegistry++; |
|
406 |
} else { |
|
407 |
rules_chain.add((Rule) this.getRuleClassInstanceByType(tempRuleChain1.getType(), tempRuleChain1.getConfiguration(), ruleIdRegistry)); |
|
408 |
ruleIdRegistry++; |
|
409 |
} |
|
410 |
RuleStored tempRuleChain2=ruleStoredDao.get(tempRule.getConfiguration().getProperty("rule_2")); |
|
411 |
if(tempRuleChain2.getType().equals("ChainRule")) { |
|
412 |
ChainRule<Rule> chainRule2 = this.handleChain(tempRuleChain2); |
|
413 |
rules_chain.add(chainRule2); |
|
414 |
ruleIdRegistry++; |
|
415 |
} else { |
|
416 |
rules_chain.add((Rule) this.getRuleClassInstanceByType(tempRuleChain2.getType(), tempRuleChain2.getConfiguration(), ruleIdRegistry)); |
|
417 |
ruleIdRegistry++; |
|
418 |
} |
|
419 |
Properties chainPros = new Properties(); |
|
420 |
chainPros.setProperty(ChainRule.TYPE,tempRule.getConfiguration().getProperty(ChainRule.TYPE)); |
|
421 |
ChainRule<Rule> chainRule = new ChainRule<Rule>(chainPros, ruleIdRegistry, rules_chain); |
|
422 |
return chainRule; |
|
423 |
} |
|
424 |
|
|
425 |
// private void linkRules(int ruleRegistry, int ruleStored) { |
|
426 |
// this.ruleLinkingMap.put(ruleRegistry, ruleStored); |
|
427 |
// } |
|
428 |
// |
|
429 |
// private int getRuleFromLink(int ruleRegistry) { |
|
430 |
// return this.ruleLinkingMap.get(ruleRegistry); |
|
431 |
// } |
|
432 |
|
|
433 |
public Validator getValidator() { |
|
434 |
return validator; |
|
435 |
} |
|
436 |
public void setValidator(Validator validator) { |
|
437 |
this.validator = validator; |
|
438 |
} |
|
439 |
public JobSubmittedDAO getJobSubmittedDao() { |
|
440 |
return jobSubmittedDao; |
|
441 |
} |
|
442 |
public void setJobSubmittedDao(JobSubmittedDAO jobSubmittedDao) { |
|
443 |
this.jobSubmittedDao = jobSubmittedDao; |
|
444 |
} |
|
445 |
public RuleSetDAO getRuleSetDao() { |
|
446 |
return ruleSetDao; |
|
447 |
} |
|
448 |
public void setRuleSetDao(RuleSetDAO ruleSetDao) { |
|
449 |
this.ruleSetDao = ruleSetDao; |
|
450 |
} |
|
451 |
public RuleStoredDAO getRuleStoredDao() { |
|
452 |
return ruleStoredDao; |
|
453 |
} |
|
454 |
public void setRuleStoredDao(RuleStoredDAO ruleStoredDao) { |
|
455 |
this.ruleStoredDao = ruleStoredDao; |
|
456 |
} |
|
457 |
// public Map<Integer, Integer> getRuleLinkingMap() { |
|
458 |
// return ruleLinkingMap; |
|
459 |
// } |
|
460 |
// public void setRuleLinkingMap(Map<Integer, Integer> ruleLinkingMap) { |
|
461 |
// this.ruleLinkingMap = ruleLinkingMap; |
|
462 |
// } |
|
463 |
} |
modules/uoa-validator-service/trunk/src/main/java/gr/uoa/di/validator/service/impl/ValidatorServiceImpl.java | ||
---|---|---|
1 |
package gr.uoa.di.validator.service.impl; |
|
2 |
|
|
3 |
import eu.dnetlib.api.functionality.ValidatorService; |
|
4 |
import eu.dnetlib.domain.ActionType; |
|
5 |
import eu.dnetlib.domain.EPR; |
|
6 |
import eu.dnetlib.domain.ResourceType; |
|
7 |
import eu.dnetlib.domain.enabling.Notification; |
|
8 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardNotificationHandler; |
|
9 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardServerHandler; |
|
10 |
import gr.uoa.di.driver.app.DriverServiceImpl; |
|
11 |
import gr.uoa.di.driver.enabling.issn.NotificationListener; |
|
12 |
|
|
13 |
import org.apache.log4j.Logger; |
|
14 |
|
|
15 |
public class ValidatorServiceImpl extends DriverServiceImpl implements |
|
16 |
ValidatorService { |
|
17 |
|
|
18 |
private BlackboardNotificationHandler<BlackboardServerHandler> blackboardNotificationHandler = null; |
|
19 |
private Logger logger = Logger.getLogger(ValidatorServiceImpl.class); |
|
20 |
|
|
21 |
|
|
22 |
// do NOT call directly. It will be called by the |
|
23 |
// InitializingServiceRegistrationManager |
|
24 |
// after it sets the service EPR and id. |
|
25 |
@Override |
|
26 |
public void init() { |
|
27 |
super.init(); |
|
28 |
this.subscribe(ActionType.UPDATE, |
|
29 |
ResourceType.VALIDATORSERVICERESOURCETYPE, this |
|
30 |
.getServiceEPR().getParameter("serviceId"), |
|
31 |
"RESOURCE_PROFILE/BODY/BLACKBOARD/LAST_REQUEST", |
|
32 |
new NotificationListener() { |
|
33 |
@Override |
|
34 |
public void processNotification(Notification notification) { |
|
35 |
blackboardNotificationHandler.notified( |
|
36 |
notification.getSubscriptionId(), |
|
37 |
notification.getTopic(), |
|
38 |
notification.getIsId(), |
|
39 |
notification.getMessage()); |
|
40 |
logger.debug(notification.getSubscriptionId()); |
|
41 |
logger.debug(notification.getTopic()); |
|
42 |
logger.debug(notification.getIsId()); |
|
43 |
logger.debug(notification.getMessage()); |
|
44 |
} |
|
45 |
}); |
|
46 |
} |
|
47 |
|
|
48 |
public BlackboardNotificationHandler<BlackboardServerHandler> getBlackboardNotificationHandler() { |
|
49 |
return blackboardNotificationHandler; |
|
50 |
} |
|
51 |
|
|
52 |
public void setBlackboardNotificationHandler( |
|
53 |
BlackboardNotificationHandler<BlackboardServerHandler> blackboardNotificationHandler) { |
|
54 |
this.blackboardNotificationHandler = blackboardNotificationHandler; |
|
55 |
} |
|
56 |
|
|
57 |
@Override |
|
58 |
public EPR validate(EPR datasource) { |
|
59 |
throw new UnsupportedOperationException(); |
|
60 |
} |
|
61 |
} |
modules/uoa-validator-service/trunk/src/main/java/gr/uoa/di/validator/service/impl/NotificationListener.java | ||
---|---|---|
1 |
package gr.uoa.di.validator.service.impl; |
|
2 |
|
|
3 |
import org.apache.log4j.Logger; |
|
4 |
|
|
5 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob; |
|
6 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardNotificationHandler; |
|
7 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardServerHandler; |
|
8 |
import gr.uoa.di.validator.ValidatorException; |
|
9 |
|
|
10 |
public class NotificationListener extends |
|
11 |
BlackboardNotificationHandler<BlackboardServerHandler> { |
|
12 |
|
|
13 |
private static Logger logger = Logger.getLogger(NotificationListener.class); |
|
14 |
private ValidatorManager valManager; |
|
15 |
|
|
16 |
@Override |
|
17 |
protected void processJob(BlackboardJob job) { |
|
18 |
super.processJob(job); |
|
19 |
|
|
20 |
logger.debug("New Job!"); |
|
21 |
String baseUrl = job.getParameters().get("baseUrl"); |
|
22 |
String validationSet = job.getParameters().get("validationSet"); |
|
23 |
String validationType = job.getParameters().get("validationType"); |
|
24 |
String type = job.getParameters().get("type"); //OAI |
|
25 |
String mdstoreId = job.getParameters().get("mdstoreId"); |
|
26 |
String guidelines = job.getParameters().get("guidelines"); |
|
27 |
String groupBy = job.getParameters().get("groupBy"); |
|
28 |
// String workers = job.getParameters().get("workers"); |
|
29 |
String workers = "4"; |
|
30 |
logger.debug("New Job of type: " + type); |
|
31 |
|
|
32 |
try { |
|
33 |
if (type.equalsIgnoreCase("OAI")) { |
|
34 |
logger.debug("type is oai"); |
|
35 |
|
|
36 |
// if (validationType.equalsIgnoreCase("OAI Content Validation")) |
|
37 |
// valManager.beginContentJobForWorkflow(baseUrl, validationSet, job, this); |
|
38 |
// else if (validationType.equalsIgnoreCase("OAI Usage Validation")) |
|
39 |
// valManager.beginUsageJobForWorkflow(baseUrl, validationSet, job, this); |
|
40 |
// else |
|
41 |
// throw new ValidatorException("Unknown validation type " + type); |
|
42 |
|
|
43 |
} else if (type.equalsIgnoreCase("DNET")) { |
|
44 |
logger.debug("type is dnet"); |
|
45 |
logger.debug("groupBy: " + groupBy); |
|
46 |
|
|
47 |
valManager.beginDataJobForWorkflow(mdstoreId, guidelines, groupBy, job, this,Integer.parseInt(workers)); |
|
48 |
} |
|
49 |
this.getBlackboardHandler().ongoing(job); |
|
50 |
|
|
51 |
} catch (ValidatorException e) { |
|
52 |
|
|
53 |
logger.error("Failed to begin the workflow for the job received", e); |
|
54 |
getBlackboardHandler().failed(job, e); |
|
55 |
} |
|
56 |
|
|
57 |
|
|
58 |
|
|
59 |
// valManager.preRegistrationValidations(baseUrl, officialName, activationId, userMail, adminMail, validationSet, datasourceId) |
|
60 |
//TODO: kaleitai otan erxetai notification apo to DNET gia |
|
61 |
// ksekinisei douleia. Pairneis parametrous apo to job |
|
62 |
// antikeimeno: |
|
63 |
|
|
64 |
// job.getParameters().get("a param name "); |
|
65 |
// kai kapws kaleis to validator engine. |
|
66 |
|
|
67 |
// kai enimerwneis gia to status tou job: |
|
68 |
|
|
69 |
|
|
70 |
} |
|
71 |
|
|
72 |
public ValidatorManager getValManager() { |
|
73 |
return valManager; |
|
74 |
} |
|
75 |
|
|
76 |
public void setValManager(ValidatorManager valManager) { |
|
77 |
this.valManager = valManager; |
|
78 |
} |
|
79 |
} |
modules/uoa-validator-service/trunk/src/main/java/gr/uoa/di/validator/service/impl/ValidatorManager.java | ||
---|---|---|
1 |
package gr.uoa.di.validator.service.impl; |
|
2 |
|
|
3 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob; |
|
4 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardNotificationHandler; |
|
5 |
import eu.dnetlib.enabling.tools.blackboard.BlackboardServerHandler; |
|
6 |
import eu.dnetlib.validator.service.dao.jobs.JobSubmitted; |
|
7 |
import gr.uoa.di.validator.ValidatorException; |
|
8 |
|
|
9 |
public interface ValidatorManager { |
|
10 |
|
|
11 |
public JobSubmitted beginDataJobForWorkflow(String datasource, String guidelines, String groupBy, BlackboardJob bJob, BlackboardNotificationHandler<BlackboardServerHandler> blackboardHandler, int workers) throws ValidatorException; |
|
12 |
|
|
13 |
public JobSubmitted beginContentJobForWorkflow(String baseUrl, String validationSet, BlackboardJob bJob, BlackboardNotificationHandler<BlackboardServerHandler> blackboardHandler) throws ValidatorException; |
|
14 |
|
|
15 |
public JobSubmitted beginUsageJobForWorkflow(String baseUrl, String validationSet, BlackboardJob bJob, BlackboardNotificationHandler<BlackboardServerHandler> blackboardHandler) throws ValidatorException; |
|
16 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/email/Emailer.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.email; |
|
2 |
|
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.List; |
|
5 |
|
|
6 |
import org.apache.log4j.Logger; |
|
7 |
|
|
8 |
import eu.dnetlib.utils.MailLibrary; |
|
9 |
|
|
10 |
public class Emailer { |
|
11 |
|
|
12 |
private static Logger logger = Logger.getLogger(Emailer.class); |
|
13 |
|
|
14 |
private List<String> specialRecipients = new ArrayList<String>(); |
|
15 |
private boolean override = false, logonly = false; |
|
16 |
private String overrideEmail = null, from = null; |
|
17 |
|
|
18 |
private MailLibrary mailer = null; |
|
19 |
|
|
20 |
public void sendMail(List<String> recipients, String subject, String message, boolean sendToSpecial, List<String> repoAdminMails) throws Exception { |
|
21 |
|
|
22 |
try { |
|
23 |
if (sendToSpecial) { |
|
24 |
recipients.addAll(this.specialRecipients); |
|
25 |
} |
|
26 |
|
|
27 |
if (repoAdminMails != null) |
|
28 |
recipients.addAll(repoAdminMails); |
|
29 |
|
|
30 |
if (this.override) { |
|
31 |
recipients.clear(); |
|
32 |
recipients.add(overrideEmail); |
|
33 |
} |
|
34 |
|
|
35 |
logger.debug("Sending mail to Recipients: " + recipients + " Subject: " + subject + " Message: " + message); |
|
36 |
if (!logonly) |
|
37 |
mailer.sendEmail(recipients.toArray(new String[] {}), subject, message); |
|
38 |
} catch (Exception e) { |
|
39 |
logger.error("Error sending mail to Recipients: " + recipients + " Subject: " + subject + " Message: " + message, e); |
|
40 |
throw new Exception(e); |
|
41 |
} |
|
42 |
} |
|
43 |
|
|
44 |
public void setSpecialRecipients(String specialRecipients) { |
|
45 |
String[] recps = specialRecipients.split(","); |
|
46 |
|
|
47 |
for (String recp : recps) { |
|
48 |
recp = recp.trim(); |
|
49 |
|
|
50 |
this.specialRecipients.add(recp); |
|
51 |
} |
|
52 |
} |
|
53 |
|
|
54 |
public void setOverride(boolean override) { |
|
55 |
this.override = override; |
|
56 |
} |
|
57 |
|
|
58 |
public void setOverrideEmail(String overrideEmail) { |
|
59 |
this.overrideEmail = overrideEmail; |
|
60 |
} |
|
61 |
|
|
62 |
public void setMailer(MailLibrary mailer) { |
|
63 |
this.mailer = mailer; |
|
64 |
} |
|
65 |
|
|
66 |
public String getFrom() { |
|
67 |
return from; |
|
68 |
} |
|
69 |
|
|
70 |
public void setFrom(String from) { |
|
71 |
this.from = from; |
|
72 |
} |
|
73 |
|
|
74 |
public boolean isLogonly() { |
|
75 |
return logonly; |
|
76 |
} |
|
77 |
|
|
78 |
public void setLogonly(boolean logonly) { |
|
79 |
this.logonly = logonly; |
|
80 |
} |
|
81 |
|
|
82 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/email/BugReporter.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.email; |
|
2 |
|
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.List; |
|
5 |
|
|
6 |
import org.apache.log4j.Logger; |
|
7 |
|
|
8 |
|
|
9 |
public class BugReporter { |
|
10 |
|
|
11 |
private transient Logger logger = Logger.getLogger(BugReporter.class); |
|
12 |
|
|
13 |
private String ex = null; |
|
14 |
|
|
15 |
public void report() { |
|
16 |
List<String> recipients = new ArrayList<String>(); |
|
17 |
try { |
|
18 |
recipients.add("nikonas@di.uoa.gr"); |
|
19 |
String message = "An exception has occurred:\n"+ex; |
|
20 |
String subject = "Automatic Bug Report"; |
|
21 |
// this.getEmailer().sendMail(recipients, subject, message, false, null); |
|
22 |
} catch (Exception e) { |
|
23 |
logger.error("error sending error report", e); |
|
24 |
} |
|
25 |
} |
|
26 |
|
|
27 |
public void setEx(String ex) { |
|
28 |
this.ex = ex; |
|
29 |
} |
|
30 |
|
|
31 |
public String getEx() { |
|
32 |
return ex; |
|
33 |
} |
|
34 |
|
|
35 |
|
|
36 |
|
|
37 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/DAO.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao; |
|
2 |
|
|
3 |
public interface DAO<T> { |
|
4 |
|
|
5 |
public Integer save (T t); |
|
6 |
// public String delete (T t); |
|
7 |
public String delete (String id); |
|
8 |
public T get (String id); |
|
9 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/tasks/TaskStored.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao.tasks; |
|
2 |
|
|
3 |
|
|
4 |
public class TaskStored { |
|
5 |
|
|
6 |
private String status, started, ended, jobId, ruleId, valObjId, recordIdentifier, recordUrl; |
|
7 |
private boolean success; |
|
8 |
// private RuleD rule; |
|
9 |
|
|
10 |
public String getRecordUrl() { |
|
11 |
return recordUrl; |
|
12 |
} |
|
13 |
public void setRecordUrl(String recordUrl) { |
|
14 |
this.recordUrl = recordUrl; |
|
15 |
} |
|
16 |
public String getStatus() { |
|
17 |
return status; |
|
18 |
} |
|
19 |
public void setStatus(String status) { |
|
20 |
this.status = status; |
|
21 |
} |
|
22 |
public boolean getSuccess() { |
|
23 |
return success; |
|
24 |
} |
|
25 |
public void setSuccess(boolean success) { |
|
26 |
this.success = success; |
|
27 |
} |
|
28 |
public String getStarted() { |
|
29 |
return started; |
|
30 |
} |
|
31 |
public void setStarted(String started) { |
|
32 |
this.started = started; |
|
33 |
} |
|
34 |
public String getEnded() { |
|
35 |
return ended; |
|
36 |
} |
|
37 |
public void setEnded(String ended) { |
|
38 |
this.ended = ended; |
|
39 |
} |
|
40 |
public String getJobId() { |
|
41 |
return jobId; |
|
42 |
} |
|
43 |
public void setJobId(String jobId) { |
|
44 |
this.jobId = jobId; |
|
45 |
} |
|
46 |
public String getRuleId() { |
|
47 |
return ruleId; |
|
48 |
} |
|
49 |
public void setRuleId(String ruleId) { |
|
50 |
this.ruleId = ruleId; |
|
51 |
} |
|
52 |
|
|
53 |
public String getValObjId() { |
|
54 |
return valObjId; |
|
55 |
} |
|
56 |
public void setValObjId(String valObjId) { |
|
57 |
this.valObjId = valObjId; |
|
58 |
} |
|
59 |
public String getRecordIdentifier() { |
|
60 |
return recordIdentifier; |
|
61 |
} |
|
62 |
public void setRecordIdentifier(String recordIdentifier) { |
|
63 |
this.recordIdentifier = recordIdentifier; |
|
64 |
} |
|
65 |
// public RuleD getRule() { |
|
66 |
// return rule; |
|
67 |
// } |
|
68 |
// public void setRule(RuleD rule) { |
|
69 |
// this.rule = rule; |
|
70 |
// } |
|
71 |
|
|
72 |
|
|
73 |
|
|
74 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/tasks/TaskStoredDAO.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao.tasks; |
|
2 |
|
|
3 |
import eu.dnetlib.validator.service.dao.DAO; |
|
4 |
import eu.dnetlib.validator.service.dao.rules.RuleStatus; |
|
5 |
|
|
6 |
import java.util.List; |
|
7 |
import java.util.Map; |
|
8 |
|
|
9 |
public interface TaskStoredDAO extends DAO<TaskStored> { |
|
10 |
|
|
11 |
public List<TaskStored> getTasksOfJob(String id); |
|
12 |
|
|
13 |
public List<String> getValidationErrors(String jobId, String ruleId); |
|
14 |
|
|
15 |
public List<String> getDistinctTasksOfJob(String jobId); |
|
16 |
|
|
17 |
public List<TaskStored> getFinishedTasks(String jobId, String ruleId); |
|
18 |
|
|
19 |
public void saveTasks(List<TaskStored> tasksStored, List<String> sets); |
|
20 |
|
|
21 |
public void cleanTasks(int jobId); |
|
22 |
|
|
23 |
public void saveTasksBatch(List<TaskStored> tasks, Map<String, List<String>> groupByMap); |
|
24 |
|
|
25 |
public void saveTasks(Map<String, RuleStatus> scoreMapPerRule); |
|
26 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/tasks/TaskStoredDAOimpl.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao.tasks; |
|
2 |
|
|
3 |
import eu.dnetlib.validator.service.dao.AbstractDAO; |
|
4 |
import eu.dnetlib.validator.service.dao.rules.RuleStatus; |
|
5 |
|
|
6 |
import java.sql.Connection; |
|
7 |
import java.sql.PreparedStatement; |
|
8 |
import java.sql.ResultSet; |
|
9 |
import java.sql.SQLException; |
|
10 |
import java.util.ArrayList; |
|
11 |
import java.util.List; |
|
12 |
import java.util.Map; |
|
13 |
import java.util.Map.Entry; |
|
14 |
|
|
15 |
public class TaskStoredDAOimpl extends AbstractDAO<TaskStored> implements TaskStoredDAO{ |
|
16 |
|
|
17 |
@Override |
|
18 |
protected PreparedStatement getUpdateStatement(TaskStored t, Connection con) |
|
19 |
throws SQLException { |
|
20 |
String query="UPDATE tasks set status=?, success=?, started=?, ended=?, record_url=? WHERE job_id=? AND rule_id=? AND record_identifier=?"; |
|
21 |
PreparedStatement stmt = con.prepareStatement(query); |
|
22 |
// logger.debug("getting taskStored updateStatement"); |
|
23 |
stmt.setString(1, t.getStatus()); |
|
24 |
stmt.setBoolean(2, t.getSuccess()); |
|
25 |
stmt.setString(3, t.getStarted()); |
|
26 |
stmt.setString(4, t.getEnded()); |
|
27 |
stmt.setString(5, t.getRecordUrl()); |
|
28 |
stmt.setInt(6, Integer.parseInt(t.getJobId())); |
|
29 |
stmt.setInt(7, Integer.parseInt(t.getRuleId())); |
|
30 |
stmt.setString(8, t.getRecordIdentifier()); |
|
31 |
return stmt; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
protected PreparedStatement getInsertStatement(TaskStored t, Connection con) throws SQLException { |
|
36 |
String query="INSERT INTO tasks(status, success, started, ended, job_id, rule_id, record_identifier, record_url) VALUES(?,?,?,?,?,?,?,?)"; |
|
37 |
PreparedStatement stmt = con.prepareStatement(query); |
|
38 |
// logger.debug("getting taskStored insertStatement"); |
|
39 |
stmt.setString(1, t.getStatus()); |
|
40 |
stmt.setBoolean(2, t.getSuccess()); |
|
41 |
stmt.setString(3, t.getStarted()); |
|
42 |
stmt.setString(4, t.getEnded()); |
|
43 |
stmt.setInt(5, Integer.parseInt(t.getJobId())); |
|
44 |
stmt.setInt(6, Integer.parseInt(t.getRuleId())); |
|
45 |
stmt.setString(7, t.getRecordIdentifier()); |
|
46 |
stmt.setString(8, t.getRecordUrl()); |
|
47 |
|
|
48 |
return stmt; |
|
49 |
} |
|
50 |
|
|
51 |
@Override |
|
52 |
protected PreparedStatement getDeleteStatement(String id, Connection con) |
|
53 |
throws SQLException { |
|
54 |
String query="DELETE FROM tasks WHERE job_id=?"; |
|
55 |
PreparedStatement stmt = con.prepareStatement(query); |
|
56 |
stmt.setInt(1, Integer.parseInt(id)); |
|
57 |
return stmt; |
|
58 |
} |
|
59 |
|
|
60 |
|
|
61 |
@Override |
|
62 |
public List<TaskStored> getTasksOfJob(String id) { |
|
63 |
ResultSet rs = null; |
|
64 |
Connection con = null; |
|
65 |
PreparedStatement stmt = null; |
|
66 |
TaskStored retTask = null; |
|
67 |
List<TaskStored> retList = null; |
|
68 |
logger.debug("Accessing DB to get all Tasks of Job"); |
|
69 |
try { |
|
70 |
con = getConnection(); |
|
71 |
String query="SELECT status, success, started, ended, rule_id, record_identifier, record_url FROM tasks WHERE job_id=?"; |
|
72 |
stmt = con.prepareStatement(query); |
|
73 |
stmt.setString(1, id); |
|
74 |
rs = stmt.executeQuery(); |
|
75 |
if (rs!=null){ |
|
76 |
retList = new ArrayList<TaskStored>(); |
|
77 |
|
|
78 |
while (rs.next()) { |
|
79 |
retTask = new TaskStored(); |
|
80 |
retTask.setStatus(rs.getString(1)); |
|
81 |
retTask.setSuccess(rs.getBoolean(2)); |
|
82 |
retTask.setStarted(rs.getString(3)); |
|
83 |
retTask.setEnded(rs.getString(4)); |
|
84 |
retTask.setRuleId(Integer.toString(rs.getInt(5))); |
|
85 |
retTask.setRecordIdentifier(rs.getString(6)); |
|
86 |
retTask.setRecordUrl(rs.getString(7)); |
|
87 |
retTask.setJobId(id); |
|
88 |
retList.add(retTask); |
|
89 |
} |
|
90 |
} |
|
91 |
} catch (SQLException e) { |
|
92 |
logger.error("Accessing DB to get all Tasks of Job: "+e); |
|
93 |
} finally { |
|
94 |
if (stmt != null) { |
|
95 |
try { |
|
96 |
stmt.close(); |
|
97 |
} catch (SQLException e) { |
|
98 |
logger.error("Accessing DB to get all Tasks of Job: "+e); |
|
99 |
} |
|
100 |
} |
|
101 |
} |
|
102 |
return retList; |
|
103 |
|
|
104 |
} |
|
105 |
|
|
106 |
@Override |
|
107 |
public TaskStored get(String id) { |
|
108 |
// TODO Auto-generated method stub |
|
109 |
return null; |
|
110 |
} |
|
111 |
|
|
112 |
@Override |
|
113 |
public List<String> getValidationErrors(String jobId, String ruleId) { |
|
114 |
ResultSet rs = null; |
|
115 |
Connection con = null; |
|
116 |
PreparedStatement stmt = null; |
|
117 |
List<String> retList = null; |
|
118 |
logger.debug("Accessing DB to get Validation Errors of JobId " + jobId + " and RuleId " + ruleId); |
|
119 |
try { |
|
120 |
con = getConnection(); |
|
121 |
String query="SELECT record_identifier FROM tasks WHERE job_id=? AND rule_id=? AND success=? LIMIT 30"; |
|
122 |
stmt = con.prepareStatement(query); |
|
123 |
stmt.setInt(1, Integer.parseInt(jobId)); |
|
124 |
stmt.setInt(2, Integer.parseInt(ruleId)); |
|
125 |
stmt.setBoolean(3, false); |
|
126 |
rs = stmt.executeQuery(); |
|
127 |
if (rs!=null){ |
|
128 |
retList = new ArrayList<String>(); |
|
129 |
|
|
130 |
while (rs.next()) { |
|
131 |
// if (!rs.getBoolean(1)) |
|
132 |
retList.add(rs.getString(1)); |
|
133 |
} |
|
134 |
} |
|
135 |
} catch (SQLException e) { |
|
136 |
logger.error("Accessing DB to get Validation Errors of a JobId and RuleId: "+e); |
|
137 |
} finally { |
|
138 |
if (stmt != null) { |
|
139 |
try { |
|
140 |
stmt.close(); |
|
141 |
} catch (SQLException e) { |
|
142 |
logger.error("Accessing DB to get Validation Errors of a JobId and RuleId: "+e); |
|
143 |
} |
|
144 |
} |
|
145 |
} |
|
146 |
return retList; |
|
147 |
|
|
148 |
|
|
149 |
} |
|
150 |
|
|
151 |
@Override |
|
152 |
public List<String> getDistinctTasksOfJob(String jobId) { |
|
153 |
List<String> retList = null; |
|
154 |
ResultSet rs = null; |
|
155 |
Connection con = null; |
|
156 |
PreparedStatement stmt = null; |
|
157 |
logger.debug("Accessing DB to get Distinct Rule ids of Tasks"); |
|
158 |
try { |
|
159 |
con = getConnection(); |
|
160 |
String query="SELECT distinct rule_id from tasks where job_id=?"; |
|
161 |
stmt = con.prepareStatement(query); |
|
162 |
stmt.setInt(1, Integer.parseInt(jobId)); |
|
163 |
rs = stmt.executeQuery(); |
|
164 |
if (rs!=null){ |
|
165 |
retList = new ArrayList<String>(); |
|
166 |
|
|
167 |
while (rs.next()) { |
|
168 |
retList.add(Integer.toString(rs.getInt(1))); |
|
169 |
} |
|
170 |
} |
|
171 |
} catch (SQLException e) { |
|
172 |
logger.error("Accessing DB to get Distinct Rule ids of Tasks: "+e); |
|
173 |
} finally { |
|
174 |
if (stmt != null) { |
|
175 |
try { |
|
176 |
stmt.close(); |
|
177 |
} catch (SQLException e) { |
|
178 |
logger.error("Accessing DB to get Distinct Rule ids of Tasks: "+e); |
|
179 |
} |
|
180 |
} |
|
181 |
} |
|
182 |
return retList; |
|
183 |
|
|
184 |
|
|
185 |
} |
|
186 |
|
|
187 |
@Override |
|
188 |
public List<TaskStored> getFinishedTasks(String jobId, String ruleId) { |
|
189 |
ResultSet rs = null; |
|
190 |
Connection con = null; |
|
191 |
PreparedStatement stmt = null; |
|
192 |
TaskStored retTask = null; |
|
193 |
List<TaskStored> retList = null; |
|
194 |
logger.debug("Accessing DB to get Finished Tasks"); |
|
195 |
try { |
|
196 |
con = getConnection(); |
|
197 |
String query="SELECT success, record_identifier FROM tasks WHERE job_id=? AND rule_id=? AND status=?"; |
|
198 |
stmt = con.prepareStatement(query); |
|
199 |
stmt.setInt(1, Integer.parseInt(jobId)); |
|
200 |
stmt.setInt(2,Integer.parseInt(ruleId)); |
|
201 |
stmt.setString(3, "finished"); |
|
202 |
rs = stmt.executeQuery(); |
|
203 |
if (rs!=null){ |
|
204 |
retList = new ArrayList<TaskStored>(); |
|
205 |
|
|
206 |
while (rs.next()) { |
|
207 |
retTask = new TaskStored(); |
|
208 |
retTask.setSuccess(rs.getBoolean(1)); |
|
209 |
retTask.setRecordIdentifier(rs.getString(2)); |
|
210 |
retList.add(retTask); |
|
211 |
} |
|
212 |
} |
|
213 |
} catch (SQLException e) { |
|
214 |
logger.error("Accessing DB to get Finished Tasks: "+e); |
|
215 |
} finally { |
|
216 |
if (stmt != null) { |
|
217 |
try { |
|
218 |
stmt.close(); |
|
219 |
} catch (SQLException e) { |
|
220 |
logger.error("Accessing DB to get Finished Tasks: "+e); |
|
221 |
} |
|
222 |
} |
|
223 |
} |
|
224 |
return retList; |
|
225 |
|
|
226 |
|
|
227 |
} |
|
228 |
|
|
229 |
@Override |
|
230 |
public void saveTasksBatch(List<TaskStored> tasks, Map<String,List<String>> groupByMap) { |
|
231 |
Connection con = null; |
|
232 |
PreparedStatement stmt = null, stmt1 = null; |
|
233 |
logger.debug("Accessing DB to save batch of tasks"); |
|
234 |
try { |
|
235 |
|
|
236 |
con = getConnection(); |
|
237 |
String query="INSERT INTO tasks(status, success, started, ended, job_id, rule_id, record_identifier, record_url) VALUES(?,?,?,?,?,?,?,?)";stmt = con.prepareStatement(query); |
|
238 |
stmt = con.prepareStatement(query); |
|
239 |
|
|
240 |
for (TaskStored t : tasks ) { |
|
241 |
stmt.setString(1, t.getStatus()); |
|
242 |
stmt.setBoolean(2, t.getSuccess()); |
|
243 |
stmt.setString(3, t.getStarted()); |
|
244 |
stmt.setString(4, t.getEnded()); |
|
245 |
stmt.setInt(5, Integer.parseInt(t.getJobId())); |
|
246 |
stmt.setInt(6, Integer.parseInt(t.getRuleId())); |
|
247 |
stmt.setString(7, t.getRecordIdentifier()); |
|
248 |
stmt.setString(8, t.getRecordUrl()); |
|
249 |
stmt.addBatch(); |
|
250 |
} |
|
251 |
stmt.executeBatch(); |
|
252 |
logger.debug("Tasks inserted: "+tasks.size()); |
|
253 |
|
|
254 |
if (!groupByMap.isEmpty()) { |
|
255 |
logger.debug("Inserting record's groupBy values.."); |
|
256 |
for (Map.Entry<String, List<String>> entry : groupByMap.entrySet()) { |
|
257 |
query="INSERT INTO record_groupby(record_id, groupby, job_id) VALUES(?,?,?)"; |
|
258 |
stmt1 = con.prepareStatement(query); |
|
259 |
for (String value :entry.getValue()) { |
|
260 |
stmt1.setString(1, entry.getKey()); |
|
261 |
stmt1.setString(2, value); |
|
262 |
stmt1.setInt(3, Integer.parseInt(tasks.get(0).getJobId())); |
|
263 |
stmt1.addBatch(); |
|
264 |
} |
|
265 |
} |
|
266 |
stmt1.executeBatch(); |
|
267 |
// logger.debug("groupBy values inserted: "+groupBy_values.size()); |
|
268 |
} |
|
269 |
|
|
270 |
} catch (SQLException e) { |
|
271 |
logger.error("Error Accessing DB to save batch of tasks"+e); |
|
272 |
} finally { |
|
273 |
if (stmt != null) { |
|
274 |
try { |
|
275 |
stmt.close(); |
|
276 |
} catch (SQLException e) { |
|
277 |
logger.error("Accessing DB to save batch of tasks"+e); |
|
278 |
} |
|
279 |
} |
|
280 |
if (stmt1 != null) { |
|
281 |
try { |
|
282 |
stmt1.close(); |
|
283 |
} catch (SQLException e) { |
|
284 |
logger.error("Accessing DB to save batch of tasks"+e); |
|
285 |
} |
|
286 |
} |
|
287 |
} |
|
288 |
|
|
289 |
} |
|
290 |
|
|
291 |
@Override |
|
292 |
public void saveTasks(List<TaskStored> tasks, List<String> groupBy_values) { |
|
293 |
Connection con = null; |
|
294 |
PreparedStatement stmt = null, stmt1 = null; |
|
295 |
logger.debug("Accessing DB to save batch of tasks"); |
|
296 |
try { |
|
297 |
|
|
298 |
con = getConnection(); |
|
299 |
String query="INSERT INTO tasks(status, success, started, ended, job_id, rule_id, record_identifier, record_url) VALUES(?,?,?,?,?,?,?,?)";stmt = con.prepareStatement(query); |
|
300 |
stmt = con.prepareStatement(query); |
|
301 |
|
|
302 |
for (TaskStored t : tasks ) { |
|
303 |
stmt.setString(1, t.getStatus()); |
|
304 |
stmt.setBoolean(2, t.getSuccess()); |
|
305 |
stmt.setString(3, t.getStarted()); |
|
306 |
stmt.setString(4, t.getEnded()); |
|
307 |
stmt.setInt(5, Integer.parseInt(t.getJobId())); |
|
308 |
stmt.setInt(6, Integer.parseInt(t.getRuleId())); |
|
309 |
stmt.setString(7, t.getRecordIdentifier()); |
|
310 |
stmt.setString(8, t.getRecordUrl()); |
|
311 |
stmt.addBatch(); |
|
312 |
} |
|
313 |
stmt.executeBatch(); |
|
314 |
logger.debug("Tasks inserted: "+tasks.size()); |
|
315 |
|
|
316 |
if (groupBy_values != null) { |
|
317 |
logger.debug("Inserting record's groupBy values.."); |
|
318 |
query="INSERT INTO record_groupby(record_id, groupby, job_id) VALUES(?,?,?)"; |
|
319 |
stmt1 = con.prepareStatement(query); |
|
320 |
for (String value : groupBy_values) { |
|
321 |
stmt1.setString(1, tasks.get(0).getRecordIdentifier()); |
|
322 |
stmt1.setString(2, value); |
|
323 |
stmt1.setInt(3, Integer.parseInt(tasks.get(0).getJobId())); |
|
324 |
stmt1.addBatch(); |
|
325 |
} |
|
326 |
stmt1.executeBatch(); |
|
327 |
logger.debug("groupBy values inserted: "+groupBy_values.size()); |
|
328 |
} |
|
329 |
|
|
330 |
} catch (SQLException e) { |
|
331 |
logger.error("Error Accessing DB to save batch of tasks"+e); |
|
332 |
} finally { |
|
333 |
if (stmt != null) { |
|
334 |
try { |
|
335 |
stmt.close(); |
|
336 |
} catch (SQLException e) { |
|
337 |
logger.error("Accessing DB to save batch of tasks"+e); |
|
338 |
} |
|
339 |
} |
|
340 |
if (stmt1 != null) { |
|
341 |
try { |
|
342 |
stmt1.close(); |
|
343 |
} catch (SQLException e) { |
|
344 |
logger.error("Accessing DB to save batch of tasks"+e); |
|
345 |
} |
|
346 |
} |
|
347 |
} |
|
348 |
|
|
349 |
} |
|
350 |
|
|
351 |
@Override |
|
352 |
public void saveTasks(Map<String, RuleStatus> scoreMapPerRule) { |
|
353 |
Connection con = null; |
|
354 |
PreparedStatement stmt = null; |
|
355 |
logger.debug("Accessing DB to save batch of failed tasks"); |
|
356 |
try { |
|
357 |
|
|
358 |
con = getConnection(); |
|
359 |
String query="INSERT INTO tasks(status, success, started, ended, job_id, rule_id, record_identifier, record_url) VALUES(?,?,?,?,?,?,?,?)";stmt = con.prepareStatement(query); |
|
360 |
stmt = con.prepareStatement(query); |
|
361 |
|
|
362 |
for (Entry<String, RuleStatus> entry : scoreMapPerRule.entrySet()) { |
|
363 |
for (TaskStored t : entry.getValue().getFailedTasks() ) { |
|
364 |
stmt.setString(1, t.getStatus()); |
|
365 |
stmt.setBoolean(2, t.getSuccess()); |
|
366 |
stmt.setString(3, t.getStarted()); |
|
367 |
stmt.setString(4, t.getEnded()); |
|
368 |
stmt.setInt(5, Integer.parseInt(t.getJobId())); |
|
369 |
stmt.setInt(6, Integer.parseInt(t.getRuleId())); |
|
370 |
stmt.setString(7, t.getRecordIdentifier()); |
|
371 |
stmt.setString(8, t.getRecordUrl()); |
|
372 |
stmt.addBatch(); |
|
373 |
} |
|
374 |
} |
|
375 |
int result = stmt.executeBatch().length; |
|
376 |
logger.debug("Tasks inserted: "+ result); |
|
377 |
|
|
378 |
} catch (SQLException e) { |
|
379 |
logger.error("Error Accessing DB to save batch of failed tasks"+e); |
|
380 |
} finally { |
|
381 |
if (stmt != null) { |
|
382 |
try { |
|
383 |
stmt.close(); |
|
384 |
} catch (SQLException e) { |
|
385 |
logger.error("Accessing DB to save batch of failed tasks"+e); |
|
386 |
} |
|
387 |
} |
|
388 |
} |
|
389 |
|
|
390 |
} |
|
391 |
|
|
392 |
|
|
393 |
@Override |
|
394 |
protected int getLastId() throws SQLException { |
|
395 |
return 1; |
|
396 |
// ResultSet rs = null; |
|
397 |
// Connection con = null; |
|
398 |
// PreparedStatement stmt = null; |
|
399 |
// int retId = -1; |
|
400 |
// logger.debug("Accessing DB to get Task's next available id"); |
|
401 |
// try { |
|
402 |
// con = getConnection(); |
|
403 |
// String query="SELECT currval(pg_get_serial_sequence(?,?)) FROM tasks"; |
|
404 |
// stmt = con.prepareStatement(query); |
|
405 |
// stmt.setString(1, "tasks"); |
|
406 |
// stmt.setString(2, "rule_id"); |
|
407 |
// |
|
408 |
// rs = stmt.executeQuery(); |
|
409 |
// if (rs!=null){ |
|
410 |
// rs.next(); |
|
411 |
// retId=rs.getInt(1); |
|
412 |
// } |
|
413 |
// |
|
414 |
// |
|
415 |
// } catch (SQLException e) { |
|
416 |
// logger.error("Error while accessing DB to get Task's next available id: "+e); |
|
417 |
// } finally { |
|
418 |
// if (stmt != null) { |
|
419 |
// try { |
|
420 |
// stmt.close(); |
|
421 |
// } catch (SQLException e) { |
|
422 |
// logger.error("Error while accessing DB to get Task's next available id: "+e); |
|
423 |
// } |
|
424 |
// } |
|
425 |
// } |
|
426 |
// return retId; |
|
427 |
} |
|
428 |
|
|
429 |
@Override |
|
430 |
public void cleanTasks(int jobId) { |
|
431 |
Connection con = null; |
|
432 |
PreparedStatement stmt = null; |
|
433 |
logger.debug("Accessing DB to delete unneeded tasks"); |
|
434 |
try { |
|
435 |
con = getConnection(); |
|
436 |
String query="DELETE FROM tasks WHERE job_id = ? AND success = ?"; |
|
437 |
stmt = con.prepareStatement(query); |
|
438 |
stmt.setInt(1, jobId); |
|
439 |
stmt.setBoolean(2, true); |
|
440 |
stmt.executeUpdate(); |
|
441 |
stmt.close(); |
|
442 |
} catch (SQLException e) { |
|
443 |
logger.error("Error while Accessing DB to delete unneeded tasks: "+e); |
|
444 |
} finally { |
|
445 |
if (stmt != null) { |
|
446 |
try { |
|
447 |
stmt.close(); |
|
448 |
} catch (SQLException e) { |
|
449 |
logger.error("Error while Accessing DB to delete unneeded tasks: "+e); |
|
450 |
} |
|
451 |
} |
|
452 |
} |
|
453 |
|
|
454 |
} |
|
455 |
|
|
456 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/repositories/RepositoryStoredDAO.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao.repositories; |
|
2 |
|
|
3 |
import eu.dnetlib.validator.service.dao.DAO; |
|
4 |
|
|
5 |
import java.util.List; |
|
6 |
|
|
7 |
public interface RepositoryStoredDAO extends DAO<RepositoryStored> { |
|
8 |
|
|
9 |
public List<String> getBaseUrls(); |
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/repositories/RepositoryStoredDAOImpl.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao.repositories; |
|
2 |
|
|
3 |
import eu.dnetlib.validator.service.dao.AbstractDAO; |
|
4 |
|
|
5 |
import java.sql.Connection; |
|
6 |
import java.sql.PreparedStatement; |
|
7 |
import java.sql.ResultSet; |
|
8 |
import java.sql.SQLException; |
|
9 |
import java.util.ArrayList; |
|
10 |
import java.util.List; |
|
11 |
|
|
12 |
public class RepositoryStoredDAOImpl extends AbstractDAO<RepositoryStored> implements RepositoryStoredDAO { |
|
13 |
|
|
14 |
@Override |
|
15 |
public List<String> getBaseUrls() { |
|
16 |
ResultSet rs = null; |
|
17 |
Connection con = null; |
|
18 |
PreparedStatement stmt = null; |
|
19 |
List<String> retList = null; |
|
20 |
logger.debug("Accessing DB to get all activated Repositories Stored"); |
|
21 |
try { |
|
22 |
con = getConnection(); |
|
23 |
String query="SELECT base_url FROM repositories WHERE activation_id is null"; |
|
24 |
stmt = con.prepareStatement(query); |
|
25 |
rs = stmt.executeQuery(); |
|
26 |
if (rs!=null){ |
|
27 |
retList = new ArrayList<String>(); |
|
28 |
while (rs.next()) { |
|
29 |
retList.add(rs.getString(1)); |
|
30 |
} |
|
31 |
} |
|
32 |
|
|
33 |
} catch (SQLException e) { |
|
34 |
logger.error("Error while accessing DB to get all activated Repositories Stored: "+e); |
|
35 |
} finally { |
|
36 |
if (stmt != null) { |
|
37 |
try { |
|
38 |
stmt.close(); |
|
39 |
} catch (SQLException e) { |
|
40 |
logger.error("Error while accessing DB to get all activated Repositories Stored: "+e); |
|
41 |
} |
|
42 |
} |
|
43 |
} |
|
44 |
return retList; |
|
45 |
|
|
46 |
|
|
47 |
} |
|
48 |
|
|
49 |
@Override |
|
50 |
protected PreparedStatement getUpdateStatement(RepositoryStored t, |
|
51 |
Connection con) throws SQLException { |
|
52 |
String query="UPDATE repositories SET activation_id=? WHERE activation_id=?"; |
|
53 |
PreparedStatement stmt = con.prepareStatement(query); |
|
54 |
stmt.setString(1, null); |
|
55 |
stmt.setString(2, t.getActivationId()); |
|
56 |
return stmt; |
|
57 |
} |
|
58 |
|
|
59 |
@Override |
|
60 |
protected PreparedStatement getInsertStatement(RepositoryStored t, |
|
61 |
Connection con) throws SQLException { |
|
62 |
String query="INSERT INTO repositories(base_url,activation_id) VALUES(?,?)"; |
|
63 |
PreparedStatement stmt = con.prepareStatement(query); |
|
64 |
stmt.setString(1, t.getBaseUrl()); |
|
65 |
stmt.setString(2, t.getBaseUrl()); |
|
66 |
return stmt; |
|
67 |
} |
|
68 |
|
|
69 |
@Override |
|
70 |
protected PreparedStatement getDeleteStatement(String id, Connection con) |
|
71 |
throws SQLException { |
|
72 |
// TODO Auto-generated method stub |
|
73 |
return null; |
|
74 |
} |
|
75 |
|
|
76 |
@Override |
|
77 |
protected int getLastId() throws SQLException { |
|
78 |
// TODO Auto-generated method stub |
|
79 |
return 0; |
|
80 |
} |
|
81 |
|
|
82 |
@Override |
|
83 |
public RepositoryStored get(String id) { |
|
84 |
// TODO Auto-generated method stub |
|
85 |
return null; |
|
86 |
} |
|
87 |
|
|
88 |
|
|
89 |
} |
modules/uoa-validator-service/trunk/src/main/java/eu/dnetlib/validator/service/dao/repositories/RepositoryStored.java | ||
---|---|---|
1 |
package eu.dnetlib.validator.service.dao.repositories; |
|
2 |
|
|
3 |
/** |
|
4 |
* |
|
5 |
* @author Nikon Gasparis |
|
6 |
* |
|
7 |
*/ |
|
8 |
public class RepositoryStored { |
|
9 |
|
|
10 |
private String baseUrl; |
|
11 |
private String activationId; |
|
12 |
|
|
13 |
|
|
14 |
public String getBaseUrl() { |
|
15 |
return baseUrl; |
|
16 |
} |
|
17 |
public void setBaseUrl(String baseUrl) { |
|
18 |
this.baseUrl = baseUrl; |
|
19 |
} |
|
20 |
public String getActivationId() { |
|
21 |
return activationId; |
|
22 |
} |
|
23 |
public void setActivationId(String activationId) { |
|
24 |
this.activationId = activationId; |
|
25 |
} |
|
26 |
|
|
27 |
|
|
28 |
|
|
29 |
|
Also available in: Unified diff
*new version of validator service
*it now includes the validator implementation(replaces uoa-validator)
*registry for jobs,rules and providers is now removed.
*supports and implements the new ValidatorService interface
*new way to submit a new job (a common method is used for tests,registrations,or cris)
*content and usage jobs are now merged to one.
*listeners updated to support job merging
*works as standalone or with IS (BETA)