When search field is applied, we count the total rows with this filter on

This commit is contained in:
Ioannis Diplas 2019-08-01 11:55:17 +00:00
parent ddf7152123
commit 7e21cdc153
3 changed files with 27 additions and 6 deletions

View File

@ -59,8 +59,8 @@ public class PiWikController {
@ApiImplicitParam(name = "from", dataType = "number", paramType = "query"),
@ApiImplicitParam(name = "quantity", dataType = "number", paramType = "query"),
@ApiImplicitParam(name = "order", dataType = "eu.dnetlib.repo.manager.domain.OrderByType", paramType = "query"),
@ApiImplicitParam(name = "searchField", dataType = "eu.dnetlib.repo.manager.domain.OrderByField", paramType = "query"),
@ApiImplicitParam(name = "orderField", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "orderField", dataType = "eu.dnetlib.repo.manager.domain.OrderByField", paramType = "query"),
@ApiImplicitParam(name = "searchField", dataType = "string", paramType = "query"),
})
public Paging<PiwikInfo> getPiwikSitesForRepos(
@RequestParam(value = "from",required=false,defaultValue = "0") int from,
@ -74,7 +74,7 @@ public class PiWikController {
List<PiwikInfo> returning = piWikService.getPiwikSitesForRepos(orderField,orderType,from,quantity,searchField);
results.setFrom(from);
results.setTo(from + returning.size());
results.setTotal(piWikService.getPiwikSitesTotals());
results.setTotal(piWikService.getPiwikSitesTotals(searchField));
results.setResults(returning);
return results;
}

View File

@ -18,7 +18,7 @@ public interface PiWikService {
List<PiwikInfo> getPiwikSitesForRepos(OrderByField orderByField, OrderByType orderByType, int from, int quantity, String searchField);
int getPiwikSitesTotals();
int getPiwikSitesTotals(String searchField);
ResponseEntity<Object> approvePiwikSite(String repositoryId);

View File

@ -18,6 +18,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@ -125,9 +126,29 @@ public class PiWikServiceImpl implements PiWikService {
}
@Override
public int getPiwikSitesTotals(){
public int getPiwikSitesTotals(String searchField){
try{
return new JdbcTemplate(dataSource).queryForObject(GET_PIWIK_SITES_TOTAL,Integer.class);
String finalizedQuery = GET_PIWIK_SITES_TOTAL + " where ("+
" repositoryid ilike ? " +
" or siteid ilike ?" +
" or requestorname ilike ?" +
" or requestoremail ilike ?" +
" or comment ilike ?" +
" or repositoryname ilike ?"+
" or country ilike ?)";
return new JdbcTemplate(dataSource).query(finalizedQuery, preparedStatement -> {
preparedStatement.setString(1,"%"+searchField+"%");
preparedStatement.setString(2,"%"+searchField+"%");
preparedStatement.setString(3,"%"+searchField+"%");
preparedStatement.setString(4,"%"+searchField+"%");
preparedStatement.setString(5,"%"+searchField+"%");
preparedStatement.setString(6,"%"+searchField+"%");
preparedStatement.setString(7,"%"+searchField+"%");
},rowMapper -> {
rowMapper.next();
return rowMapper.getInt("totals");
});
}catch (EmptyResultDataAccessException e){
return 0;
}