Project

General

Profile

« Previous | Next » 

Revision 47915

[maven-release-plugin] copy for tag dnet-mongo-logging-2.0.1

View differences:

modules/dnet-mongo-logging/tags/dnet-mongo-logging-2.0.1/deploy.info
1
{"type_source": "SVN", "goal": "package -U -T 4C source:jar", "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-mongo-logging/trunk/", "deploy_repository": "dnet45-snapshots", "version": "4", "mail": "sandro.labruzzo@isti.cnr.it,michele.artini@isti.cnr.it, claudio.atzori@isti.cnr.it, alessia.bardi@isti.cnr.it", "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet45-snapshots", "name": "dnet-mongo-logging"}
modules/dnet-mongo-logging/tags/dnet-mongo-logging-2.0.1/src/main/java/eu/dnetlib/common/logging/dao/DnetLoggerMongoDao.java
1
package eu.dnetlib.common.logging.dao;
2

  
3
import java.util.*;
4
import java.util.Map.Entry;
5
import java.util.function.Consumer;
6
import javax.annotation.Resource;
7

  
8
import com.google.common.collect.Lists;
9
import com.google.common.collect.Maps;
10
import com.google.common.collect.Sets;
11
import com.mongodb.BasicDBObject;
12
import com.mongodb.BasicDBObjectBuilder;
13
import com.mongodb.client.MongoCollection;
14
import com.mongodb.client.MongoCursor;
15
import com.mongodb.client.MongoDatabase;
16
import com.mongodb.client.model.Filters;
17
import com.mongodb.client.model.IndexOptions;
18
import eu.dnetlib.common.logging.LogMessage;
19
import org.apache.commons.lang.StringUtils;
20
import org.apache.commons.logging.Log;
21
import org.apache.commons.logging.LogFactory;
22
import org.bson.Document;
23
import org.bson.conversions.Bson;
24

  
25
public class DnetLoggerMongoDao implements DnetLoggerDao {
26

  
27
	private static final Log log = LogFactory.getLog(DnetLoggerMongoDao.class);
28

  
29
	@Resource(name = "loggingMongoDB")
30
	private MongoDatabase db;
31

  
32
	private IndexOptions indexOptions = new IndexOptions().background(true);
33

  
34
	@Override
35
	public void init(final String collection) {
36
		final Set<String> collections = Sets.newHashSet();
37
		db.listCollectionNames().forEach((Consumer<? super String>) c -> collections.add(c));
38

  
39
		if (!Lists.newArrayList(collections).contains(collection)) {
40
			log.info(String.format("creating collection %s", collection));
41
			db.createCollection(collection);
42
		}
43
	}
44

  
45
	@Override
46
	public void configureIndex(final String collection, final Map<String, IndexConf> conf) {
47
		final MongoCollection<Document> coll = db.getCollection(collection);
48
		coll.dropIndexes();
49
		for (String key : conf.keySet()) {
50
			coll.createIndex(new BasicDBObject(key, 1), indexOptions);
51
		}
52
	}
53

  
54
	@Override
55
	public void writeLog(final String collection, final Map<String, Object> map) {
56
		final MongoCollection coll = db.getCollection(collection);
57
		final Document doc = new Document(replaceKeyNames(map));
58
		coll.insertOne(doc);
59
	}
60

  
61
	private Map<String, Object> replaceKeyNames(final Map<String, Object> inputMap) {
62
		final Map<String, Object> outMap = Maps.newHashMap();
63

  
64
		if (inputMap != null) {
65
			for (Entry<String, Object> e : inputMap.entrySet()) {
66
				final String k = e.getKey();
67
				if (!StringUtils.isBlank(k)) {
68
					Object v = e.getValue();
69
					outMap.put(k.replaceAll("\\.", "_"), v != null ? v : "null");
70
				}
71
			}
72
		}
73
		return outMap;
74
	}
75

  
76
	@Override
77
	public Map<String, String> findOne(final String collection, final String key, final String value) {
78
		final MongoCollection coll = db.getCollection(collection);
79
		final Document doc = (Document) coll.find(Filters.eq(key, value), Document.class).first();
80
		//final DBObject obj = coll.find(getBasicQuery(key, value)).as(BasicDBObject.class);
81

  
82
		return dbObject2Map(doc);
83
	}
84

  
85
	@Override
86
	public Iterator<Map<String, String>> obtainLogIterator(final String collection) {
87
		final MongoCollection coll = db.getCollection(collection);
88
		return iter(coll.find().iterator());
89
	}
90

  
91
	@Override
92
	public Iterator<Map<String, String>> find(final String collection, final String key, final String value) {
93
		final MongoCollection coll = db.getCollection(collection);
94
		return iter(coll.find(getBasicQuery(key, value)).iterator());
95
	}
96

  
97
	@Override
98
	public Iterator<Map<String, String>> find(final String collection, final Map<String, Object> criteria) {
99
		final MongoCollection coll = db.getCollection(collection);
100
		return iter(coll.find(getCustomQuery(criteria)).iterator());
101
	}
102

  
103
	@Override
104
	public Iterator<Map<String, String>> findByDateRange(final String collection, final Date startDate, final Date endDate) {
105
		final MongoCollection coll = db.getCollection(collection);
106
		return iter(coll.find(getDateQuery(startDate, endDate)).iterator());
107
	}
108

  
109
	@Override
110
	public Iterator<Map<String, String>> findByDateRange(final String collection, final Date startDate, final Date endDate, final String key, final String value) {
111
		final MongoCollection coll = db.getCollection(collection);
112
		final Bson query = Filters.and(getBasicQuery(key, value), getDateQuery(startDate, endDate));
113
		return iter(coll.find(query).iterator());
114
	}
115

  
116
	@Override
117
	public Iterator<Map<String, String>> findByDateRange(final String collection, final Date startDate, final Date endDate, final Map<String, Object> criteria) {
118
		final MongoCollection coll = db.getCollection(collection);
119
		final Bson query = Filters.and(getCustomQuery(criteria), getDateQuery(startDate, endDate));
120
		return iter(coll.find(query).iterator());
121
	}
122

  
123
	@Override
124
	public Iterator<Map<String, String>> find(final String collection, final String mongoquery, final List<String> fields) {
125
		final MongoCollection coll = db.getCollection(collection);
126
		final Bson query = BasicDBObject.parse(mongoquery);
127
		return iter(coll.find(query).iterator());
128
	}
129

  
130
	private Bson getBasicQuery(final String key, final String value) {
131
		return new BasicDBObject(key, value);
132
	}
133

  
134
	private Bson getDateQuery(final Date startDate, final Date endDate) {
135
		return Filters.and(
136
				Filters.gte(LogMessage.LOG_DATE_FIELD, startDate.getTime()),
137
				Filters.lt(LogMessage.LOG_DATE_FIELD, endDate.getTime()));
138
	}
139

  
140
	private Bson getCustomQuery(final Map<String, Object> criteria) {
141
		final BasicDBObjectBuilder b = new BasicDBObjectBuilder();
142
		criteria.forEach((k, v) -> b.add(k, v));
143
		return (BasicDBObject) b.get();
144
	}
145

  
146
	private Bson dateRangeQuery(final Date startDate, final Date endDate) {
147
		Bson dateFilter = Filters.and(Filters.gte(LogMessage.LOG_DATE_FIELD, startDate.getTime()), Filters.lt(LogMessage.LOG_DATE_FIELD, endDate.getTime()));
148
		log.debug("Date filter created: " + dateFilter);
149
		//return new BasicDBObject(LogMessage.LOG_DATE_FIELD, BasicDBObjectBuilder.start("$gte", startDate.getTime()).append("$lt", endDate.getTime()).get());
150
		return dateFilter;
151
	}
152

  
153
	private Iterator<Map<String, String>> iter(final MongoCursor<Document> cursor) {
154
		return new Iterator<Map<String, String>>() {
155

  
156
			@Override
157
			public boolean hasNext() {
158
				return cursor.hasNext();
159
			}
160

  
161
			@Override
162
			public Map<String, String> next() {
163
				return dbObject2Map(cursor.next());
164
			}
165

  
166
			@Override
167
			public void remove() {
168
				throw new RuntimeException("NOT IMPLEMENTED");
169
			}
170
		};
171
	}
172

  
173
	private Map<String, String> dbObject2Map(final Document doc) {
174
		final Map<String, String> res = Maps.newHashMap();
175
		if (doc != null) {
176
			for (String k : doc.keySet()) {
177
				res.put(k, "" + doc.get(k));
178
			}
179
		}
180
		return res;
181
	}
182

  
183
}
modules/dnet-mongo-logging/tags/dnet-mongo-logging-2.0.1/src/main/resources/eu/dnetlib/common/logging/dao/applicationContext-dnet-mongo-logging.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
       xmlns:p="http://www.springframework.org/schema/p"
4
       xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns="http://www.springframework.org/schema/beans"
5
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
6
                        http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd">
7

  
8
	<bean id="dnetLoggerMongoDao" class="eu.dnetlib.common.logging.dao.DnetLoggerMongoDao" />
9

  
10
	<bean id="loggingMongoClient" class="com.mongodb.MongoClient">
11
		<constructor-arg index="0" type="com.mongodb.ServerAddress">
12
			<bean class="com.mongodb.ServerAddress">
13
				<constructor-arg index="0" value="${dnet.logger.mongo.host}"/>
14
				<constructor-arg index="1" value="${dnet.logger.mongo.port}"/>
15
			</bean>
16
		</constructor-arg>
17
	</bean>
18

  
19
	<bean id="loggingMongoDB" factory-bean="loggingMongoClient"
20
	      factory-method="getDatabase">
21
		<constructor-arg type="java.lang.String" value="${dnet.logger.mongo.db}"/>
22
	</bean>
23

  
24
</beans>
modules/dnet-mongo-logging/tags/dnet-mongo-logging-2.0.1/src/main/resources/eu/dnetlib/common/logging/dao/applicationContext-dnet-mongo-logging.properties
1
dnet.logger.mongo.host = localhost
2
dnet.logger.mongo.port = 27017
3
dnet.logger.mongo.db   = dnet_logs
modules/dnet-mongo-logging/tags/dnet-mongo-logging-2.0.1/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
	<parent>
4
		<groupId>eu.dnetlib</groupId>
5
		<artifactId>dnet45-parent</artifactId>
6
		<version>1.0.0</version>
7
		<relativePath />
8
	</parent>
9
	<modelVersion>4.0.0</modelVersion>
10
	<groupId>eu.dnetlib</groupId>
11
	<artifactId>dnet-mongo-logging</artifactId>
12
	<packaging>jar</packaging>
13
	<version>2.0.1</version>
14
	<scm>
15
	  <developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-mongo-logging/tags/dnet-mongo-logging-2.0.1</developerConnection>
16
	</scm>
17
	<dependencies>
18
		<dependency>
19
			<groupId>org.mongodb</groupId>
20
			<artifactId>mongo-java-driver</artifactId>
21
			<version>${mongodb.driver.version}</version>
22
		</dependency>
23
		<dependency>
24
			<groupId>eu.dnetlib</groupId>
25
			<artifactId>dnet-modular-logging</artifactId>
26
			<version>[1.0.0,2.0.0)</version>
27
		</dependency>
28
	</dependencies>
29
</project>

Also available in: Unified diff