Skip to content

Commit

Permalink
+ Added paging and sorting
Browse files Browse the repository at this point in the history
  • Loading branch information
alvaroloes committed Nov 5, 2014
1 parent 34a5e68 commit d9c6bc1
Show file tree
Hide file tree
Showing 10 changed files with 58 additions and 26 deletions.
8 changes: 8 additions & 0 deletions src/main/java/com/capstone/potlatch/Constants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.capstone.potlatch;

/**
* Created by alvaro on 2/11/14.
*/
public interface Constants {
public static final String DEFAULT_PAGE_SIZE = "20";
}
5 changes: 4 additions & 1 deletion src/main/java/com/capstone/potlatch/Routes.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
* Created by alvaro on 2/11/14.
*/
public interface Routes {
public static final String GIFTS_PATH = "/gifts";
public static final String TITLE_PARAMETER = "title";
public static final String PAGE_PARAMETER = "page";
public static final String LIMIT_PARAMETER = "limit";

public static final String GIFTS_PATH = "/gifts";

public static final String GIFTS_CHAIN_PATH = GIFTS_PATH + "/chains";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@ protected void registerAuthentication(final AuthenticationManagerBuilder auth) t
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(HttpMethod.GET,
Routes.GIFTS_PATH,
Routes.GIFTS_CHAIN_PATH
Routes.GIFTS_PATH,
Routes.GIFTS_CHAIN_PATH,
Routes.TOP_GIVERS_PATH
).antMatchers(HttpMethod.POST,
Routes.USERS_PATH
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,21 @@

package com.capstone.potlatch.controllers;

import com.capstone.potlatch.Constants;
import com.capstone.potlatch.Routes;
import com.capstone.potlatch.models.GiftChain;
import com.capstone.potlatch.models.GiftChainRepository;
import com.capstone.potlatch.models.GiftRepository;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
import java.util.List;

@Controller
public class GiftChainsController {
Expand All @@ -42,8 +43,10 @@ public class GiftChainsController {
private GiftRepository gifts;

@RequestMapping(value = Routes.GIFTS_CHAIN_PATH, method=RequestMethod.GET)
public @ResponseBody Collection<GiftChain> list(HttpServletResponse response) {
List<GiftChain> giftChainList = Lists.newArrayList(giftChains.findAll());
return giftChainList;
public @ResponseBody Collection<GiftChain> list(
@RequestParam(value = Routes.PAGE_PARAMETER, required = false, defaultValue = "0") int page,
@RequestParam(value = Routes.LIMIT_PARAMETER, required = false, defaultValue = Constants.DEFAULT_PAGE_SIZE) int limit) {
PageRequest pageRequest = new PageRequest(page, limit);
return Lists.newArrayList(giftChains.findAll(pageRequest));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@

package com.capstone.potlatch.controllers;

import com.capstone.potlatch.Constants;
import com.capstone.potlatch.Routes;
import com.capstone.potlatch.models.*;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
Expand All @@ -41,12 +43,15 @@ public class GiftsController {

@RequestMapping(value = Routes.GIFTS_PATH, method=RequestMethod.GET)
public @ResponseBody Collection<Gift> list(
@RequestParam(value = Routes.TITLE_PARAMETER, required = false) String title)
@RequestParam(value = Routes.TITLE_PARAMETER, required = false) String title,
@RequestParam(value = Routes.PAGE_PARAMETER, required = false, defaultValue = "0") int page,
@RequestParam(value = Routes.LIMIT_PARAMETER, required = false, defaultValue = Constants.DEFAULT_PAGE_SIZE) int limit)
{
PageRequest pageRequest = new PageRequest(page, limit);
if (title == null) {
return Lists.newArrayList(gifts.findAll());
return Lists.newArrayList(gifts.findAll(pageRequest));
} else {
return Lists.newArrayList(gifts.findByTitle(title));
return Lists.newArrayList(gifts.findByTitleLike("%"+title+"%", pageRequest));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package com.capstone.potlatch.controllers;

import com.capstone.potlatch.Constants;
import com.capstone.potlatch.Routes;
import com.capstone.potlatch.models.User;
import com.capstone.potlatch.models.UserRepository;
Expand All @@ -26,12 +27,10 @@
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.provisioning.UserDetailsManager;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;

import java.security.Principal;
import java.util.Collection;

@Controller
public class UsersController {
Expand All @@ -56,4 +55,13 @@ public class UsersController {
userDetailsManager.createUser(u);
return users.findByUsername(user.getUsername());
}

@RequestMapping(value = Routes.TOP_GIVERS_PATH, method=RequestMethod.GET)
public @ResponseBody Collection<User> getTop(
@RequestParam(value = Routes.PAGE_PARAMETER, required = false, defaultValue = "0") int page,
@RequestParam(value = Routes.LIMIT_PARAMETER, required = false, defaultValue = Constants.DEFAULT_PAGE_SIZE) int limit) {
// PageRequest pageRequest = new PageRequest(page, limit);
// return Lists.newArrayList( users.aQuery());
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.capstone.potlatch.models;

import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface GiftChainRepository extends CrudRepository<GiftChain, Long>{
public interface GiftChainRepository extends PagingAndSortingRepository<GiftChain, Long> {
}
11 changes: 5 additions & 6 deletions src/main/java/com/capstone/potlatch/models/GiftRepository.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.capstone.potlatch.models;

import java.util.Collection;

import org.springframework.data.repository.CrudRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface GiftRepository extends CrudRepository<Gift, Long>{
// Find all gifts with a matching title
public Collection<Gift> findByTitle(String title);
public interface GiftRepository extends PagingAndSortingRepository<Gift, Long> {
public Page<Gift> findByTitleLike(String title, Pageable pageable);
}
4 changes: 4 additions & 0 deletions src/main/java/com/capstone/potlatch/models/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,8 @@ public void setPassword(String password) {
public String getPassword() {
return password;
}

public int getGiftCount() {
return gifts.size();
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package com.capstone.potlatch.models;

import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

import java.util.Collection;

@Repository
public interface UserRepository extends CrudRepository<User, Long>{
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
public User findByUsername(String username);
// @Query(nativeQuery = true, value = "select u.* from User as u left join Gift as g on u.id = g.user_id group by u.id order by count(g.id) desc") //Todo: hacer la query con el count
// public List<User> aQuery();
}

0 comments on commit d9c6bc1

Please sign in to comment.