Skip to content

Commit 95b68b0

Browse files
committed
fix_errors
1 parent 252dc70 commit 95b68b0

File tree

14 files changed

+105
-8
lines changed

14 files changed

+105
-8
lines changed

src/main/java/ru/mystamps/web/Url.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public final class Url {
3737
public static final String INDEX_PAGE = "/";
3838
public static final String ROBOTS_TXT = "/robots.txt";
3939
public static final String SITEMAP_XML = "/sitemap.xml";
40-
40+
41+
public static final String DAILY_STATISTICS = "/report/daily";
4142
public static final String SITE_EVENTS_PAGE = "/site/events";
4243

4344
public static final String REGISTRATION_PAGE = "/account/register";
@@ -136,6 +137,7 @@ public static Map<String, String> asMap(boolean serveContentFromSingleHost) {
136137
map.put("INFO_COLLECTION_PAGE", INFO_COLLECTION_PAGE);
137138
map.put("SITE_EVENTS_PAGE", SITE_EVENTS_PAGE);
138139
map.put("BOOTSTRAP_LANGUAGE", BOOTSTRAP_LANGUAGE);
140+
map.put("DAILY_STATISTICS", DAILY_STATISTICS);
139141

140142
if (serveContentFromSingleHost) {
141143
map.put("BOOTSTRAP_CSS", BOOTSTRAP_CSS);

src/main/java/ru/mystamps/web/config/ControllersConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ public RobotsTxtController getRobotsTxtController() {
8484
return new RobotsTxtController();
8585
}
8686

87+
@Bean
88+
public ReportController getReportController() {
89+
return new ReportController(
90+
servicesConfig.getMailService(),
91+
servicesConfig.getCronService()
92+
);
93+
}
94+
8795
@Bean
8896
public SeriesController getSeriesController() {
8997
return new SeriesController(
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Copyright (C) 2009-2016 Slava Semushin <slava.semushin@gmail.com>
3+
*
4+
* This program is free software; you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation; either version 2 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program; if not, write to the Free Software
16+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17+
*/
18+
19+
package ru.mystamps.web.controller;
20+
21+
import java.io.IOException;
22+
import java.io.PrintWriter;
23+
24+
import javax.servlet.http.HttpServletResponse;
25+
26+
import org.slf4j.Logger;
27+
import org.slf4j.LoggerFactory;
28+
29+
import org.springframework.stereotype.Controller;
30+
import org.springframework.web.bind.annotation.RequestMapping;
31+
32+
import lombok.RequiredArgsConstructor;
33+
34+
import ru.mystamps.web.Url;
35+
import ru.mystamps.web.service.CronService;
36+
import ru.mystamps.web.service.MailService;
37+
38+
/**
39+
* @author Maxim Shestakov
40+
*/
41+
@Controller
42+
@RequiredArgsConstructor
43+
public class ReportController {
44+
private static final Logger LOG = LoggerFactory.getLogger(RobotsTxtController.class);
45+
46+
private final MailService mailService;
47+
private final CronService cronService;
48+
49+
@RequestMapping(Url.DAILY_STATISTICS)
50+
public void adminDailyReport(HttpServletResponse response) {
51+
response.setContentType("text/plain");
52+
response.setCharacterEncoding("UTF-8");
53+
54+
try {
55+
PrintWriter printWriter = response.getWriter();
56+
String stats = mailService.getTextOfDailyStatisticsMail(
57+
cronService.getDailyStatistics()
58+
);
59+
printWriter.println(stats);
60+
} catch (IOException e) {
61+
LOG.error("Can't get Daily Reports", e.getMessage());
62+
}
63+
}
64+
65+
}

src/main/java/ru/mystamps/web/service/CronService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
*/
1818
package ru.mystamps.web.service;
1919

20+
import ru.mystamps.web.service.dto.AdminDailyReport;
21+
2022
public interface CronService {
2123
int PURGE_AFTER_DAYS = 3;
2224

2325
void sendDailyStatistics();
26+
AdminDailyReport getDailyStatistics();
2427
void purgeUsersActivations();
2528
}

src/main/java/ru/mystamps/web/service/CronServiceImpl.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,21 @@ public class CronServiceImpl implements CronService {
5050
private final UsersActivationService usersActivationService;
5151
private final MailService mailService;
5252

53+
private AdminDailyReport report;
54+
5355
@Override
5456
@Scheduled(cron = EVERY_DAY_AT_00_00)
5557
@Transactional(readOnly = true)
5658
public void sendDailyStatistics() {
59+
mailService.sendDailyStatisticsToAdmin(report);
60+
}
61+
62+
@Override
63+
public AdminDailyReport getDailyStatistics() {
5764
Date today = DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH);
5865
Date yesterday = DateUtils.addDays(today, -1);
59-
60-
AdminDailyReport report = new AdminDailyReport();
66+
67+
report = new AdminDailyReport();
6168
report.setStartDate(yesterday);
6269
report.setEndDate(today);
6370
report.setAddedCategoriesCounter(categoryService.countAddedSince(yesterday));
@@ -66,32 +73,32 @@ public void sendDailyStatistics() {
6673
report.setUpdatedSeriesCounter(seriesService.countUpdatedSince(yesterday));
6774
report.setRegistrationRequestsCounter(usersActivationService.countCreatedSince(yesterday));
6875
report.setRegisteredUsersCounter(userService.countRegisteredSince(yesterday));
69-
76+
7077
long notFoundCounter = suspiciousActivityService.countByTypeSince(
7178
SiteServiceImpl.PAGE_NOT_FOUND,
7279
yesterday
7380
);
7481
report.setNotFoundCounter(notFoundCounter);
75-
82+
7683
long failedAuthCounter = suspiciousActivityService.countByTypeSince(
7784
SiteServiceImpl.AUTHENTICATION_FAILED,
7885
yesterday
7986
);
8087
report.setFailedAuthCounter(failedAuthCounter);
81-
88+
8289
long missingCsrfCounter = suspiciousActivityService.countByTypeSince(
8390
SiteServiceImpl.MISSING_CSRF_TOKEN,
8491
yesterday
8592
);
8693
report.setMissingCsrfCounter(missingCsrfCounter);
87-
94+
8895
long invalidCsrfCounter = suspiciousActivityService.countByTypeSince(
8996
SiteServiceImpl.INVALID_CSRF_TOKEN,
9097
yesterday
9198
);
9299
report.setInvalidCsrfCounter(invalidCsrfCounter);
93100

94-
mailService.sendDailyStatisticsToAdmin(report);
101+
return report;
95102
}
96103

97104
@Override

src/main/java/ru/mystamps/web/service/MailService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@
2323
public interface MailService {
2424
void sendActivationKeyToUser(SendUsersActivationDto activation);
2525
void sendDailyStatisticsToAdmin(AdminDailyReport report);
26+
String getTextOfDailyStatisticsMail(AdminDailyReport report);
2627
}

src/main/java/ru/mystamps/web/support/spring/security/Authority.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public final class Authority {
3131
public static final GrantedAuthority UPDATE_COLLECTION = new SimpleGrantedAuthority(StringAuthority.UPDATE_COLLECTION);
3232
public static final GrantedAuthority VIEW_SITE_EVENTS = new SimpleGrantedAuthority(StringAuthority.VIEW_SITE_EVENTS);
3333
public static final GrantedAuthority VIEW_SERIES_SALES = new SimpleGrantedAuthority(StringAuthority.VIEW_SERIES_SALES);
34+
public static final GrantedAuthority VIEW_DAILY_STATS = new SimpleGrantedAuthority(StringAuthority.VIEW_DAILY_STATS);
3435

3536
private Authority() {
3637
}

src/main/java/ru/mystamps/web/support/spring/security/CustomUserDetailsService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ private static Collection<? extends GrantedAuthority> getAuthorities(UserDetails
7979
authorities.add(Authority.VIEW_SITE_EVENTS);
8080
authorities.add(Authority.VIEW_SERIES_SALES);
8181
authorities.add(Authority.MANAGE_TOGGLZ);
82+
authorities.add(Authority.VIEW_DAILY_STATS);
8283
}
8384

8485
return authorities;

src/main/java/ru/mystamps/web/support/spring/security/HasAuthority.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public final class HasAuthority {
2222
public static final String CREATE_SERIES = "hasAuthority('" + StringAuthority.CREATE_SERIES + "')";
2323
public static final String CREATE_CATEGORY = "hasAuthority('" + StringAuthority.CREATE_CATEGORY + "')";
2424
public static final String CREATE_COUNTRY = "hasAuthority('" + StringAuthority.CREATE_COUNTRY + "')";
25+
public static final String VIEW_DAILY_STATS = "hasAuthority('" + StringAuthority.VIEW_DAILY_STATS + "')";
2526
public static final String UPDATE_COLLECTION = "hasAuthority('" + StringAuthority.UPDATE_COLLECTION + "')";
2627
public static final String VIEW_SITE_EVENTS = "hasAuthority('" + StringAuthority.VIEW_SITE_EVENTS + "')";
2728
public static final String VIEW_SERIES_SALES = "hasAuthority('" + StringAuthority.VIEW_SERIES_SALES + "')";

src/main/java/ru/mystamps/web/support/spring/security/SecurityConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ public void configure(WebSecurity web) throws Exception {
6666
protected void configure(HttpSecurity http) throws Exception {
6767
http
6868
.authorizeRequests()
69+
.antMatchers(Url.DAILY_STATISTICS)
70+
.hasAuthority(StringAuthority.VIEW_DAILY_STATS)
6971
.antMatchers(Url.ADD_CATEGORY_PAGE)
7072
.hasAuthority(StringAuthority.CREATE_CATEGORY)
7173
.antMatchers(Url.ADD_COUNTRY_PAGE)

0 commit comments

Comments
 (0)