diff --git a/persist/src/main/resources/persist.conf b/config_templates/persist.conf similarity index 100% rename from persist/src/main/resources/persist.conf rename to config_templates/persist.conf diff --git a/parent-web/pom.xml b/parent-web/pom.xml index 7756bfb..a21d77c 100644 --- a/parent-web/pom.xml +++ b/parent-web/pom.xml @@ -75,6 +75,7 @@ true logback.xml + diff --git a/parent/pom.xml b/parent/pom.xml index ba5e87b..3e016ed 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -67,12 +67,23 @@ ${masterjava.config} logback-test.xml + persist.conf src/test/resources + + + ${masterjava.config} + + hosts.conf + wsdl/mailService.wsdl + + true + + diff --git a/persist/pom.xml b/persist/pom.xml index 960abcf..22d9a91 100644 --- a/persist/pom.xml +++ b/persist/pom.xml @@ -45,6 +45,11 @@ jdbi 2.78 + + org.antlr + stringtemplate + 3.2 + com.bertoncelj.jdbi.entitymapper jdbi-entity-mapper diff --git a/persist/src/main/java/ru/javaops/masterjava/persist/dao/UserDao.java b/persist/src/main/java/ru/javaops/masterjava/persist/dao/UserDao.java index 2f13898..adf34f1 100644 --- a/persist/src/main/java/ru/javaops/masterjava/persist/dao/UserDao.java +++ b/persist/src/main/java/ru/javaops/masterjava/persist/dao/UserDao.java @@ -5,6 +5,8 @@ import org.skife.jdbi.v2.sqlobject.*; import org.skife.jdbi.v2.sqlobject.customizers.BatchChunkSize; import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapperFactory; +import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator; +import org.skife.jdbi.v2.unstable.BindIn; import ru.javaops.masterjava.persist.DBIProvider; import ru.javaops.masterjava.persist.model.User; @@ -16,6 +18,7 @@ *

*

*/ +@UseStringTemplate3StatementLocator @RegisterMapperFactory(EntityMapperFactory.class) public abstract class UserDao implements AbstractDao { @@ -60,6 +63,8 @@ public int getSeqAndSkip(int step) { // "ON CONFLICT (email) DO UPDATE SET full_name=:fullName, flag=CAST(:flag AS USER_FLAG)") public abstract int[] insertBatch(@BindBean List users, @BatchChunkSize int chunkSize); + @SqlQuery("SELECT * FROM users WHERE id IN ()") + public abstract List getByIds(@BindIn("ids") List ids); public List insertAndGetConflictEmails(List users) { int[] result = insertBatch(users, users.size()); diff --git a/persist/src/test/java/ru/javaops/masterjava/persist/dao/UserDaoTest.java b/persist/src/test/java/ru/javaops/masterjava/persist/dao/UserDaoTest.java index 1dd6ed4..12c0b27 100644 --- a/persist/src/test/java/ru/javaops/masterjava/persist/dao/UserDaoTest.java +++ b/persist/src/test/java/ru/javaops/masterjava/persist/dao/UserDaoTest.java @@ -7,9 +7,10 @@ import ru.javaops.masterjava.persist.UserTestData; import ru.javaops.masterjava.persist.model.User; +import java.util.ArrayList; import java.util.List; -import static ru.javaops.masterjava.persist.UserTestData.FIST5_USERS; +import static ru.javaops.masterjava.persist.UserTestData.*; /** * gkislin @@ -50,4 +51,11 @@ public void getSeqAndSkip() throws Exception { int seq2 = dao.getSeqAndSkip(1); Assert.assertEquals(5, seq2 - seq1); } + + @Test + public void getByIds() throws Exception { + List ids = new ArrayList<>(); + FIST5_USERS.forEach(u -> ids.add(u.getId())); + Assert.assertEquals(dao.getByIds(ids),FIST5_USERS); + } } \ No newline at end of file diff --git a/services/mail-api/src/test/resources/wsdl/mailService.wsdl b/services/mail-api/src/test/resources/wsdl/mailService.wsdl deleted file mode 100644 index 09511ad..0000000 --- a/services/mail-api/src/test/resources/wsdl/mailService.wsdl +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/services/mail-service/src/main/webapp/WEB-INF/wsdl/mailService.wsdl b/services/mail-service/src/main/webapp/WEB-INF/wsdl/mailService.wsdl deleted file mode 100644 index 09511ad..0000000 --- a/services/mail-service/src/main/webapp/WEB-INF/wsdl/mailService.wsdl +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/services/mail-service/src/test/java/ru/javaops/masterjava/service/mail/MailServicePublisher.java b/services/mail-service/src/test/java/ru/javaops/masterjava/service/mail/MailServicePublisher.java index 1901d0f..1d053f4 100644 --- a/services/mail-service/src/test/java/ru/javaops/masterjava/service/mail/MailServicePublisher.java +++ b/services/mail-service/src/test/java/ru/javaops/masterjava/service/mail/MailServicePublisher.java @@ -6,7 +6,6 @@ import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.ws.Endpoint; -import java.io.File; import java.util.List; public class MailServicePublisher { @@ -16,9 +15,7 @@ public static void main(String[] args) { Endpoint endpoint = Endpoint.create(new MailServiceImpl()); List metadata = ImmutableList.of( - new StreamSource( - new File("services/mail-service/src/main/webapp/WEB-INF/wsdl/mailService.wsdl"))); - + new StreamSource(String.valueOf(ClassLoader.getSystemResource("wsdl/mailService.wsdl")))); endpoint.setMetadata(metadata); endpoint.publish("http://localhost:8080/mail/mailService"); } diff --git a/web/webapp/pom.xml b/web/webapp/pom.xml index de3a56f..489df99 100644 --- a/web/webapp/pom.xml +++ b/web/webapp/pom.xml @@ -26,5 +26,11 @@ persist ${project.version} + + ${project.groupId} + mail-api + ${project.version} + + \ No newline at end of file diff --git a/web/webapp/src/main/java/ru/javaops/masterjava/webapp/UsersServlet.java b/web/webapp/src/main/java/ru/javaops/masterjava/webapp/UsersServlet.java index 5b58712..0d14b66 100644 --- a/web/webapp/src/main/java/ru/javaops/masterjava/webapp/UsersServlet.java +++ b/web/webapp/src/main/java/ru/javaops/masterjava/webapp/UsersServlet.java @@ -1,9 +1,13 @@ package ru.javaops.masterjava.webapp; +import com.google.common.base.Splitter; import com.google.common.collect.ImmutableMap; import org.thymeleaf.context.WebContext; import ru.javaops.masterjava.persist.DBIProvider; import ru.javaops.masterjava.persist.dao.UserDao; +import ru.javaops.masterjava.persist.model.User; +import ru.javaops.masterjava.service.mail.Addressee; +import ru.javaops.masterjava.service.mail.MailWSClient; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -11,6 +15,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import static ru.javaops.masterjava.common.web.ThymeleafListener.engine; @@ -24,4 +31,17 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se ImmutableMap.of("users", userDao.getWithLimit(20))); engine.process("users", webContext, resp.getWriter()); } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + //super.doPost(req, resp); + //List ids = new ArrayList<>(); + List ids = req.getReader().lines() + .map(line -> Splitter.on(',').splitToList(line)) + .flatMap(list -> list.stream().map(Integer::valueOf)) + .collect(Collectors.toList()); + List users = userDao.getByIds(ids); + Set to = users.stream().map(u -> new Addressee(u.getEmail(), u.getFullName())).collect(Collectors.toSet()); + MailWSClient.sendMail(to, to, "testSubject", "testBody"); + } } diff --git a/web/webapp/src/main/webapp/WEB-INF/templates/users.html b/web/webapp/src/main/webapp/WEB-INF/templates/users.html index 3991c8d..57702eb 100644 --- a/web/webapp/src/main/webapp/WEB-INF/templates/users.html +++ b/web/webapp/src/main/webapp/WEB-INF/templates/users.html @@ -4,7 +4,8 @@ Users - + +
@@ -20,8 +21,24 @@ +
+ + + + + \ No newline at end of file