You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ja...@apache.org on 2011/10/25 13:17:01 UTC
svn commit: r1188606 - in /incubator/rave/trunk:
rave-components/rave-core/src/main/java/org/apache/rave/portal/model/
rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/
rave-components/rave-core/src/main/java/org/apache/rave/po...
Author: jasha
Date: Tue Oct 25 11:17:00 2011
New Revision: 1188606
URL: http://svn.apache.org/viewvc?rev=1188606&view=rev
Log:
RAVE-301 add search to widget listing in admin module
Modified:
incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetStatus.java
incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/WidgetRepository.java
incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java
incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java
incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetService.java
incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/JpaWidgetRepositoryTest.java
incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/DefaultWidgetServiceTest.java
incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java
incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/WidgetController.java
incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/WidgetControllerTest.java
incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/admin_paging.tag
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/views/admin/widgets.jsp
incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css
Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java Tue Oct 25 11:17:00 2011
@@ -56,16 +56,20 @@ import java.util.List;
query = "SELECT w FROM Widget w WHERE lower(w.title) LIKE :searchTerm OR w.description LIKE :description"),
@NamedQuery(name = Widget.WIDGET_COUNT_BY_FREE_TEXT,
query = "SELECT count(w) FROM Widget w WHERE lower(w.title) LIKE :searchTerm OR w.description LIKE :description"),
-
@NamedQuery(name = Widget.WIDGET_GET_BY_STATUS,
query = "SELECT w from Widget w WHERE w.widgetStatus = :widgetStatus"),
@NamedQuery(name = Widget.WIDGET_COUNT_BY_STATUS,
query = "SELECT count(w) FROM Widget w WHERE w.widgetStatus = :widgetStatus"),
- @NamedQuery(name = Widget.WIDGET_GET_BY_STATUS_AND_FREE_TEXT,
- query = "SELECT w FROM Widget w WHERE w.widgetStatus = :widgetStatus AND lower(w.title) LIKE :searchTerm OR w.description LIKE :description"),
- @NamedQuery(name = Widget.WIDGET_COUNT_BY_STATUS_AND_FREE_TEXT,
- query = "SELECT count(w) FROM Widget w WHERE w.widgetStatus = :widgetStatus AND lower(w.title) LIKE :searchTerm OR w.description LIKE :description"),
-
+ @NamedQuery(name = Widget.WIDGET_GET_BY_STATUS_AND_TYPE_AND_FREE_TEXT,
+ query = "SELECT w FROM Widget w WHERE " +
+ "(:widgetStatus is null OR :widgetStatus = '' or w.widgetStatus = :widgetStatus)" +
+ " AND (:type is null OR :type = '' OR w.type = :type)" +
+ " AND (:searchTerm is null OR :searchTerm = '' OR lower(w.title) LIKE :searchTerm OR w.description LIKE :description)"),
+ @NamedQuery(name = Widget.WIDGET_COUNT_BY_STATUS_AND_TYPE_AND_FREE_TEXT,
+ query = "SELECT count(w) FROM Widget w WHERE " +
+ "(:widgetStatus is null OR :widgetStatus = '' or w.widgetStatus = :widgetStatus)" +
+ " AND (:type is null OR :type = '' OR w.type = :type)" +
+ " AND (:searchTerm is null OR :searchTerm = '' OR lower(w.title) LIKE :searchTerm OR w.description LIKE :description)"),
@NamedQuery(name = Widget.WIDGET_GET_BY_URL, query = "SELECT w FROM Widget w WHERE w.url = :url")
})
public class Widget implements BasicEntity, Serializable {
@@ -73,6 +77,7 @@ public class Widget implements BasicEnti
public static final String PARAM_SEARCH_TERM = "searchTerm";
public static final String PARAM_STATUS = "widgetStatus";
+ public static final String PARAM_TYPE = "type";
public static final String PARAM_URL = "url";
public static final String WIDGET_GET_ALL = "Widget.getAll";
@@ -81,10 +86,10 @@ public class Widget implements BasicEnti
public static final String WIDGET_COUNT_BY_FREE_TEXT = "Widget.countByFreeText";
public static final String WIDGET_GET_BY_STATUS = "Widget.getByStatus";
public static final String WIDGET_COUNT_BY_STATUS = "Widget.countByStatus";
- public static final String WIDGET_GET_BY_STATUS_AND_FREE_TEXT =
- "Widget.getByStatusAndFreeText";
- public static final String WIDGET_COUNT_BY_STATUS_AND_FREE_TEXT =
- "Widget.countByStatusAndFreeText";
+ public static final String WIDGET_GET_BY_STATUS_AND_TYPE_AND_FREE_TEXT =
+ "Widget.getByStatusAndTypeAndFreeText";
+ public static final String WIDGET_COUNT_BY_STATUS_AND_TYPE_AND_FREE_TEXT =
+ "Widget.countByStatusAndTypeAndFreeText";
public static final String WIDGET_GET_BY_URL = "Widget.getByUrl";
@Id @Column(name="entity_id")
Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetStatus.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetStatus.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetStatus.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetStatus.java Tue Oct 25 11:17:00 2011
@@ -19,6 +19,9 @@
package org.apache.rave.portal.model;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* (Workflow) status of a Widget.
*/
@@ -28,7 +31,15 @@ public enum WidgetStatus {
private String widgetStatus;
- WidgetStatus(String widgetStatus) {
+ private static final Map<String, WidgetStatus> lookup = new HashMap<String, WidgetStatus>();
+
+ static {
+ for (WidgetStatus ws : WidgetStatus.values()) {
+ lookup.put(ws.toString(), ws);
+ }
+ }
+
+ private WidgetStatus(String widgetStatus) {
this.widgetStatus = widgetStatus;
}
@@ -40,4 +51,10 @@ public enum WidgetStatus {
public String toString() {
return widgetStatus;
}
+
+ public static WidgetStatus get(String status) {
+ return lookup.get(status);
+ }
+
+
}
Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/WidgetRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/WidgetRepository.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/WidgetRepository.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/WidgetRepository.java Tue Oct 25 11:17:00 2011
@@ -18,12 +18,12 @@
*/
package org.apache.rave.portal.repository;
-import java.util.List;
-
import org.apache.rave.persistence.Repository;
import org.apache.rave.portal.model.Widget;
import org.apache.rave.portal.model.WidgetStatus;
+import java.util.List;
+
public interface WidgetRepository extends Repository<Widget> {
/**
* Gets a list of <strong>all</strong> widgets in the repository
@@ -92,7 +92,7 @@ public interface WidgetRepository extend
* @param pageSize maximum number of items to be returned (for paging)
* @return valid list of widgets, can be empty
*/
- List<Widget> getByStatusAndFreeTextSearch(WidgetStatus widgetStatus, String searchTerm,
+ List<Widget> getByStatusAndTypeAndFreeTextSearch(WidgetStatus widgetStatus, String type, String searchTerm,
int offset, int pageSize);
@@ -104,7 +104,7 @@ public interface WidgetRepository extend
* @param searchTerm free text search term
* @return total number of {@link Widget}'s that match the search criteria
*/
- int getCountByStatusAndFreeText(WidgetStatus widgetStatus, String searchTerm);
+ int getCountByStatusAndTypeAndFreeText(WidgetStatus widgetStatus, String type, String searchTerm);
/**
* Searches for a Widget by its url
Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java Tue Oct 25 11:17:00 2011
@@ -20,11 +20,6 @@
package org.apache.rave.portal.repository.impl;
-import java.util.List;
-
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-
import org.apache.commons.lang.StringUtils;
import org.apache.rave.persistence.jpa.AbstractJpaRepository;
import org.apache.rave.portal.model.Widget;
@@ -34,6 +29,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+import java.util.List;
+
import static org.apache.rave.persistence.jpa.util.JpaUtil.getPagedResultList;
import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
@@ -99,19 +98,21 @@ public class JpaWidgetRepository extends
}
@Override
- public List<Widget> getByStatusAndFreeTextSearch(WidgetStatus widgetStatus, String searchTerm,
- int offset, int pageSize) {
- TypedQuery<Widget> query = manager.createNamedQuery(
- Widget.WIDGET_GET_BY_STATUS_AND_FREE_TEXT, Widget.class);
+ public List<Widget> getByStatusAndTypeAndFreeTextSearch(WidgetStatus widgetStatus, String type, String searchTerm,
+ int offset, int pageSize) {
+ TypedQuery<Widget> query = manager.createNamedQuery(Widget.WIDGET_GET_BY_STATUS_AND_TYPE_AND_FREE_TEXT,
+ Widget.class);
query.setParameter(Widget.PARAM_STATUS, widgetStatus);
+ query.setParameter(Widget.PARAM_TYPE, type);
setFreeTextSearchTerm(query, searchTerm);
return getPagedResultList(query, offset, pageSize);
}
@Override
- public int getCountByStatusAndFreeText(WidgetStatus widgetStatus, String searchTerm) {
- Query query = manager.createNamedQuery(Widget.WIDGET_COUNT_BY_STATUS_AND_FREE_TEXT);
+ public int getCountByStatusAndTypeAndFreeText(WidgetStatus widgetStatus, String type, String searchTerm) {
+ Query query = manager.createNamedQuery(Widget.WIDGET_COUNT_BY_STATUS_AND_TYPE_AND_FREE_TEXT);
query.setParameter(Widget.PARAM_STATUS, widgetStatus);
+ query.setParameter(Widget.PARAM_TYPE, type);
setFreeTextSearchTerm(query, searchTerm);
Number countResult = (Number) query.getSingleResult();
return countResult.intValue();
Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java Tue Oct 25 11:17:00 2011
@@ -87,6 +87,19 @@ public interface WidgetService {
int offset, int pageSize);
/**
+ * Gets a SearchResult for {@link Widget}'s that match the free text search, widget type and status
+ *
+ * @param searchTerm free text search term
+ * @param widgetType type of Widget
+ * @param widgetStatus status of the Widget, should match a value in {@link org.apache.rave.portal.model.WidgetStatus}
+ * @param offset start point within the resultset (for paging)
+ * @param pageSize maximum number of items to be returned (for paging)
+ * @return SearchResult
+ */
+ SearchResult<Widget> getWidgetsBySearchCriteria(String searchTerm, String widgetType, String widgetStatus,
+ int offset, int pageSize);
+
+ /**
* Gets a Widget by its (unique) url
*
* @param widgetUrl url of the Widget
Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetService.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetService.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetService.java Tue Oct 25 11:17:00 2011
@@ -101,16 +101,17 @@ public class DefaultWidgetService implem
@Override
public SearchResult<Widget> getPublishedWidgetsByFreeTextSearch(String searchTerm,
int offset, int pageSize) {
+ return getWidgetsBySearchCriteria(searchTerm, null, WidgetStatus.PUBLISHED.getWidgetStatus(), offset, pageSize);
+ }
- if (StringUtils.isBlank(searchTerm)) {
- return getPublishedWidgets(offset, pageSize);
- }
-
- final int count = widgetRepository.getCountByStatusAndFreeText(WidgetStatus.PUBLISHED,
- searchTerm);
- final List<Widget> widgets = widgetRepository.getByStatusAndFreeTextSearch(
- WidgetStatus.PUBLISHED, searchTerm, offset, pageSize);
+ @Override
+ public SearchResult<Widget> getWidgetsBySearchCriteria(String searchTerm, String widgetType, String widgetStatus,
+ int offset, int pageSize) {
+ final WidgetStatus status = StringUtils.isBlank(widgetStatus) ? null : WidgetStatus.get(widgetStatus);
+ final int count = widgetRepository.getCountByStatusAndTypeAndFreeText(status, widgetType, searchTerm);
+ final List<Widget> widgets = widgetRepository.getByStatusAndTypeAndFreeTextSearch(status, widgetType,
+ searchTerm, offset, pageSize);
final SearchResult<Widget> searchResult = new SearchResult<Widget>(widgets, count);
searchResult.setOffset(offset);
searchResult.setPageSize(pageSize);
Modified: incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/JpaWidgetRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/JpaWidgetRepositoryTest.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/JpaWidgetRepositoryTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/JpaWidgetRepositoryTest.java Tue Oct 25 11:17:00 2011
@@ -155,22 +155,23 @@ public class JpaWidgetRepositoryTest {
}
@Test
- public void getByStatusAndFreeText() {
+ public void getByStatusAndTypeAndFreeText() {
final String searchTerm = "gAdGet";
- List<Widget> widgets = repository.getByStatusAndFreeTextSearch(WidgetStatus.PUBLISHED,
+ final String type = "OpenSocial";
+ List<Widget> widgets = repository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, type,
searchTerm, 0, 1);
assertEquals(1, widgets.size());
- List<Widget> preview = repository.getByStatusAndFreeTextSearch(WidgetStatus.PREVIEW,
+ List<Widget> preview = repository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PREVIEW, type,
searchTerm, 0, 1);
assertEquals(0, preview.size());
}
@Test
- public void countByStatusAndFreeText() {
+ public void countByStatusAndTypeAndFreeText() {
final String searchTerm = "gAdGet";
- int publishedCount = repository.getCountByStatusAndFreeText(WidgetStatus.PUBLISHED,
- searchTerm);
+ final String type = "OpenSocial";
+ int publishedCount = repository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, type, searchTerm);
assertTrue(publishedCount >= 2);
}
Modified: incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/DefaultWidgetServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/DefaultWidgetServiceTest.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/DefaultWidgetServiceTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/DefaultWidgetServiceTest.java Tue Oct 25 11:17:00 2011
@@ -151,9 +151,9 @@ public class DefaultWidgetServiceTest {
List<Widget> widgets = new ArrayList<Widget>();
widgets.add(widget);
- expect(repository.getCountByStatusAndFreeText(WidgetStatus.PUBLISHED, searchTerm))
+ expect(repository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, null, searchTerm))
.andReturn(totalResults);
- expect(repository.getByStatusAndFreeTextSearch(WidgetStatus.PUBLISHED, searchTerm,
+ expect(repository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, null, searchTerm,
offset, pageSize)).andReturn(widgets);
replay(repository);
@@ -165,6 +165,34 @@ public class DefaultWidgetServiceTest {
}
@Test
+ public void getPublishedOpenSocialWidgetsForSearchTerm() {
+ final String searchTerm = "gAdGet";
+ int offset = 0;
+ int pageSize = 10;
+ int totalResults = 2;
+ Widget widget = new Widget();
+ widget.setWidgetStatus(WidgetStatus.PUBLISHED);
+ final String type = "OpenSocial";
+ widget.setType(type);
+ widget.setEntityId(1L);
+ List<Widget> widgets = new ArrayList<Widget>();
+ widgets.add(widget);
+
+ expect(repository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, type, searchTerm))
+ .andReturn(totalResults);
+ expect(repository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, type, searchTerm,
+ offset, pageSize)).andReturn(widgets);
+ replay(repository);
+
+ SearchResult<Widget> result = service.getWidgetsBySearchCriteria(searchTerm, type,
+ WidgetStatus.PUBLISHED.toString(), offset, pageSize);
+ assertEquals(widget, result.getResultSet().get(0));
+ assertEquals(totalResults, result.getTotalResults());
+ assertEquals(pageSize, result.getPageSize());
+ }
+
+
+ @Test
public void getWidget_null() {
expect(repository.get(1L)).andReturn(null);
replay(repository);
@@ -302,4 +330,6 @@ public class DefaultWidgetServiceTest {
assertEquals(1, ratings.size());
assertEquals(ratings.get(0).getScore(), new Integer(5));
}
+
+
}
Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java Tue Oct 25 11:17:00 2011
@@ -43,6 +43,8 @@ import org.springframework.web.bind.supp
import java.beans.PropertyEditorSupport;
+import static org.apache.rave.portal.web.controller.admin.AdminControllerUtil.DEFAULT_PAGE_SIZE;
+
/**
* Admin controller to manipulate User data
*/
@@ -70,7 +72,7 @@ public class UserController {
@RequestMapping(value = "/admin/users", method = RequestMethod.GET)
public String viewUsers(@RequestParam(required = false, defaultValue = "0") int offset, Model model) {
AdminControllerUtil.addNavigationMenusToModel(SELECTED_ITEM, model);
- final SearchResult<User> users = userService.getLimitedListOfUsers(offset, AdminControllerUtil.DEFAULT_PAGE_SIZE);
+ final SearchResult<User> users = userService.getLimitedListOfUsers(offset, DEFAULT_PAGE_SIZE);
model.addAttribute(ModelKeys.SEARCHRESULT, users);
return ViewNames.ADMIN_USERS;
}
@@ -80,7 +82,7 @@ public class UserController {
@RequestParam(required = false, defaultValue = "0") int offset, Model model) {
AdminControllerUtil.addNavigationMenusToModel(SELECTED_ITEM, model);
final SearchResult<User> users = userService.getUsersByFreeTextSearch(
- searchTerm, offset, AdminControllerUtil.DEFAULT_PAGE_SIZE);
+ searchTerm, offset, DEFAULT_PAGE_SIZE);
model.addAttribute(ModelKeys.SEARCH_TERM, searchTerm);
model.addAttribute(ModelKeys.SEARCHRESULT, users);
return ViewNames.ADMIN_USERS;
Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/WidgetController.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/WidgetController.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/WidgetController.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/WidgetController.java Tue Oct 25 11:17:00 2011
@@ -41,6 +41,7 @@ import org.springframework.web.bind.anno
import org.springframework.web.bind.support.SessionStatus;
import static org.apache.rave.portal.model.WidgetStatus.values;
+import static org.apache.rave.portal.web.controller.admin.AdminControllerUtil.DEFAULT_PAGE_SIZE;
/**
* Admin controller to manipulate Widget data
@@ -66,11 +67,26 @@ public class WidgetController {
public String viewWidgets(@RequestParam(required = false, defaultValue = "0") int offset, Model model) {
AdminControllerUtil.addNavigationMenusToModel(SELECTED_ITEM, model);
final SearchResult<Widget> widgets =
- widgetService.getLimitedListOfWidgets(offset, AdminControllerUtil.DEFAULT_PAGE_SIZE);
+ widgetService.getLimitedListOfWidgets(offset, DEFAULT_PAGE_SIZE);
model.addAttribute(ModelKeys.SEARCHRESULT, widgets);
return ViewNames.ADMIN_WIDGETS;
}
+ @RequestMapping(value = "/admin/widgets/search", method = RequestMethod.GET)
+ public String searchWidgets(@RequestParam(required = false) String searchTerm,
+ @RequestParam(required = false) String widgettype,
+ @RequestParam(required = false) String widgetstatus,
+ @RequestParam(required = false, defaultValue = "0") int offset, Model model) {
+ AdminControllerUtil.addNavigationMenusToModel(SELECTED_ITEM, model);
+ final SearchResult<Widget> widgets = widgetService.getWidgetsBySearchCriteria(searchTerm, widgettype,
+ widgetstatus, offset, DEFAULT_PAGE_SIZE);
+ model.addAttribute(ModelKeys.SEARCHRESULT, widgets);
+ model.addAttribute(ModelKeys.SEARCH_TERM, searchTerm);
+ model.addAttribute("selectedWidgetType",widgettype);
+ model.addAttribute("selectedWidgetStatus", widgetstatus);
+ return ViewNames.ADMIN_WIDGETS;
+ }
+
@RequestMapping(value = "/admin/widgetdetail/{widgetid}", method = RequestMethod.GET)
public String viewWidgetDetail(@PathVariable("widgetid") Long widgetid, Model model) {
AdminControllerUtil.addNavigationMenusToModel(SELECTED_ITEM, model);
Modified: incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/WidgetControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/WidgetControllerTest.java?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/WidgetControllerTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/WidgetControllerTest.java Tue Oct 25 11:17:00 2011
@@ -74,6 +74,27 @@ public class WidgetControllerTest {
}
@Test
+ public void searchWidgets() throws Exception {
+ Model model = new ExtendedModelMap();
+ String searchTerm = "widget";
+ String type = "OpenSocial";
+ String status = "published";
+ SearchResult<Widget> widgetSearchResult = populateWidgetSearchResult();
+ expect(service.getWidgetsBySearchCriteria(searchTerm, type, status, DEFAULT_OFFSET, DEFAULT_PAGESIZE)).andReturn(widgetSearchResult);
+ replay(service);
+
+ String searchView = controller.searchWidgets(searchTerm, type, status, DEFAULT_OFFSET, model);
+ verify(service);
+
+ assertEquals(ViewNames.ADMIN_WIDGETS, searchView);
+ assertEquals(searchTerm, model.asMap().get(ModelKeys.SEARCH_TERM));
+ assertEquals(type, model.asMap().get("selectedWidgetType"));
+ assertEquals(status, model.asMap().get("selectedWidgetStatus"));
+
+
+ }
+
+ @Test
public void viewAdminWidgetDetail() throws Exception {
Model model = new ExtendedModelMap();
Widget widget = new Widget();
Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties Tue Oct 25 11:17:00 2011
@@ -131,6 +131,9 @@ admin.userdata.enabled=Account enabled
admin.userdata.expired=Account expired
admin.userdata.locked=Account locked
admin.userdata.authorities=Authorities:
+admin.widgets.search=Search Widgets
+admin.widgets.search.choosetype=Choose Type...
+admin.widgets.search.choosestatus=Choose Status...
admin.widgetdetail.title=Rave admin interface - Widget detail
admin.widgetdetail.goback=\u00AB Back to widgets
admin.widgetdetail.editdata=Edit widget data
Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties Tue Oct 25 11:17:00 2011
@@ -131,6 +131,9 @@ admin.userdata.enabled=Account ingeschak
admin.userdata.expired=Account verlopen
admin.userdata.locked=Account op slot
admin.userdata.authorities=Authoriteiten:
+admin.widgets.search=Zoek Widgets
+admin.widgets.search.choosetype=Kies Type...
+admin.widgets.search.choosestatus=Kies Status...
admin.widgetdetail.title=Rave admin interface - Widget details
admin.widgetdetail.goback=\u00AB Terug naar widgets
admin.widgetdetail.editdata=Pas widget gegevens aan
Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/admin_paging.tag
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/admin_paging.tag?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/admin_paging.tag (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/admin_paging.tag Tue Oct 25 11:17:00 2011
@@ -26,7 +26,9 @@ under the License.
<ul class="paging">
<c:if test="${searchResult.currentPage gt 1}">
<c:url var="pageUrl" value="">
- <c:param name="searchTerm" value="${searchTerm}"/>
+ <c:if test="${not empty searchTerm}"><c:param name="searchTerm" value="${searchTerm}"/></c:if>
+ <c:if test="${not empty selectedWidgetType}"><c:param name="widgettype" value="${selectedWidgetType}"/></c:if>
+ <c:if test="${not empty selectedWidgetStatus}"><c:param name="widgetstatus" value="${selectedWidgetStatus}"/></c:if>
<c:param name="offset" value="${(searchResult.currentPage - 2) * searchResult.pageSize}"/>
</c:url>
<li><a href="<c:out value="${pageUrl}"/>"><</a></li>
@@ -38,7 +40,9 @@ under the License.
</c:when>
<c:otherwise>
<c:url var="pageUrl" value="">
- <c:param name="searchTerm" value="${searchTerm}"/>
+ <c:if test="${not empty searchTerm}"><c:param name="searchTerm" value="${searchTerm}"/></c:if>
+ <c:if test="${not empty selectedWidgetType}"><c:param name="widgettype" value="${selectedWidgetType}"/></c:if>
+ <c:if test="${not empty selectedWidgetStatus}"><c:param name="widgetstatus" value="${selectedWidgetStatus}"/></c:if>
<c:param name="offset" value="${(i - 1) * searchResult.pageSize}"/>
</c:url>
<li><a href="<c:out value="${pageUrl}"/>">${i}</a></li>
@@ -47,7 +51,9 @@ under the License.
</c:forEach>
<c:if test="${searchResult.currentPage lt searchResult.numberOfPages}">
<c:url var="pageUrl" value="">
- <c:param name="searchTerm" value="${searchTerm}"/>
+ <c:if test="${not empty searchTerm}"><c:param name="searchTerm" value="${searchTerm}"/></c:if>
+ <c:if test="${not empty selectedWidgetType}"><c:param name="widgettype" value="${selectedWidgetType}"/></c:if>
+ <c:if test="${not empty selectedWidgetStatus}"><c:param name="widgetstatus" value="${selectedWidgetStatus}"/></c:if>
<c:param name="offset" value="${(searchResult.currentPage) * searchResult.pageSize}"/>
</c:url>
<li><a href="<c:out value="${pageUrl}"/>">></a></li>
Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/views/admin/widgets.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/views/admin/widgets.jsp?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/views/admin/widgets.jsp (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/views/admin/widgets.jsp Tue Oct 25 11:17:00 2011
@@ -31,14 +31,35 @@
<rave:admin_tabsheader/>
<div class="pageContent">
<article class="admincontent">
- <%--<ul class="horizontal-list searchbox">
+ <ul class="horizontal-list searchbox">
<li>
- Searchform goes here
+ <form action="<spring:url value="/app/admin/widgets/search"/>" method="GET">
+ <fieldset>
+ <label for="searchTerm" class="hidden"><fmt:message key="admin.widgets.search"/></label>
+ <input type="search" id="searchTerm" name="searchTerm"
+ value="<c:out value="${searchTerm}"/>"/>
+ <label for="widgettype" class="hidden"><fmt:message key="widget.type"/></label>
+ <select name="widgettype" id="widgettype">
+ <option value=""><fmt:message key="admin.widgets.search.choosetype"/></option>
+ <option value="OpenSocial" <c:if test="${selectedWidgetType eq 'OpenSocial'}"> selected="selected"</c:if>><fmt:message key="widget.type.OpenSocial"/></option>
+ <option value="W3C" <c:if test="${selectedWidgetType eq 'W3C'}"> selected="selected"</c:if>><fmt:message key="widget.type.W3C"/></option>
+ </select>
+ <label for="widgetstatus" class="hidden"><fmt:message key="widget.widgetStatus"/></label>
+ <select name="widgetstatus" id="widgetstatus">
+ <option value=""><fmt:message key="admin.widgets.search.choosestatus"/></option>
+ <c:forEach items="${widgetStatus}" var="wStatus">
+ <option value="<c:out value="${wStatus.widgetStatus}"/>" <c:if test="${wStatus.widgetStatus eq selectedWidgetStatus}"> selected="selected"</c:if>><c:out value="${wStatus.widgetStatus}"/></option>
+ </c:forEach>
+ </select>
+ <fmt:message key="page.store.search.button" var="searchButtonText"/>
+ <input type="submit" value="${searchButtonText}"/>
+ </fieldset>
+ </form>
</li>
<c:if test="${not empty searchTerm}">
<li><a href="<spring:url value="/app/admin/widgets"/>"><fmt:message key="admin.clearsearch"/></a></li>
</c:if>
- </ul>--%>
+ </ul>
<rave:admin_listheader/>
<rave:admin_paging/>
Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css?rev=1188606&r1=1188605&r2=1188606&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css Tue Oct 25 11:17:00 2011
@@ -70,6 +70,10 @@ a img {
clear: both;
}
+.hidden {
+ display: none;
+}
+
.horizontal-list li, .paging li {
display: inline;
list-style: none;