Project

General

Profile

1
package eu.dnetlib.msro.logging;
2

    
3
import java.time.LocalDateTime;
4
import java.util.Iterator;
5
import java.util.Map;
6

    
7
import javax.annotation.PostConstruct;
8

    
9
import org.springframework.beans.factory.annotation.Required;
10
import org.springframework.core.io.Resource;
11

    
12
public class DnetLogger implements Iterable<Map<String, String>> {
13

    
14
	private String name;
15

    
16
	private Resource indexConf;
17

    
18
	@javax.annotation.Resource
19
	private DnetLoggerDao dao;
20

    
21
	@PostConstruct
22
	public void init() {
23
		dao.init(name);
24
		dao.configureIndex(name, DnetLogConfigurationLoader.getIndexedPaths(indexConf));
25
	}
26

    
27
	public LogMessage newLogMessage(final DnetLogLevel level) {
28
		return new LogMessage(dao, name, level);
29
	}
30

    
31
	public LogMessage newLogMessage() {
32
		return newLogMessage(DnetLogLevel.INFO);
33
	}
34

    
35
	public Iterator<Map<String, String>> find(final String key, final String value) {
36
		return dao.find(name, key, value);
37
	}
38

    
39
	public Iterator<Map<String, String>> find(final Map<String, Object> criteria) {
40
		return dao.find(name, criteria);
41
	}
42

    
43
	public Map<String, String> findOne(final String key, final String value) {
44
		return dao.findOne(name, key, value);
45
	}
46

    
47
	public Map<String, String> findOne(final Map<String, Object> criteria) {
48
		return dao.findOne(name, criteria);
49
	}
50

    
51
	@Override
52
	public Iterator<Map<String, String>> iterator() {
53
		return dao.obtainLogIterator(name);
54
	}
55

    
56
	public String getName() {
57
		return name;
58
	}
59

    
60
	@Required
61
	public void setName(final String name) {
62
		this.name = name;
63
	}
64

    
65
	public Resource getIndexConf() {
66
		return indexConf;
67
	}
68

    
69
	public void setIndexConf(final Resource indexConf) {
70
		this.indexConf = indexConf;
71
	}
72

    
73
	public Iterator<Map<String, String>> range(final LocalDateTime startDate, final LocalDateTime endDate) {
74
		return dao.findByDateRange(name, startDate, endDate);
75
	}
76

    
77
	public Iterator<Map<String, String>> range(final LocalDateTime startDate, final LocalDateTime endDate, final String key, final String value) {
78
		return dao.findByDateRange(name, startDate, endDate, key, value);
79
	}
80

    
81
	public Iterator<Map<String, String>> range(final LocalDateTime startDate, final LocalDateTime endDate, final Map<String, Object> criteria) {
82
		return dao.findByDateRange(name, startDate, endDate, criteria);
83
	}
84

    
85
}
(3-3/7)