Author: mfranklin
Date: Tue Oct 16 14:54:23 2012
New Revision: 1398830
URL: http://svn.apache.org/viewvc?rev=1398830&view=rev
Log:
Refactored implementations to MongoModelTemplate
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoUserTemplate.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoWidgetTemplate.java
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java?rev=1398830&r1=1398829&r2=1398830&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
Tue Oct 16 14:54:23 2012
@@ -20,6 +20,8 @@
package org.apache.rave.portal.repository;
import org.apache.rave.portal.model.Page;
+import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.Widget;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
@@ -35,6 +37,6 @@ public interface MongoModelOperations<T>
T save(T item);
public static interface MongoPageOperations extends
MongoModelOperations<Page> {}
- public static interface MongoUserOperations extends
MongoModelOperations<Page> {}
- public static interface MongoWidgetOperations extends
MongoModelOperations<Page> {}
+ public static interface MongoUserOperations extends
MongoModelOperations<User> {}
+ public static interface MongoWidgetOperations extends
MongoModelOperations<Widget> {}
}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java?rev=1398830&r1=1398829&r2=1398830&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
Tue Oct 16 14:54:23 2012
@@ -20,12 +20,10 @@
package org.apache.rave.portal.repository.impl;
import org.apache.rave.portal.model.*;
-import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
import org.apache.rave.portal.model.util.WidgetStatistics;
+import org.apache.rave.portal.repository.MongoModelOperations;
import org.apache.rave.portal.repository.WidgetRepository;
-import org.apache.rave.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Order;
import org.springframework.data.mongodb.core.query.Query;
@@ -41,79 +39,73 @@ import static org.springframework.data.m
*/
@Repository
public class MongoDbWidgetRepository implements WidgetRepository {
- public static final String COLLECTION = "widget";
@Autowired
- private MongoOperations template;
-
- @Autowired
- private HydratingConverterFactory converter;
+ private MongoModelOperations.MongoWidgetOperations template;
@Override
public List<Widget> getAll() {
- return null;
+ return template.find(new Query());
}
@Override
public List<Widget> getLimitedList(int offset, int pageSize) {
- return hydrateWidgets(template.find(new
Query().skip(offset).limit(pageSize), MongoDbWidget.class, COLLECTION));
+ return template.find(new Query().skip(offset).limit(pageSize));
}
@Override
public int getCountAll() {
- return (int)template.count(new Query(), COLLECTION);
+ return (int)template.count(new Query());
}
@Override
public List<Widget> getByFreeTextSearch(String searchTerm, int offset, int
pageSize) {
Query query = new
Query(getFreeTextClause(searchTerm)).skip(offset).limit(pageSize);
- return hydrateWidgets(template.find(query, MongoDbWidget.class,
COLLECTION));
+ return template.find(query);
}
@Override
public int getCountFreeTextSearch(String searchTerm) {
- return 0;
+ return (int)template.count(new Query(getFreeTextClause(searchTerm)));
}
@Override
public List<Widget> getByStatus(WidgetStatus widgetStatus, int offset, int
pageSize) {
Query query = new
Query(where("widgetStatus").is(widgetStatus)).skip(offset).limit(pageSize);
- query.sort().on("title", Order.ASCENDING);
- List<MongoDbWidget> widgets = template.find(query,
MongoDbWidget.class, COLLECTION);
- return hydrateWidgets(widgets);
+ return template.find(query);
}
@Override
public int getCountByStatus(WidgetStatus widgetStatus) {
- return (int)template.count(new
Query(where("widgetStatus").is(widgetStatus)), COLLECTION);
+ return (int)template.count(new
Query(where("widgetStatus").is(widgetStatus)));
}
@Override
public List<Widget> getByStatusAndTypeAndFreeTextSearch(WidgetStatus
widgetStatus, String type, String searchTerm, int offset, int pageSize) {
Query query = getWidgetStatusFreeTextQuery(widgetStatus, type,
searchTerm).limit(pageSize).skip(offset);
query.sort().on("title", Order.ASCENDING);
- List<MongoDbWidget> widgets = template.find(query,
MongoDbWidget.class, COLLECTION);
- return hydrateWidgets(widgets);
+ return template.find(query);
}
@Override
public int getCountByStatusAndTypeAndFreeText(WidgetStatus widgetStatus,
String type, String searchTerm) {
- return (int)template.count(getWidgetStatusFreeTextQuery(widgetStatus,
type, searchTerm), COLLECTION);
+ return (int)template.count(getWidgetStatusFreeTextQuery(widgetStatus,
type, searchTerm));
}
@Override
public List<Widget> getByOwner(User owner, int offset, int pageSize) {
- return null;
+ Query query = getQueryByOwner(owner).skip(offset).limit(pageSize);
+ return template.find(query);
}
@Override
public int getCountByOwner(User owner, int offset, int pageSize) {
- return 0; //To change body of implemented methods use File | Settings
| File Templates.
+ return (int)template.count(getQueryByOwner(owner));
}
@Override
public Widget getByUrl(String widgetUrl) {
- return hydrateWidget(template.findOne(new
Query(where("url").is(widgetUrl)), MongoDbWidget.class, COLLECTION));
+ return template.findOne(new Query(where("url").is(widgetUrl)));
}
@Override
@@ -153,32 +145,17 @@ public class MongoDbWidgetRepository imp
@Override
public Widget get(long id) {
- return hydrateWidget(template.findById(id, MongoDbWidget.class,
COLLECTION));
+ return template.get(id);
}
@Override
public Widget save(Widget item) {
- MongoDbWidget converted = converter.convert(item, Widget.class);
- template.save(converted, COLLECTION);
- converter.hydrate(converted, Widget.class);
- return converted;
+ return template.save(item);
}
@Override
public void delete(Widget item) {
- template.remove(template.findById(item.getId(), MongoDbWidget.class,
COLLECTION));
- }
-
- private List<Widget> hydrateWidgets(List<MongoDbWidget> widgets) {
- for(MongoDbWidget widget : widgets) {
- converter.hydrate(widget, Widget.class);
- }
- return CollectionUtils.<Widget>toBaseTypedList(widgets);
- }
-
- private Widget hydrateWidget(MongoDbWidget widget) {
- converter.hydrate(widget, Widget.class);
- return widget;
+ template.remove(new Query(where("_id").is(item.getId())));
}
private Query getWidgetStatusFreeTextQuery(WidgetStatus widgetStatus,
String type, String searchTerm) {
@@ -192,4 +169,8 @@ public class MongoDbWidgetRepository imp
String regex = "/" + searchTerm + "/";
return where("title").is(regex).orOperator(where("title").is(regex));
}
+
+ private Query getQueryByOwner(User owner) {
+ return new Query(where("ownerId").is(owner.getId()));
+ }
}
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java?rev=1398830&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
Tue Oct 16 14:54:23 2012
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.repository.impl;
+
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.repository.MongoModelOperations;
+import org.apache.rave.util.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.List;
+
+/**
+ */
+public class MongoModelTemplate<T, E extends T> implements
MongoModelOperations<T> {
+
+ @Autowired
+ protected MongoOperations mongoTemplate;
+
+ @Autowired
+ protected HydratingConverterFactory converter;
+
+ protected final Class<T> type;
+ protected final Class<E> dbType;
+ protected final String collection;
+
+ public MongoModelTemplate(Class<T> type, Class<E> dbType, String
collection) {
+ this.type = type;
+ this.dbType = dbType;
+ this.collection = collection;
+ }
+
+ @Override
+ public long count(Query query) {
+ return mongoTemplate.count(query, collection);
+ }
+
+ @Override
+ public void remove(Query query) {
+ mongoTemplate.remove(query, collection);
+ }
+
+ @Override
+ public T get(long id) {
+ E fromDb = mongoTemplate.findById(id, dbType, collection);
+ if(fromDb == null) {
+ throw new IllegalStateException("Could not find requested page: "
+ id);
+ }
+ return hydrate(fromDb);
+ }
+
+ @Override
+ public T save(T item) {
+ E converted = converter.convert(item, type);
+ mongoTemplate.save(converted, collection);
+ converter.hydrate(converted, type);
+ return converted;
+ }
+
+ @Override
+ public T findOne(Query query) {
+ return hydrate(mongoTemplate.findOne(query, dbType, collection));
+ }
+
+ @Override
+ public List<T> find(Query query) {
+ return hydrate(mongoTemplate.find(query, dbType, collection));
+ }
+
+ private List<T> hydrate(List<E> mongoDbTs) {
+ for(E p : mongoDbTs) {
+ hydrate(p);
+ }
+ return CollectionUtils.<T>toBaseTypedList(mongoDbTs);
+ }
+
+ private T hydrate(E page) {
+ converter.hydrate(page, type);
+ return page;
+ }
+}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java?rev=1398830&r1=1398829&r2=1398830&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
Tue Oct 16 14:54:23 2012
@@ -21,75 +21,16 @@ package org.apache.rave.portal.repositor
import org.apache.rave.portal.model.MongoDbPage;
import org.apache.rave.portal.model.Page;
-import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
import org.apache.rave.portal.repository.MongoModelOperations;
-import org.apache.rave.util.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.mongodb.core.MongoOperations;
-import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
-import java.util.List;
-
/**
*/
@Component
-public class MongoPageTemplate implements
MongoModelOperations.MongoPageOperations {
+public class MongoPageTemplate extends MongoModelTemplate<Page, MongoDbPage>
implements MongoModelOperations.MongoPageOperations {
public static final String COLLECTION = "page";
- public static final Class<MongoDbPage> CLASS = MongoDbPage.class;
-
- @Autowired
- private MongoOperations mongoTemplate;
-
- @Autowired
- private HydratingConverterFactory converter;
-
- @Override
- public long count(Query query) {
- return mongoTemplate.count(query, COLLECTION);
- }
-
- @Override
- public void remove(Query query) {
- mongoTemplate.remove(query, COLLECTION);
- }
-
- @Override
- public Page get(long id) {
- MongoDbPage fromDb = mongoTemplate.findById(id, CLASS, COLLECTION);
- if(fromDb == null) {
- throw new IllegalStateException("Could not find requested page: "
+ id);
- }
- return hydrate(fromDb);
- }
-
- @Override
- public Page save(Page item) {
- MongoDbPage converted = converter.convert(item, Page.class);
- mongoTemplate.save(converted, COLLECTION);
- converter.hydrate(converted, Page.class);
- return converted;
- }
-
- @Override
- public Page findOne(Query query) {
- return hydrate(mongoTemplate.findOne(query, CLASS, COLLECTION));
- }
-
- @Override
- public List<Page> find(Query query) {
- return hydrate(mongoTemplate.find(query, CLASS, COLLECTION));
- }
-
- private List<Page> hydrate(List<MongoDbPage> mongoDbPages) {
- for(MongoDbPage p : mongoDbPages) {
- hydrate(p);
- }
- return CollectionUtils.<Page>toBaseTypedList(mongoDbPages);
- }
- private Page hydrate(MongoDbPage page) {
- converter.hydrate(page, Page.class);
- return page;
+ public MongoPageTemplate() {
+ super(Page.class, MongoDbPage.class, COLLECTION);
}
}
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoUserTemplate.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoUserTemplate.java?rev=1398830&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoUserTemplate.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoUserTemplate.java
Tue Oct 16 14:54:23 2012
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.repository.impl;
+
+import org.apache.rave.portal.model.MongoDbUser;
+import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.repository.MongoModelOperations;
+
+public class MongoUserTemplate extends MongoModelTemplate<User, MongoDbUser>
implements MongoModelOperations.MongoUserOperations {
+ public static final String COLLECTION = "person";
+
+ public MongoUserTemplate() {
+ super(User.class, MongoDbUser.class, COLLECTION);
+ }
+}
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoWidgetTemplate.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoWidgetTemplate.java?rev=1398830&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoWidgetTemplate.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoWidgetTemplate.java
Tue Oct 16 14:54:23 2012
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.repository.impl;
+
+import org.apache.rave.portal.model.MongoDbWidget;
+import org.apache.rave.portal.model.Widget;
+import org.apache.rave.portal.repository.MongoModelOperations;
+import org.springframework.stereotype.Component;
+
+/**
+ */
+@Component
+public class MongoWidgetTemplate extends MongoModelTemplate<Widget,
MongoDbWidget> implements MongoModelOperations.MongoWidgetOperations {
+
+ public static final String COLLECTION = "widget";
+
+ public MongoWidgetTemplate() {
+ super(Widget.class, MongoDbWidget.class, COLLECTION);
+ }
+
+}