Skip to content

Commit 124730c

Browse files
committed
refactor: move a method from CategoryController to SeriesController to reduce a coupling.
Fix #1053
1 parent 648d38c commit 124730c

File tree

5 files changed

+32
-38
lines changed

5 files changed

+32
-38
lines changed

src/main/java/ru/mystamps/web/feature/category/CategoryConfig.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.springframework.context.annotation.Bean;
2323
import org.springframework.context.annotation.Configuration;
2424
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
25-
import ru.mystamps.web.feature.series.SeriesService;
2625

2726
/**
2827
* Spring configuration that is required for using categories in an application.
@@ -37,11 +36,10 @@ public class CategoryConfig {
3736
public static class Controllers {
3837

3938
private final CategoryService categoryService;
40-
private final SeriesService seriesService;
4139

4240
@Bean
4341
public CategoryController categoryController() {
44-
return new CategoryController(categoryService, seriesService);
42+
return new CategoryController(categoryService);
4543
}
4644

4745
@Bean

src/main/java/ru/mystamps/web/feature/category/CategoryController.java

+3-33
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
import org.springframework.web.servlet.view.RedirectView;
3333
import ru.mystamps.web.common.LinkEntityDto;
3434
import ru.mystamps.web.common.LocaleUtils;
35-
import ru.mystamps.web.feature.series.SeriesInfoDto;
36-
import ru.mystamps.web.feature.series.SeriesService;
35+
import ru.mystamps.web.feature.series.SeriesUrl;
3736
import ru.mystamps.web.support.spring.mvc.ReplaceRepeatingSpacesEditor;
3837
import ru.mystamps.web.support.spring.security.CurrentUser;
3938

@@ -50,7 +49,6 @@
5049
public class CategoryController {
5150

5251
private final CategoryService categoryService;
53-
private final SeriesService seriesService;
5452

5553
@InitBinder("addCategoryForm")
5654
protected void initBinder(WebDataBinder binder) {
@@ -81,35 +79,7 @@ public String processInput(
8179

8280
redirectAttributes.addFlashAttribute("justAddedCategory", true);
8381

84-
return redirectTo(CategoryUrl.INFO_CATEGORY_PAGE, slug);
85-
}
86-
87-
// CheckStyle: ignore LineLength for next 1 line
88-
// @todo #927 CategoryController: remove dependency on SeriesService by moving showInfoBySlug() method
89-
@GetMapping(CategoryUrl.INFO_CATEGORY_PAGE)
90-
public String showInfoBySlug(
91-
@Category @PathVariable("slug") LinkEntityDto category,
92-
Model model,
93-
Locale userLocale,
94-
HttpServletResponse response)
95-
throws IOException {
96-
97-
if (category == null) {
98-
response.sendError(HttpServletResponse.SC_NOT_FOUND);
99-
return null;
100-
}
101-
102-
String slug = category.getSlug();
103-
String name = category.getName();
104-
105-
String lang = LocaleUtils.getLanguageOrNull(userLocale);
106-
List<SeriesInfoDto> series = seriesService.findByCategorySlug(slug, lang);
107-
108-
model.addAttribute("categorySlug", slug);
109-
model.addAttribute("categoryName", name);
110-
model.addAttribute("seriesOfCategory", series);
111-
112-
return "category/info";
82+
return redirectTo(SeriesUrl.INFO_CATEGORY_PAGE, slug);
11383
}
11484

11585
@GetMapping(CategoryUrl.INFO_CATEGORY_BY_ID_PAGE)
@@ -125,7 +95,7 @@ public View showInfoById(
12595

12696
RedirectView view = new RedirectView();
12797
view.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
128-
view.setUrl(CategoryUrl.INFO_CATEGORY_PAGE);
98+
view.setUrl(SeriesUrl.INFO_CATEGORY_PAGE);
12999

130100
return view;
131101
}

src/main/java/ru/mystamps/web/feature/category/CategoryUrl.java

-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ public final class CategoryUrl {
3232
public static final String SUGGEST_SERIES_CATEGORY = "/suggest/series_category";
3333
public static final String ADD_CATEGORY_PAGE = "/category/add";
3434
static final String GET_CATEGORIES_PAGE = "/categories";
35-
static final String INFO_CATEGORY_PAGE = "/category/{slug}";
3635

3736
// For backward compatibility
3837
static final String LIST_CATEGORIES_PAGE = "/category/list";
@@ -44,7 +43,6 @@ private CategoryUrl() {
4443
public static void exposeUrlsToView(Map<String, String> urls) {
4544
urls.put("ADD_CATEGORY_PAGE", ADD_CATEGORY_PAGE);
4645
urls.put("GET_CATEGORIES_PAGE", GET_CATEGORIES_PAGE);
47-
urls.put("INFO_CATEGORY_PAGE", INFO_CATEGORY_PAGE);
4846
urls.put("SUGGEST_SERIES_CATEGORY", SUGGEST_SERIES_CATEGORY);
4947
}
5048

src/main/java/ru/mystamps/web/feature/series/SeriesController.java

+26
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,32 @@ public String showInfoByCountrySlug(
281281
return "country/info";
282282
}
283283

284+
@GetMapping(SeriesUrl.INFO_CATEGORY_PAGE)
285+
public String showInfoBySlug(
286+
@Category @PathVariable("slug") LinkEntityDto category,
287+
Model model,
288+
Locale userLocale,
289+
HttpServletResponse response)
290+
throws IOException {
291+
292+
if (category == null) {
293+
response.sendError(HttpServletResponse.SC_NOT_FOUND);
294+
return null;
295+
}
296+
297+
String slug = category.getSlug();
298+
String name = category.getName();
299+
300+
String lang = LocaleUtils.getLanguageOrNull(userLocale);
301+
List<SeriesInfoDto> series = seriesService.findByCategorySlug(slug, lang);
302+
303+
model.addAttribute("categorySlug", slug);
304+
model.addAttribute("categoryName", name);
305+
model.addAttribute("seriesOfCategory", series);
306+
307+
return "category/info";
308+
}
309+
284310
@SuppressWarnings("checkstyle:parameternumber")
285311
@PostMapping(path = SeriesUrl.ADD_IMAGE_SERIES_PAGE, params = "imageUrl")
286312
public String processImageWithImageUrl(

src/main/java/ru/mystamps/web/feature/series/SeriesUrl.java

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public final class SeriesUrl {
3232
public static final String ADD_SERIES_PAGE = "/series/add";
3333
public static final String ADD_SERIES_ASK_PAGE = "/series/{id}/ask";
3434
public static final String INFO_SERIES_PAGE = "/series/{id}";
35+
public static final String INFO_CATEGORY_PAGE = "/category/{slug}";
3536
public static final String INFO_COUNTRY_PAGE = "/country/{slug}";
3637
public static final String ADD_IMAGE_SERIES_PAGE = "/series/{id}/image";
3738
public static final String SERIES_INFO_PAGE_REGEXP = "/series/(\\d+|\\d+/(ask|image))";
@@ -48,6 +49,7 @@ public static void exposeUrlsToView(Map<String, String> urls) {
4849
urls.put("ADD_IMAGE_SERIES_PAGE", ADD_IMAGE_SERIES_PAGE);
4950
urls.put("ADD_SERIES_ASK_PAGE", ADD_SERIES_ASK_PAGE);
5051
urls.put("ADD_SERIES_PAGE", ADD_SERIES_PAGE);
52+
urls.put("INFO_CATEGORY_PAGE", INFO_CATEGORY_PAGE);
5153
urls.put("INFO_COUNTRY_PAGE", INFO_COUNTRY_PAGE);
5254
urls.put("INFO_SERIES_PAGE", INFO_SERIES_PAGE);
5355
urls.put("SEARCH_SERIES_BY_CATALOG", SEARCH_SERIES_BY_CATALOG);

0 commit comments

Comments
 (0)