Skip to content

Commit 2f7ff1d

Browse files
admin: Countries
1 parent 39873c0 commit 2f7ff1d

File tree

9 files changed

+94
-44
lines changed

9 files changed

+94
-44
lines changed

src/main/java/org/woehlke/greenshop/admin/web/taxes/CountryController.java

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.PageRequest;
7+
import org.springframework.data.domain.Pageable;
8+
import org.springframework.data.domain.Sort;
59
import org.springframework.stereotype.Controller;
610
import org.springframework.ui.Model;
711
import org.springframework.validation.BindingResult;
812
import org.springframework.web.bind.annotation.PathVariable;
913
import org.springframework.web.bind.annotation.RequestMapping;
1014
import org.springframework.web.bind.annotation.RequestMethod;
15+
import org.springframework.web.bind.annotation.RequestParam;
1116
import org.woehlke.greenshop.admin.AdminMenuCategory;
1217
import org.woehlke.greenshop.customer.service.AddressFormatService;
1318
import org.woehlke.greenshop.customer.service.CountryService;
@@ -32,36 +37,44 @@ public class CountryController {
3237
@Inject
3338
private AddressFormatService addressFormatService;
3439

40+
private final static int PAGE_SIZE = 20;
41+
42+
private final static String FIRST_PAGE = "0";
43+
3544
@RequestMapping(value = "/admin/countries", method = RequestMethod.GET)
36-
public String countries(Model model){
45+
public String countries(@RequestParam(value="page",defaultValue=FIRST_PAGE) int page, Model model){
3746
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
3847
model.addAttribute("menuCategory",menuCategory);
39-
List<Country> countries = countryService.findAllCountriesOrderByName();
48+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
49+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
4050
model.addAttribute("countries",countries);
4151
Country thisCountry = null;
42-
if(countries.size()>0){
52+
if(countries.getContent().size()>0){
4353
thisCountry = countries.iterator().next();
4454
}
4555
model.addAttribute("thisCountry",thisCountry);
4656
return "admin/countries";
4757
}
4858

4959
@RequestMapping(value = "/admin/countries/{countryId}", method = RequestMethod.GET)
50-
public String countries(@PathVariable long countryId, Model model){
60+
public String countries( @RequestParam(value="page",defaultValue=FIRST_PAGE) int page,
61+
@PathVariable long countryId, Model model){
5162
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
5263
model.addAttribute("menuCategory",menuCategory);
5364
Country thisCountry = countryService.findCountryById(countryId);
5465
model.addAttribute("thisCountry",thisCountry);
55-
List<Country> countries = countryService.findAllCountriesOrderByName();
66+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
67+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
5668
model.addAttribute("countries",countries);
5769
return "admin/countries";
5870
}
5971

6072
@RequestMapping(value = "/admin/countries/insert", method = RequestMethod.GET)
61-
public String countriesInsertForm(Model model){
73+
public String countriesInsertForm(@RequestParam(value="page",defaultValue=FIRST_PAGE) int page, Model model){
6274
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
6375
model.addAttribute("menuCategory",menuCategory);
64-
List<Country> countries = countryService.findAllCountriesOrderByName();
76+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
77+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
6578
model.addAttribute("countries",countries);
6679
Country thisCountry = new Country();
6780
model.addAttribute("thisCountry",thisCountry);
@@ -71,43 +84,51 @@ public String countriesInsertForm(Model model){
7184
}
7285

7386
@RequestMapping(value = "/admin/countries/insert", method = RequestMethod.POST)
74-
public String countriesInsertPerform(@Valid Country thisCountry, BindingResult result, Model model){
87+
public String countriesInsertPerform(@RequestParam(value="page",defaultValue=FIRST_PAGE) int page,
88+
@Valid Country thisCountry, BindingResult result, Model model){
7589
logger.info("Country: "+thisCountry.toString());
7690
if(result.hasErrors()){
7791
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
7892
model.addAttribute("menuCategory",menuCategory);
79-
List<Country> countries = countryService.findAllCountriesOrderByName();
93+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
94+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
8095
model.addAttribute("countries",countries);
8196
model.addAttribute("thisCountry",thisCountry);
8297
List<AddressFormat> addressFormats = addressFormatService.findAllAddressFormat();
8398
model.addAttribute("addressFormats",addressFormats);
8499
return "admin/countriesInsertForm";
85100
} else {
86101
countryService.createCountry(thisCountry);
87-
return "redirect:/admin/countries/"+thisCountry.getId();
102+
return "redirect:/admin/countries/"+thisCountry.getId()+"?page="+page;
88103
}
89104
}
90105

91106
@RequestMapping(value = "/admin/countries/{countryId}/edit", method = RequestMethod.GET)
92-
public String countriesEditForm(@PathVariable long countryId, Model model){
107+
public String countriesEditForm(@PathVariable long countryId,
108+
@RequestParam(value="page",defaultValue=FIRST_PAGE) int page,
109+
Model model){
93110
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
94111
model.addAttribute("menuCategory",menuCategory);
95112
Country thisCountry = countryService.findCountryById(countryId);
96113
model.addAttribute("thisCountry",thisCountry);
97-
List<Country> countries = countryService.findAllCountriesOrderByName();
114+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
115+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
98116
model.addAttribute("countries",countries);
99117
List<AddressFormat> addressFormats = addressFormatService.findAllAddressFormat();
100118
model.addAttribute("addressFormats",addressFormats);
101119
return "admin/countriesEditForm";
102120
}
103121

104122
@RequestMapping(value = "/admin/countries/{countryId}/edit", method = RequestMethod.POST)
105-
public String countriesEditSave(@PathVariable long countryId, @Valid Country thisCountry, BindingResult result, Model model){
123+
public String countriesEditSave(@PathVariable long countryId,
124+
@RequestParam(value="page",defaultValue=FIRST_PAGE) int page,
125+
@Valid Country thisCountry, BindingResult result, Model model){
106126
logger.info("Country: "+thisCountry.toString());
107127
if(result.hasErrors()){
108128
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
109129
model.addAttribute("menuCategory",menuCategory);
110-
List<Country> countries = countryService.findAllCountriesOrderByName();
130+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
131+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
111132
model.addAttribute("countries",countries);
112133
model.addAttribute("thisCountry",thisCountry);
113134
List<AddressFormat> addressFormats = addressFormatService.findAllAddressFormat();
@@ -116,25 +137,30 @@ public String countriesEditSave(@PathVariable long countryId, @Valid Country thi
116137
} else {
117138
thisCountry.setId(countryId);
118139
countryService.updateCountry(thisCountry);
119-
return "redirect:/admin/countries/"+countryId;
140+
return "redirect:/admin/countries/"+countryId+"?page="+page;
120141
}
121142
}
122143

123144
@RequestMapping(value = "/admin/countries/{countryId}/delete", method = RequestMethod.GET)
124-
public String countriesDeleteForm(@PathVariable long countryId, Model model){
145+
public String countriesDeleteForm(@PathVariable long countryId,
146+
@RequestParam(value="page",defaultValue=FIRST_PAGE) int page,
147+
Model model){
125148
int menuCategory = AdminMenuCategory.LOCATION_TAXES.ordinal();
126149
model.addAttribute("menuCategory",menuCategory);
127150
Country thisCountry = countryService.findCountryById(countryId);
128151
model.addAttribute("thisCountry",thisCountry);
129-
List<Country> countries = countryService.findAllCountriesOrderByName();
152+
Pageable pageRequest = new PageRequest(page,PAGE_SIZE, Sort.Direction.ASC, "name");
153+
Page<Country> countries = countryService.findAllCountriesOrderByName(pageRequest);
130154
model.addAttribute("countries",countries);
131155
return "admin/countriesDeleteForm";
132156
}
133157

134158
@RequestMapping(value = "/admin/countries/{countryId}/delete", method = RequestMethod.POST)
135-
public String countriesDeleteSave(@PathVariable long countryId, Model model){
159+
public String countriesDeleteSave(@PathVariable long countryId,
160+
@RequestParam(value="page",defaultValue=FIRST_PAGE) int page,
161+
Model model){
136162
Country thisCountry = countryService.findCountryById(countryId);
137163
countryService.deleteCountry(thisCountry);
138-
return "redirect:/admin/countries";
164+
return "redirect:/admin/countries?page="+page;
139165
}
140166
}

src/main/java/org/woehlke/greenshop/customer/service/CountryService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.woehlke.greenshop.customer.service;
22

3+
import org.springframework.data.domain.Page;
4+
import org.springframework.data.domain.Pageable;
35
import org.woehlke.greenshop.customer.entities.Country;
46

57
import java.util.List;
@@ -15,6 +17,8 @@ public interface CountryService {
1517

1618
void deleteCountry(Country thisCountry);
1719

20+
Page<Country> findAllCountriesOrderByName(Pageable pageRequest);
21+
1822
List<Country> findAllCountriesOrderByName();
1923

2024
Country findCountryById(long countryId);

src/main/java/org/woehlke/greenshop/customer/service/CountryServiceImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.woehlke.greenshop.customer.service;
22

3+
import org.springframework.data.domain.Page;
4+
import org.springframework.data.domain.Pageable;
35
import org.springframework.data.domain.Sort;
46
import org.springframework.transaction.annotation.Propagation;
57
import org.springframework.transaction.annotation.Transactional;
@@ -38,6 +40,11 @@ public void deleteCountry(Country thisCountry) {
3840
countryRepository.delete(thisCountry);
3941
}
4042

43+
@Override
44+
public Page<Country> findAllCountriesOrderByName(Pageable pageRequest) {
45+
return countryRepository.findAll(pageRequest);
46+
}
47+
4148
@Override
4249
public List<Country> findAllCountriesOrderByName() {
4350
Sort sort = new Sort("name");

src/main/webapp/WEB-INF/jsp/admin/countries.jsp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@
2121
<c:import url="countriesDataTable.jsp" />
2222
<tr>
2323
<td colspan="4"><table border="0" width="100%" cellspacing="0" cellpadding="2">
24+
<c:import url="countriesPager.jsp" />
2425
<tr>
25-
<td class="smallText" valign="top">Displaying <strong>1</strong> to <strong>20</strong> (of <strong>239</strong> countries)</td>
26-
<td class="smallText" align="right"><form name="pages" action="http://localhost/oscommerce2/admin/countries.php" method="get">&lt;&lt;&nbsp;&nbsp;Page <select name="page" onchange="this.form.submit();"><option value="1" selected="selected">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option></select> of 12&nbsp;&nbsp;<a href="http://localhost/oscommerce2/admin/countries.php?page=2" class="splitPageLink">&gt;&gt;</a></form></td>
27-
</tr>
28-
<tr>
29-
<td class="smallText" colspan="2" align="right"><span class="tdbLink"><a id="tdb1" href="<c:url value="/admin/countries/insert"/>">New Country</a></span><script type="text/javascript">$("#tdb1").button({icons:{primary:"ui-icon-plus"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
26+
<td class="smallText" colspan="2" align="right"><span class="tdbLink"><a id="tdb1" href="<c:url value="/admin/countries/insert?page=${countries.number}"/>">New Country</a></span><script type="text/javascript">$("#tdb1").button({icons:{primary:"ui-icon-plus"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
3027
</tr>
3128
</table></td>
3229
</tr>
@@ -39,7 +36,7 @@
3936
</table>
4037
<table border="0" width="100%" cellspacing="0" cellpadding="2">
4138
<tr>
42-
<td align="center" class="infoBoxContent"><span class="tdbLink"><a id="tdb2" href="<c:url value="/admin/countries/${thisCountry.id}/edit"/>">Edit</a></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-document"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb3" href="<c:url value="/admin/countries/${thisCountry.id}/delete"/>">Delete</a></span><script type="text/javascript">$("#tdb3").button({icons:{primary:"ui-icon-trash"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
39+
<td align="center" class="infoBoxContent"><span class="tdbLink"><a id="tdb2" href="<c:url value="/admin/countries/${thisCountry.id}/edit?page=${countries.number}"/>">Edit</a></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-document"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb3" href="<c:url value="/admin/countries/${thisCountry.id}/delete?page=${countries.number}"/>">Delete</a></span><script type="text/javascript">$("#tdb3").button({icons:{primary:"ui-icon-trash"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
4340
</tr>
4441
<tr>
4542
<td class="infoBoxContent"><br />Name:<br />${thisCountry.name}</td>
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
<%@ include file="/WEB-INF/layout/taglibs.jsp"%>
2-
<c:forEach var="country" items="${countries}">
2+
<c:forEach var="country" items="${countries.content}">
33
<c:if test="${country.id == thisCountry.id}">
4-
<tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='http://localhost/oscommerce2/admin/countries.php?page=1&cID=1&action=edit'">
4+
<tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='<c:url value="/admin/countries/${country.id}/edit?page=${countries.number}"/>'">
55
<td class="dataTableContent">${country.name}</td>
66
<td class="dataTableContent" align="center" width="40">${country.isoCode2}</td>
77
<td class="dataTableContent" align="center" width="40">${country.isoCode3}</td>
88
<td class="dataTableContent" align="right"><img src="resources/admin/images/icon_arrow_right.gif" border="0" alt="" />&nbsp;</td>
99
</tr>
1010
</c:if>
1111
<c:if test="${country.id != thisCountry.id}">
12-
<tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='<c:url value="/admin/countries/${country.id}"/>'">
12+
<tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='<c:url value="/admin/countries/${country.id}?page=${countries.number}"/>'">
1313
<td class="dataTableContent">${country.name}</td>
1414
<td class="dataTableContent" align="center" width="40">${country.isoCode2}</td>
1515
<td class="dataTableContent" align="center" width="40">${country.isoCode3}</td>
16-
<td class="dataTableContent" align="right"><a href="<c:url value="/admin/countries/${country.id}"/>"><img src="resources/admin/images/icon_info.gif" border="0" alt="Info" title="Info" /></a>&nbsp;</td>
16+
<td class="dataTableContent" align="right"><a href="<c:url value="/admin/countries/${country.id}?page=${countries.number}"/>"><img src="resources/admin/images/icon_info.gif" border="0" alt="Info" title="Info" /></a>&nbsp;</td>
1717
</tr>
1818
</c:if>
1919
</c:forEach>

src/main/webapp/WEB-INF/jsp/admin/countriesDeleteForm.jsp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
<c:import url="countriesDataTable.jsp" />
2121
<tr>
2222
<td colspan="4"><table border="0" width="100%" cellspacing="0" cellpadding="2">
23-
<tr>
24-
<td class="smallText" valign="top">Displaying <strong>241</strong> to <strong>241</strong> (of <strong>241</strong> countries)</td>
25-
<td class="smallText" align="right"><form name="pages" action="http://localhost/oscommerce2/admin/countries.php" method="get"><a href="http://localhost/oscommerce2/admin/countries.php?page=12" class="splitPageLink">&lt;&lt;</a>&nbsp;&nbsp;Page <select name="page" onchange="this.form.submit();"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13" selected="selected">13</option></select> of 13&nbsp;&nbsp;&gt;&gt;</form></td>
26-
</tr>
23+
<c:import url="countriesPager.jsp" />
2724
</table></td>
2825
</tr>
2926
</table></td>
@@ -42,7 +39,7 @@
4239
<td class="infoBoxContent"><br /><strong>${thisCountry.name}</strong></td>
4340
</tr>
4441
<tr>
45-
<td align="center" class="infoBoxContent"><br /><span class="tdbLink"><button id="tdb1" type="submit">Delete</button></span><script type="text/javascript">$("#tdb1").button({icons:{primary:"ui-icon-trash"}}).addClass("ui-priority-primary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb2" href="<c:url value="/admin/countries/${thisCountry.id}"/>">Cancel</a></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-close"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
42+
<td align="center" class="infoBoxContent"><br /><span class="tdbLink"><button id="tdb1" type="submit">Delete</button></span><script type="text/javascript">$("#tdb1").button({icons:{primary:"ui-icon-trash"}}).addClass("ui-priority-primary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb2" href="<c:url value="/admin/countries/${thisCountry.id}?page=${countries.number}"/>">Cancel</a></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-close"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
4643
</tr>
4744
</table>
4845
</form>

0 commit comments

Comments
 (0)