From 2ae8aa816cf78f2dc322b428927ad386dc3aac6f Mon Sep 17 00:00:00 2001 From: upagge Date: Tue, 31 Mar 2020 21:44:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A7=D1=82=D0=BE-=D1=82=D0=BE=20=D0=BC=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=B2=D1=81=D0=B5=D0=B3=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/entity/PullRequest.java | 6 +-- .../dto/bitbucket/CommentJson.java | 12 +++--- .../dto/bitbucket/PullRequestJson.java | 12 +++--- .../scheduler/SchedulerPullRequest.java | 6 +-- .../com/tsc/bitbucketbot/service/Utils.java | 42 ++++++++++--------- ...> LocalDateTimeFromEpochDeserializer.java} | 11 +++-- .../com/tsc/bitbucketbot/utils/Message.java | 6 ++- .../com/tsc/bitbucketbot/utils/Smile.java | 5 ++- .../resources/liquibase/change-set/v1.4.0.xml | 17 ++++++++ 9 files changed, 69 insertions(+), 48 deletions(-) rename src/main/java/com/tsc/bitbucketbot/utils/{LocalDateFromEpochDeserializer.java => LocalDateTimeFromEpochDeserializer.java} (62%) diff --git a/src/main/java/com/tsc/bitbucketbot/domain/entity/PullRequest.java b/src/main/java/com/tsc/bitbucketbot/domain/entity/PullRequest.java index 6913dac..9336729 100644 --- a/src/main/java/com/tsc/bitbucketbot/domain/entity/PullRequest.java +++ b/src/main/java/com/tsc/bitbucketbot/domain/entity/PullRequest.java @@ -21,7 +21,7 @@ import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; /** @@ -81,9 +81,9 @@ public class PullRequest { private PullRequestStatus status; @Column(name = "create_date") - private LocalDate createDate; + private LocalDateTime createDate; @Column(name = "update_date") - private LocalDate updateDate; + private LocalDateTime updateDate; } diff --git a/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/CommentJson.java b/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/CommentJson.java index 5531c37..8561030 100644 --- a/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/CommentJson.java +++ b/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/CommentJson.java @@ -1,10 +1,10 @@ package com.tsc.bitbucketbot.dto.bitbucket; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.tsc.bitbucketbot.utils.LocalDateFromEpochDeserializer; +import com.tsc.bitbucketbot.utils.LocalDateTimeFromEpochDeserializer; import lombok.Data; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; @Data @@ -15,10 +15,10 @@ public class CommentJson { private UserJson author; private List comments; - @JsonDeserialize(using = LocalDateFromEpochDeserializer.class) - private LocalDate createdDate; + @JsonDeserialize(using = LocalDateTimeFromEpochDeserializer.class) + private LocalDateTime createdDate; - @JsonDeserialize(using = LocalDateFromEpochDeserializer.class) - private LocalDate updatedDate; + @JsonDeserialize(using = LocalDateTimeFromEpochDeserializer.class) + private LocalDateTime updatedDate; } diff --git a/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/PullRequestJson.java b/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/PullRequestJson.java index 91b23cf..d761d22 100644 --- a/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/PullRequestJson.java +++ b/src/main/java/com/tsc/bitbucketbot/dto/bitbucket/PullRequestJson.java @@ -1,10 +1,10 @@ package com.tsc.bitbucketbot.dto.bitbucket; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.tsc.bitbucketbot.utils.LocalDateFromEpochDeserializer; +import com.tsc.bitbucketbot.utils.LocalDateTimeFromEpochDeserializer; import lombok.Data; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; /** @@ -19,11 +19,11 @@ public class PullRequestJson { private Integer version; private PullRequestState state; - @JsonDeserialize(using = LocalDateFromEpochDeserializer.class) - private LocalDate createdDate; + @JsonDeserialize(using = LocalDateTimeFromEpochDeserializer.class) + private LocalDateTime createdDate; - @JsonDeserialize(using = LocalDateFromEpochDeserializer.class) - private LocalDate updatedDate; + @JsonDeserialize(using = LocalDateTimeFromEpochDeserializer.class) + private LocalDateTime updatedDate; private String title; private String description; diff --git a/src/main/java/com/tsc/bitbucketbot/scheduler/SchedulerPullRequest.java b/src/main/java/com/tsc/bitbucketbot/scheduler/SchedulerPullRequest.java index cf118ed..3affbe1 100644 --- a/src/main/java/com/tsc/bitbucketbot/scheduler/SchedulerPullRequest.java +++ b/src/main/java/com/tsc/bitbucketbot/scheduler/SchedulerPullRequest.java @@ -24,7 +24,7 @@ import org.springframework.core.convert.ConversionService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -191,8 +191,8 @@ public class SchedulerPullRequest { @NonNull private Optional changeVersionPr(PullRequest pullRequest, PullRequest newPullRequest) { - LocalDate oldDate = pullRequest.getUpdateDate(); - LocalDate newDate = newPullRequest.getUpdateDate(); + LocalDateTime oldDate = pullRequest.getUpdateDate(); + LocalDateTime newDate = newPullRequest.getUpdateDate(); if (!oldDate.isEqual(newDate)) { return Optional.of( Message.updatePullRequest( diff --git a/src/main/java/com/tsc/bitbucketbot/service/Utils.java b/src/main/java/com/tsc/bitbucketbot/service/Utils.java index b8bcca5..a932859 100644 --- a/src/main/java/com/tsc/bitbucketbot/service/Utils.java +++ b/src/main/java/com/tsc/bitbucketbot/service/Utils.java @@ -42,31 +42,33 @@ public class Utils { if (token != null) { urlCon.setRequestProperty("Authorization", "Bearer " + token); } - BufferedReader in; - if (urlCon.getHeaderField("Content-Encoding") != null - && urlCon.getHeaderField("Content-Encoding").equals("gzip")) { - in = new BufferedReader(new InputStreamReader(new GZIPInputStream(urlCon.getInputStream()))); - } else { - in = new BufferedReader(new InputStreamReader(urlCon.getInputStream())); + try (BufferedReader in = (isGzip(urlCon)) ? + new BufferedReader(new InputStreamReader(new GZIPInputStream(urlCon.getInputStream()))) + : new BufferedReader(new InputStreamReader(urlCon.getInputStream()));) { + String inputLine; + sb = new StringBuilder(); + while ((inputLine = in.readLine()) != null) { + sb.append(inputLine); + } + } catch (IOException e) { + log.trace(e.getMessage()); } - String inputLine; - sb = new StringBuilder(); - - while ((inputLine = in.readLine()) != null) { - sb.append(inputLine); + if (sb != null) { + try { + return Optional.of(objectMapper.readValue(sb.toString(), classOfT)); + } catch (JsonProcessingException e) { + log.error(e.getMessage()); + } } - in.close(); } catch (IOException e) { - log.trace(e.getMessage()); - } - if (sb != null) { - try { - return Optional.of(objectMapper.readValue(sb.toString(), classOfT)); - } catch (JsonProcessingException e) { - log.error(e.getMessage()); - } + log.error(e.getMessage()); } return Optional.empty(); } + private static boolean isGzip(URLConnection urlCon) { + return urlCon.getHeaderField("Content-Encoding") != null + && urlCon.getHeaderField("Content-Encoding").equals("gzip"); + } + } diff --git a/src/main/java/com/tsc/bitbucketbot/utils/LocalDateFromEpochDeserializer.java b/src/main/java/com/tsc/bitbucketbot/utils/LocalDateTimeFromEpochDeserializer.java similarity index 62% rename from src/main/java/com/tsc/bitbucketbot/utils/LocalDateFromEpochDeserializer.java rename to src/main/java/com/tsc/bitbucketbot/utils/LocalDateTimeFromEpochDeserializer.java index ed7254e..1baaabe 100644 --- a/src/main/java/com/tsc/bitbucketbot/utils/LocalDateFromEpochDeserializer.java +++ b/src/main/java/com/tsc/bitbucketbot/utils/LocalDateTimeFromEpochDeserializer.java @@ -7,23 +7,22 @@ import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.time.Instant; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZoneId; @Slf4j -public class LocalDateFromEpochDeserializer extends JsonDeserializer { +public class LocalDateTimeFromEpochDeserializer extends JsonDeserializer { @Override - public LocalDate deserialize(JsonParser jp, DeserializationContext ctxt) { + public LocalDateTime deserialize(JsonParser jp, DeserializationContext ctxt) { try { Long time = jp.readValueAs(Long.class); Instant instant = Instant.ofEpochMilli(time); - LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); - return localDate; + return instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); } catch (IOException e) { log.error(e.getMessage()); } - return LocalDate.now(); + return null; } } diff --git a/src/main/java/com/tsc/bitbucketbot/utils/Message.java b/src/main/java/com/tsc/bitbucketbot/utils/Message.java index 2b77989..e6b3154 100644 --- a/src/main/java/com/tsc/bitbucketbot/utils/Message.java +++ b/src/main/java/com/tsc/bitbucketbot/utils/Message.java @@ -24,6 +24,7 @@ public class Message { private static final UpdateDataComparator COMPARATOR = new UpdateDataComparator(); private static final Integer PR_COUNT = 4; private static final String DONATION_LINK = "https://www.tinkoff.ru/sl/1T9s4esiMf"; + public static final String HELP_LINK = "https://nuzhnapomosh.ru/about/"; private Message() { throw new IllegalStateException("Утилитарный класс"); @@ -122,8 +123,9 @@ public class Message { } if (dayX()) { message.append(Smile.BR).append(Smile.FUN).append(" Кстати, поздравляю, сегодня день З/П").append(Smile.BR) - .append(Smile.DANGEROUS).append("И раз такое дело, то напоминаю, что в виду независящих от разработчика условий, бот работает на платном VDS. Поэтому всячески приветствуются ") - .append(link("донаты на оплату сервера", DONATION_LINK)).append(Smile.BR); + .append(Smile.DANGEROUS).append("Спасибо всем, кто ").append(link("донатил", DONATION_LINK)).append(", мы оплатили хостинг до октября :)") + .append(Smile.BR).append("Теперь стоит ").append(link("помочь", HELP_LINK)).append(" тем, кто действительно в этом нуждается))") + .append(Smile.BR); } message .append(Smile.BR) diff --git a/src/main/java/com/tsc/bitbucketbot/utils/Smile.java b/src/main/java/com/tsc/bitbucketbot/utils/Smile.java index 20e58fd..e2368e8 100644 --- a/src/main/java/com/tsc/bitbucketbot/utils/Smile.java +++ b/src/main/java/com/tsc/bitbucketbot/utils/Smile.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.Period; @AllArgsConstructor @@ -33,8 +34,8 @@ public enum Smile { @Getter private String value; - public static Smile statusPr(LocalDate updateDate) { - int periodDay = Period.between(updateDate, LocalDate.now()).getDays(); + public static Smile statusPr(LocalDateTime updateDate) { + int periodDay = Period.between(updateDate.toLocalDate(), LocalDate.now()).getDays(); if (periodDay < 5) { return Smile.valueOf("DAY_" + periodDay); } else { diff --git a/src/main/resources/liquibase/change-set/v1.4.0.xml b/src/main/resources/liquibase/change-set/v1.4.0.xml index 52beb89..2c92210 100644 --- a/src/main/resources/liquibase/change-set/v1.4.0.xml +++ b/src/main/resources/liquibase/change-set/v1.4.0.xml @@ -34,4 +34,21 @@ + + + + + + + + + \ No newline at end of file