Browse Source

DATADOC-83 - Review dependencies

Removed dependency on spring mvc in data-document-core to spring-data-document-examples\mongodb-myrestaurants-analytics
pull/1/head
Mark Pollack 15 years ago
parent
commit
adc56ce79f
  1. 4
      spring-data-document-core/pom.xml
  2. 43
      spring-data-document-core/src/main/java/org/springframework/data/document/analytics/ControllerCounter.java
  3. 83
      spring-data-document-core/src/main/java/org/springframework/data/document/analytics/MvcEvent.java
  4. 35
      spring-data-document-core/src/main/java/org/springframework/data/document/analytics/Parameters.java
  5. 246
      spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/analytics/MvcAnalyticsTests.java

4
spring-data-document-core/pom.xml

@ -21,10 +21,6 @@ @@ -21,10 +21,6 @@
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>

43
spring-data-document-core/src/main/java/org/springframework/data/document/analytics/ControllerCounter.java

@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
package org.springframework.data.document.analytics;
import java.util.Map;
public class ControllerCounter {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getCount() {
return count;
}
public void setCount(double count) {
this.count = count;
}
public Map<String, Double> getMethods() {
return methods;
}
public void setMethods(Map<String, Double> methods) {
this.methods = methods;
}
private String name;
private double count;
private Map<String, Double> methods;
@Override
public String toString() {
return "ControllerCounter [name=" + name + ", count=" + count
+ ", methods=" + methods + "]";
}
}

83
spring-data-document-core/src/main/java/org/springframework/data/document/analytics/MvcEvent.java

@ -1,83 +0,0 @@ @@ -1,83 +0,0 @@
package org.springframework.data.document.analytics;
import java.util.Date;
public class MvcEvent {
private String controller;
private String action;
private Parameters parameters;
private Date date;
private String requestUri;
private String requestAddress;
private String remoteUser;
private String view;
public String getController() {
return controller;
}
public void setController(String controller) {
this.controller = controller;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public Parameters getParameters() {
return parameters;
}
public void setParameters(Parameters parameters) {
this.parameters = parameters;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getRequestUri() {
return requestUri;
}
public void setRequestUri(String requestUri) {
this.requestUri = requestUri;
}
public String getRequestAddress() {
return requestAddress;
}
public void setRequestAddress(String requestAddress) {
this.requestAddress = requestAddress;
}
public String getRemoteUser() {
return remoteUser;
}
public void setRemoteUser(String remoteUser) {
this.remoteUser = remoteUser;
}
//TODO
//Map sessionAttributes
}

35
spring-data-document-core/src/main/java/org/springframework/data/document/analytics/Parameters.java

@ -1,35 +0,0 @@ @@ -1,35 +0,0 @@
package org.springframework.data.document.analytics;
public class Parameters {
private String p1;
private String p2;
private String p3;
public String getP1() {
return p1;
}
public void setP1(String p1) {
this.p1 = p1;
}
public String getP2() {
return p2;
}
public void setP2(String p2) {
this.p2 = p2;
}
public String getP3() {
return p3;
}
public void setP3(String p3) {
this.p3 = p3;
}
}

246
spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/analytics/MvcAnalyticsTests.java

@ -1,246 +0,0 @@ @@ -1,246 +0,0 @@
package org.springframework.data.document.mongodb.analytics;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.QueryBuilder;
import com.mongodb.WriteResult;
import org.bson.types.ObjectId;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.data.document.analytics.ControllerCounter;
import org.springframework.data.document.analytics.MvcEvent;
import org.springframework.data.document.analytics.Parameters;
import org.springframework.data.document.mongodb.MongoTemplate;
import org.springframework.data.document.mongodb.convert.AbstractMongoConverter;
import org.springframework.data.document.mongodb.mapping.MongoPersistentEntity;
import org.springframework.data.document.mongodb.mapping.MongoPersistentProperty;
import org.springframework.data.document.mongodb.query.BasicQuery;
import org.springframework.data.mapping.model.MappingContext;
public class MvcAnalyticsTests {
private MongoTemplate mongoTemplate;
private MongoTemplate mongoDummyTemplate;
@Before
public void setUp() throws Exception {
Mongo m = new Mongo();
mongoTemplate = new MongoTemplate(m, "mvc");
mongoDummyTemplate = new MongoTemplate(mongoTemplate.getDbFactory(), new AbstractMongoConverter() {
public void write(Object t, DBObject dbo) {
}
public <S> S read(Class<S> clazz, DBObject dbo) {
return null;
}
public <T> T convertObjectId(ObjectId id, Class<T> targetType) {
return null;
}
public ObjectId convertObjectId(Object id) {
return null;
}
public MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> getMappingContext() {
return null;
}
});
}
@Test
public void clean() {
mongoTemplate.dropCollection("mvc");
mongoTemplate.createCollection("mvc");
mongoTemplate.dropCollection("counters");
mongoTemplate.createCollection("counters");
}
@Test
public void loadMvcEventData() {
mongoTemplate.dropCollection("mvc");
mongoTemplate.createCollection("mvc");
// datasize, favoriteRestId
createAndStoreMvcEvent(5, 1);
createAndStoreMvcEvent(6, 2);
createAndStoreMvcEvent(3, 3);
createAndStoreMvcEvent(8, 4);
List<MvcEvent> mvcEvents = mongoTemplate.getCollection("mvc", MvcEvent.class);
Assert.assertEquals(22, mvcEvents.size());
mongoDummyTemplate.getCollection("mvc", MvcEvent.class);
}
@Test
public void loadCounterData() {
for (int i = 0; i < 10; i++) {
storeCounterData("SignUpController", "createForm");
storeCounterData("SignUpController", "create");
storeCounterData("SignUpController", "show");
storeCounterData("RestaurantController", "addFavoriteRestaurant");
}
for (int i = 0; i < 5; i++) {
storeCounterData("RestaurantController", "list");
storeCounterData("SignUpController", "show");
}
}
@Test
public void queryCounterData() {
DBObject query = QueryBuilder.start("name").is("SignUpController").get();
for (DBObject dbo : mongoTemplate.getCollection("counters").find(query)) {
System.out.println(dbo);
}
List<ControllerCounter> counters = mongoTemplate.find("counters",
new BasicQuery("{ 'name' : 'SignUpController'} "), ControllerCounter.class);
for (ControllerCounter controllerCounter : counters) {
System.out.println(controllerCounter);
}
}
/*
*
* var start = new Date(2010,9,1); var end = new Date(2010,11,1);
* db.mvc.group( { cond: {"action": "addFavoriteRestaurant", "date": {$gte:
* start, $lt: end}} , key: {"parameters.p1": true} , initial: {count: 0} ,
* reduce: function(doc, out){ out.count++; } } );
*/
@Test
public void listAllMvcEvents() {
List<MvcEvent> mvcEvents = mongoTemplate.getCollection("mvc", MvcEvent.class);
for (MvcEvent mvcEvent : mvcEvents) {
System.out.println(mvcEvent.getDate());
}
}
@Test
public void groupQuery() {
// This circumvents exception translation
DBCollection collection = mongoTemplate.getDb().getCollection("mvc");
// QueryBuilder qb = new QueryBuilder();
// qb.start("date").greaterThan(object)
Calendar startDate = Calendar.getInstance();
startDate.clear();
startDate.set(Calendar.YEAR, 2010);
startDate.set(Calendar.MONTH, 5);
Calendar endDate = Calendar.getInstance();
endDate.clear();
endDate.set(Calendar.YEAR, 2010);
endDate.set(Calendar.MONTH, 12);
/*
* QueryBuilder qb = new QueryBuilder(); Query q =
* qb.find("date").gte(startDate
* .getTime()).lt(endDate.getTime()).and("action"
* ).is("addFavoriteRestaurant").build(); DBObject cond2 =
* q.getQueryObject();
*/
DBObject cond = QueryBuilder.start("date").greaterThanEquals(startDate.getTime()).lessThan(endDate.getTime())
.and("action").is("addFavoriteRestaurant").get();
DBObject key = new BasicDBObject("parameters.p1", true);
/*
* DBObject dateQ = new BasicDBObject(); dateQ.put("$gte",
* startDate.getTime()); dateQ.put("$lt", endDate.getTime()); DBObject
* cond = new BasicDBObject(); cond.put("action",
* "addFavoriteRestaurant"); cond.put("date", dateQ);
*/
DBObject intitial = new BasicDBObject("count", 0);
DBObject result = collection.group(key, cond, intitial, "function(doc, out){ out.count++; }");
if (result instanceof BasicDBList) {
BasicDBList dbList = (BasicDBList) result;
for (Object element : dbList) {
DBObject dbo = (DBObject) element;
System.out.println(dbo);
}
}
System.out.println(result);
}
@Test
public void storeControllerCounterInfo() {
BasicDBObject query = new BasicDBObject("name", "controller1");
BasicDBObject changes = new BasicDBObject();
changes.put("$set", new BasicDBObject("name", "controller1"));
changes.put("$inc", new BasicDBObject("count", 1));
// mongoTemplate.upsertAndModify(dbo("key","value"), inc("count",1));
// dbo(set("name","controller"), inc("count", 1));
// /mongoTemplate.update(collection("counters")
WriteResult r = mongoTemplate.getCollection("counters").update(query, changes, true, false);
// { "err" : "Modifiers and non-modifiers cannot be mixed" , "code" : 10154 , "n" : 0 , "ok" : 1.0}
// { "err" : null , "updatedExisting" : false , "upserted" : { "$oid" : "4cba814a5a4900000000495d"} , "n" : 1 , "ok"
// : 1.0}
// { "err" : null , "updatedExisting" : true , "n" : 1 , "ok" : 1.0}
System.out.println(r);
// changes = new BasicDBObject("methods", new BasicDBObject("find", 1));
// mongoTemplate.getCollection("counters").update(query, changes, true,
// false);
}
@Test
public void updateMethodCounter() {
DBObject query = new BasicDBObject("name", "controller1");
DBObject changes = new BasicDBObject("$inc", new BasicDBObject("methods.find", 1));
mongoTemplate.getDb().getCollection("counters").update(query, changes, true, false);
}
public void storeCounterData(String controllerName, String methodName) {
BasicDBObject query = new BasicDBObject("name", controllerName);
BasicDBObject changes = new BasicDBObject();
changes.put("$set", new BasicDBObject("name", controllerName));
changes.put("$inc", new BasicDBObject("count", 1));
WriteResult r = mongoTemplate.getCollection("counters").update(query, changes, true, false);
System.out.println(r);
changes = new BasicDBObject("$inc", new BasicDBObject("methods." + methodName, 1));
r = mongoTemplate.getDb().getCollection("counters").update(query, changes, true, false);
System.out.println(r);
}
private void createAndStoreMvcEvent(int dataSize, int p1) {
for (int i = 0; i < dataSize; i++) {
MvcEvent event = generateEvent(p1);
mongoTemplate.save("mvc", event);
}
}
private MvcEvent generateEvent(Integer p1) {
MvcEvent event = new MvcEvent();
event.setController("RestaurantController");
event.setAction("addFavoriteRestaurant");
event.setDate(new Date());
event.setRemoteUser("mpollack");
event.setRequestAddress("127.0.0.1");
event.setRequestUri("/myrestaurants-analytics/restaurants");
Parameters params = new Parameters();
params.setP1(p1.toString());
params.setP2("2");
event.setParameters(params);
return event;
}
}
Loading…
Cancel
Save