diff --git a/db.mv.db b/db.mv.db deleted file mode 100644 index fd9bf78..0000000 Binary files a/db.mv.db and /dev/null differ diff --git a/db/test.mv.db b/db/test.mv.db deleted file mode 100644 index a6b898e..0000000 Binary files a/db/test.mv.db and /dev/null differ diff --git a/db/test.trace.db b/db/test.trace.db deleted file mode 100644 index 2537d8b..0000000 --- a/db/test.trace.db +++ /dev/null @@ -1,484 +0,0 @@ -2018-04-25 05:15:39 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "ID" not found; SQL statement: -UPDATE ENSINO.SERIE SET NOME = 'Primeiro ano - 25/30' WHERE ID = 163 [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.expression.Comparison.optimize(Comparison.java:178) - at org.h2.command.dml.Update.prepare(Update.java:185) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:15:39 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "ID" not found; SQL statement: -UPDATE ENSINO.SERIE SET NOME = 'Quinto ano - 25/40' WHERE ID = 164 [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.expression.Comparison.optimize(Comparison.java:178) - at org.h2.command.dml.Update.prepare(Update.java:185) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:15:39 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement: -INSERT into ENSINO.SERIE values ("Segundo ano - 28/30") [21002-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.message.DbException.get(DbException.java:144) - at org.h2.command.dml.Insert.prepare(Insert.java:265) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:15:39 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement: -INSERT into ENSINO.SERIE values ("Terceiro ano - 27/35") [21002-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.message.DbException.get(DbException.java:144) - at org.h2.command.dml.Insert.prepare(Insert.java:265) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:15:39 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement: -INSERT into ENSINO.SERIE values ("Quarto ano - 18/35") [21002-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.message.DbException.get(DbException.java:144) - at org.h2.command.dml.Insert.prepare(Insert.java:265) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:16:35 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "ID" not found; SQL statement: -UPDATE ENSINO.SERIE SET NOME = 'Primeiro ano - 25/30' WHERE ID = 163 [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.expression.Comparison.optimize(Comparison.java:178) - at org.h2.command.dml.Update.prepare(Update.java:185) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:16:35 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "ID" not found; SQL statement: -UPDATE ENSINO.SERIE SET NOME = 'Quinto ano - 25/40' WHERE ID = 164 [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.expression.Comparison.optimize(Comparison.java:178) - at org.h2.command.dml.Update.prepare(Update.java:185) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:16:35 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "Segundo ano - 28/30" not found; SQL statement: -INSERT into ENSINO.SERIE values (165, "Segundo ano - 28/30") [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.command.dml.Insert.prepare(Insert.java:270) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:16:35 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "Terceiro ano - 27/35" not found; SQL statement: -INSERT into ENSINO.SERIE values (166, "Terceiro ano - 27/35") [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.command.dml.Insert.prepare(Insert.java:270) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -2018-04-25 05:16:35 jdbc[13]: exception -org.h2.jdbc.JdbcSQLException: Column "Quarto ano - 18/35" not found; SQL statement: -INSERT into ENSINO.SERIE values (167, "Quarto ano - 18/35") [42122-196] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) - at org.h2.message.DbException.get(DbException.java:179) - at org.h2.message.DbException.get(DbException.java:155) - at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147) - at org.h2.command.dml.Insert.prepare(Insert.java:270) - at org.h2.command.Parser.prepareCommand(Parser.java:263) - at org.h2.engine.Session.prepareLocal(Session.java:578) - at org.h2.engine.Session.prepareCommand(Session.java:519) - at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) - at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) - at org.h2.server.web.WebApp.getResult(WebApp.java:1380) - at org.h2.server.web.WebApp.query(WebApp.java:1053) - at org.h2.server.web.WebApp.query(WebApp.java:1029) - at org.h2.server.web.WebApp.process(WebApp.java:222) - at org.h2.server.web.WebApp.processRequest(WebApp.java:169) - at org.h2.server.web.WebServlet.doGet(WebServlet.java:125) - at org.h2.server.web.WebServlet.doPost(WebServlet.java:162) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) diff --git a/pom.xml b/pom.xml index 7ce0d29..18a4c0b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,29 +1,21 @@ - 4.0.0 - br.com.imd.cadeduc - cadeduc + br.com.imd.cadwork + cadwork 0.0.1-SNAPSHOT jar - cadeducapi - API de geocalização de escolas estaduais - org.springframework.boot spring-boot-starter-parent - 2.0.0.RELEASE + 2.0.2.RELEASE - - UTF-8 - UTF-8 - 1.8 - - @@ -38,13 +30,13 @@ - - - - com.google.code.gson - gson - - + + + + com.google.code.gson + gson + + @@ -69,13 +61,13 @@ io.springfox springfox-swagger2 - 2.7.0 + 2.8.0 io.springfox springfox-swagger-ui - 2.7.0 + 2.8.0 @@ -83,17 +75,47 @@ org.springframework.boot spring-boot-starter-thymeleaf + + + se.walkercrou + google-places-api-java + 2.1.2 + + + + + + org.springframework.boot + spring-boot-starter-test + test + 1.5.3.RELEASE + - org.springframework.boot - spring-boot-maven-plugin + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + false + + + + attach-javadocs + + jar + + + + - diff --git a/src/main/java/br/com/imd/cadeduc/CadeducapiApplication.java b/src/main/java/br/com/imd/cadeduc/CadeducapiApplication.java deleted file mode 100644 index 9486edc..0000000 --- a/src/main/java/br/com/imd/cadeduc/CadeducapiApplication.java +++ /dev/null @@ -1,16 +0,0 @@ -package br.com.imd.cadeduc; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@EnableSwagger2 -@SpringBootApplication -public class CadeducapiApplication { - - public static void main(String[] args) { - SpringApplication.run(CadeducapiApplication.class, args); - } -} - diff --git a/src/main/java/br/com/imd/cadeduc/core/config/DetalheError.java b/src/main/java/br/com/imd/cadeduc/core/config/DetalheError.java deleted file mode 100644 index c68209f..0000000 --- a/src/main/java/br/com/imd/cadeduc/core/config/DetalheError.java +++ /dev/null @@ -1,44 +0,0 @@ -package br.com.imd.cadeduc.core.config; - -import org.springframework.http.HttpStatus; - -public class DetalheError { - - private String titulo; - private HttpStatus status; - private Long timestamp; - private String mensagem; - - public String getTitulo() { - return titulo; - } - - public void setTitulo(String titulo) { - this.titulo = titulo; - } - - public HttpStatus getStatus() { - return status; - } - - public void setStatus(HttpStatus status) { - this.status = status; - } - - public Long getTimestamp() { - return timestamp; - } - - public void setTimestamp(Long timestamp) { - this.timestamp = timestamp; - } - - public String getMensagem() { - return mensagem; - } - - public void setMensagem(String mensagem) { - this.mensagem = mensagem; - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/core/dao/GerericDomainException.java b/src/main/java/br/com/imd/cadeduc/core/dao/GerericDomainException.java deleted file mode 100644 index 43cc1b2..0000000 --- a/src/main/java/br/com/imd/cadeduc/core/dao/GerericDomainException.java +++ /dev/null @@ -1,10 +0,0 @@ -package br.com.imd.cadeduc.core.dao; - -public class GerericDomainException extends Exception { - - private static final long serialVersionUID = 1L; - - public GerericDomainException(String message) { - super(message); - } -} diff --git a/src/main/java/br/com/imd/cadeduc/core/exception/ManipuladorException.java b/src/main/java/br/com/imd/cadeduc/core/exception/ManipuladorException.java deleted file mode 100644 index 7b00e51..0000000 --- a/src/main/java/br/com/imd/cadeduc/core/exception/ManipuladorException.java +++ /dev/null @@ -1,60 +0,0 @@ -package br.com.imd.cadeduc.core.exception; - -import javax.servlet.http.HttpServletRequest; - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; - -import br.com.imd.cadeduc.core.config.DetalheError; -import br.com.imd.cadeduc.core.config.ResponseMessagesConfig; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceConflictException; -import br.com.imd.cadeduc.core.service.exception.ResourceEmptyException; -import br.com.imd.cadeduc.core.service.exception.ResourceNotFoundException; - -@ControllerAdvice -public class ManipuladorException { - - @ExceptionHandler(ResourceEmptyException.class) - public ResponseEntity manipuladorResourceEmptyException(GenericServiceException e, - HttpServletRequest request) { - - DetalheError error = gerarMensagemError(HttpStatus.NOT_ACCEPTABLE, e); - - return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).body(error); - } - - @ExceptionHandler(ResourceNotFoundException.class) - public ResponseEntity manipuladorResourceNotFoundException(GenericServiceException e, - HttpServletRequest request) { - - DetalheError error = gerarMensagemError(HttpStatus.NOT_FOUND, e); - - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error); - } - - @ExceptionHandler(ResourceConflictException.class) - public ResponseEntity manipuladorResourceConflictException(GenericServiceException e, - HttpServletRequest request) { - - DetalheError error = gerarMensagemError(HttpStatus.CONFLICT, e); - - return ResponseEntity.status(HttpStatus.CONFLICT).body(error); - } - - private DetalheError gerarMensagemError(HttpStatus status, GenericServiceException e) { - DetalheError error = new DetalheError(); - - error.setStatus(status); - error.setTitulo(ResponseMessagesConfig.getInstance().getMensagens() - .get(status.ordinal()).getMessage()); - - error.setTimestamp(System.currentTimeMillis()); - error.setMensagem(e.getMessage().replaceAll("\"", "")); - - return error; - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/core/service/GenericService.java b/src/main/java/br/com/imd/cadeduc/core/service/GenericService.java deleted file mode 100644 index a0f5382..0000000 --- a/src/main/java/br/com/imd/cadeduc/core/service/GenericService.java +++ /dev/null @@ -1,59 +0,0 @@ -package br.com.imd.cadeduc.core.service; - -import java.util.List; -import java.util.Optional; - -import org.springframework.stereotype.Service; -import org.springframework.validation.BindingResult; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceEmptyException; -import br.com.imd.cadeduc.core.service.exception.ResourceNotFoundException; -import br.com.imd.cadeduc.util.ValidatorUtil; - -@Service -public abstract class GenericService { - - protected GenericDAO dao; - - protected List listar() throws GenericServiceException { - List entidades = dao.findAll(); - - if (entidades.isEmpty()) { - throw new ResourceNotFoundException(); - } - - return entidades; - } - - protected void salvar(T t, BindingResult resultado) throws GenericServiceException { - - if (resultado.hasErrors()) { - throw new ResourceEmptyException(ValidatorUtil.gerarErrorsInJson(resultado.getAllErrors())); - } - verificaExistencia(t); - try { - - dao.save(t); - - } catch (Exception e) { - throw new GenericServiceException(e.getMessage()); - } - - } - - protected Optional buscar(Long id) throws GenericServiceException { - - Optional entidade = dao.findById(id); - - if (!entidade.isPresent()) { - throw new ResourceNotFoundException(); - } - return entidade; - } - - protected abstract void setDao(GenericDAO dao); - protected abstract void verificaExistencia(T t) throws GenericServiceException; - -} diff --git a/src/main/java/br/com/imd/cadeduc/core/service/exception/GenericServiceException.java b/src/main/java/br/com/imd/cadeduc/core/service/exception/GenericServiceException.java deleted file mode 100644 index fd5899a..0000000 --- a/src/main/java/br/com/imd/cadeduc/core/service/exception/GenericServiceException.java +++ /dev/null @@ -1,10 +0,0 @@ -package br.com.imd.cadeduc.core.service.exception; - -public class GenericServiceException extends Exception { - private static final long serialVersionUID = 1L; - - public GenericServiceException(String message) { - super(message); - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/dao/EtapaEnsinoDAO.java b/src/main/java/br/com/imd/cadeduc/ensino/dao/EtapaEnsinoDAO.java deleted file mode 100644 index 6646cec..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/dao/EtapaEnsinoDAO.java +++ /dev/null @@ -1,15 +0,0 @@ -package br.com.imd.cadeduc.ensino.dao; - -import java.util.Optional; - -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.ensino.domain.EtapaEnsino; - -@Repository -public interface EtapaEnsinoDAO extends GenericDAO { - - public Optional findEtapaEnsinoByNome(@Param("nome") String nome); -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/dao/SerieDAO.java b/src/main/java/br/com/imd/cadeduc/ensino/dao/SerieDAO.java deleted file mode 100644 index 089e071..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/dao/SerieDAO.java +++ /dev/null @@ -1,15 +0,0 @@ -package br.com.imd.cadeduc.ensino.dao; - -import java.util.Optional; - -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.ensino.domain.Serie; - -@Repository -public interface SerieDAO extends GenericDAO { - - Optional findSerieByNome(@Param("nome") String nome); -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/domain/EtapaEnsino.java b/src/main/java/br/com/imd/cadeduc/ensino/domain/EtapaEnsino.java deleted file mode 100644 index 9bb2c30..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/domain/EtapaEnsino.java +++ /dev/null @@ -1,167 +0,0 @@ -package br.com.imd.cadeduc.ensino.domain; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * Classe que define o modelo etapa de ensino - * - * @author Miguel - * @version 0.2 - * - */ - -@Entity -@Table(name = "etapa_ensino", schema = "ensino") -@ApiModel -public class EtapaEnsino { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id_etapa_ensino") - @ApiModelProperty(hidden = true, notes = "ID gerado automaticamente pela base de dados") - private Long id; - - @NotNull - @ApiModelProperty(notes = "Nome da Etapa de Ensino", required = true) - private String nome; - - @NotNull - @Column(name = "vagas_disponiveis") - @ApiModelProperty(notes = "Quantidade de vagas disponíveis", required = true) - private int vagasDisponiveis; - - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @ApiModelProperty(notes = "séries da etapa de ensino") - private List series; - - @NotNull - @Column(name = "tipo_etapa_ensino") - @Enumerated(EnumType.STRING) - @ApiModelProperty(notes = "Tipo da etapa de ensino", required = true) - private TipoEtapaEnsinoEnum tipoEtapaEnsino; - - public EtapaEnsino() { - id = new Long(0); - } - - /** - * Método para retorno do id de uma instância de Etapa de Ensino - * - * @return Long - Valor do id - */ - - public Long getId() { - return id; - } - - /** - * Altera o valor do id de uma instância de Etapa de Ensino - * - * @param id - * Long - Novo valor do id - */ - - public void setId(Long id) { - this.id = id; - } - - /** - * Retorna o nome da etapa de ensino - * - * @return String - Nome da etapa de ensino - */ - - public String getNome() { - return nome; - } - - /** - * Altera o nome da etapa de ensino - * - * @param nome - * String - Novo nome da etapa de ensino - */ - - public void setNome(String nome) { - this.nome = nome; - } - - /** - * Retorna o número de vagas disponíveis - * - * @return int - Número de vagas - */ - public int getVagasDisponiveis() { - return vagasDisponiveis; - } - - /** - * Método que atualiza o número de vagas disponíveis - * - * @param vagasDisponiveis - * int - Novo número de vagas disponíveis - */ - - public void setVagasDisponiveis(int vagasDisponiveis) { - this.vagasDisponiveis = vagasDisponiveis; - } - - /** - * Método para retorno do tipo da etapa de ensino - * - * @return TipoEtapaEnsinoEnum - Etapa de ensino - */ - - public TipoEtapaEnsinoEnum getTipoEtapaEnsino() { - return tipoEtapaEnsino; - } - - /** - * Altera a etapa de ensino da instância - * - * @param tipoEtapaEnsino - * TipoEtapaEnsinoEnum - Etapa de ensino para ser atualizada - */ - - public void setTipoEtapaEnsino(TipoEtapaEnsinoEnum tipoEtapaEnsino) { - this.tipoEtapaEnsino = tipoEtapaEnsino; - } - - /** - * Método para retorno da lista de séries da etapa de ensino - * - * @return List - Retorna a lista de séries atual - */ - - public List getSeries() { - return series; - } - - /** - * Atualiza a lista de séries - * - * @param series - * List - Lista de séries a ser atualizada - */ - - public void setSeries(List series) { - this.series = series; - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/domain/Serie.java b/src/main/java/br/com/imd/cadeduc/ensino/domain/Serie.java deleted file mode 100644 index 0c59d6a..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/domain/Serie.java +++ /dev/null @@ -1,94 +0,0 @@ -package br.com.imd.cadeduc.ensino.domain; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToMany; -import javax.persistence.Table; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -import br.com.imd.cadeduc.escola.domain.Escola; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * - * Classe que define o modelo de série - * - * @author Miguel - * @version 0.3 - */ - -@Entity -@Table(name = "serie", schema = "ensino") -@ApiModel -public class Serie { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id_serie") - @ApiModelProperty(hidden = true, notes = "ID gerado automaticamente pela base de dados") - private Long id; - - @NotBlank(message = "Campo em branco") - @NotNull(message = "Campo nulo") - @Column(name = "nome") - @ApiModelProperty(notes = "Nome da série", required = true) - private String nome; - - @ManyToMany(mappedBy = "series", cascade = CascadeType.ALL) - @ApiModelProperty(notes = "Escolas em que a série é disponibilizada") - private List escolas; - - public Serie() { - id = new Long(0); - } - - /** - * Método para retorno do id de uma instância de Serie - * - * @return Long - Valor do id - */ - - public Long getId() { - return id; - } - - /** - * Altera o valor do id de uma instância de Serie - * - * @param id - * Long - Novo valor do id - */ - - public void setId(Long id) { - this.id = id; - } - - /** - * Retorna o nome da série - * - * @return String - nome da série - */ - - public String getNome() { - return nome; - } - - /** - * Modifica o nome da série - * - * @param nome - * String - novo nome da série - */ - public void setNome(String nome) { - this.nome = nome; - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/domain/TipoEtapaEnsinoEnum.java b/src/main/java/br/com/imd/cadeduc/ensino/domain/TipoEtapaEnsinoEnum.java deleted file mode 100644 index 6fba864..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/domain/TipoEtapaEnsinoEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package br.com.imd.cadeduc.ensino.domain; - -import io.swagger.annotations.ApiModel; - -/** - * - * Enumeração dos possíveis tipos de etapa de ensino - * - * @author Miguel - * @version 0.2 - * - */ - -@ApiModel -public enum TipoEtapaEnsinoEnum { - /** - * ENSINO_FUNDAMENTAL - 1 - * ENSINO_MEDIO - 2 - * ENSINO_FUNDAMENTAL_EJA - 3 - * ENSINO_MEDIO_EJA - 4 - */ - ENSINO_FUNDAMENTAL, - ENSINO_MEDIO, - ENSINO_FUNDAMENTAL_EJA, - ENSINO_MEDIO_EJA, - -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/resources/EtapaEnsinoResources.java b/src/main/java/br/com/imd/cadeduc/ensino/resources/EtapaEnsinoResources.java deleted file mode 100644 index b404539..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/resources/EtapaEnsinoResources.java +++ /dev/null @@ -1,58 +0,0 @@ -package br.com.imd.cadeduc.ensino.resources; - -import java.net.URI; -import java.util.List; -import java.util.Optional; - -import javax.validation.Valid; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.ensino.domain.EtapaEnsino; -import br.com.imd.cadeduc.ensino.service.EtapaEnsinoService; -import io.swagger.annotations.Api; - -@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) -@RestController -@RequestMapping(value = "/etapasEnsino", produces = "application/json") -@Api(tags = "Etapas de Ensino", description = "Operações pertinentes a etapas de ensino") -public class EtapaEnsinoResources { - - @Autowired - EtapaEnsinoService etapaEnsinoService; - - @RequestMapping(method = RequestMethod.GET) - public ResponseEntity> listar() throws GenericServiceException { - return new ResponseEntity<>(etapaEnsinoService.listar(), HttpStatus.OK); - } - - @RequestMapping(method = RequestMethod.POST) - public ResponseEntity salvar(@Valid @RequestBody EtapaEnsino etapaEnsino, BindingResult resultado) throws GenericServiceException { - - etapaEnsinoService.salvar(etapaEnsino, resultado); - - URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(etapaEnsino.getId()) - .toUri(); - - return ResponseEntity.created(uri).build(); - - } - - @RequestMapping(value = "/{id}", method = RequestMethod.GET) - public @ResponseBody ResponseEntity> buscar(@PathVariable("id") Long id) - throws GenericServiceException { - return new ResponseEntity<>(etapaEnsinoService.buscar(id), HttpStatus.OK); - } -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/resources/SerieResources.java b/src/main/java/br/com/imd/cadeduc/ensino/resources/SerieResources.java deleted file mode 100644 index 93e7a59..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/resources/SerieResources.java +++ /dev/null @@ -1,57 +0,0 @@ -package br.com.imd.cadeduc.ensino.resources; - -import java.net.URI; -import java.util.List; -import java.util.Optional; - -import javax.validation.Valid; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.ensino.domain.Serie; -import br.com.imd.cadeduc.ensino.service.SerieService; -import io.swagger.annotations.Api; - -@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) -@RestController -@RequestMapping(value = "/series", produces = "application/json") -@Api(tags = "Séries", value = "onlinestore", description = "Operações pertinentes a séries") -public class SerieResources { - - @Autowired - SerieService serieService; - - @RequestMapping(method = RequestMethod.GET) - public ResponseEntity> listar() throws GenericServiceException { - - return new ResponseEntity<>(serieService.listar(), HttpStatus.OK); - - } - - @RequestMapping(method = RequestMethod.POST) - public ResponseEntity salvar(@Valid @RequestBody Serie serie, BindingResult resultado) throws GenericServiceException { - serieService.salvar(serie, resultado); - - URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(serie.getId()).toUri(); - - return ResponseEntity.created(uri).build(); - } - - @RequestMapping(value = "/{id}", method = RequestMethod.GET) - public @ResponseBody ResponseEntity> buscar(@PathVariable("id") Long id) - throws GenericServiceException { - return new ResponseEntity<>(serieService.buscar(id), HttpStatus.OK); - } -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/service/EtapaEnsinoService.java b/src/main/java/br/com/imd/cadeduc/ensino/service/EtapaEnsinoService.java deleted file mode 100644 index c3dcb11..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/service/EtapaEnsinoService.java +++ /dev/null @@ -1,47 +0,0 @@ -package br.com.imd.cadeduc.ensino.service; - -import java.util.List; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.validation.BindingResult; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.core.service.GenericService; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceConflictException; -import br.com.imd.cadeduc.ensino.dao.EtapaEnsinoDAO; -import br.com.imd.cadeduc.ensino.domain.EtapaEnsino; - -@Component -public class EtapaEnsinoService extends GenericService { - - @Override - public List listar() throws GenericServiceException { - return super.listar(); - } - - @Override - public void salvar(EtapaEnsino etapaEnsino, BindingResult resultado) throws GenericServiceException { - super.salvar(etapaEnsino, resultado); - } - - @Override - public Optional buscar(Long id) throws GenericServiceException { - return super.buscar(id); - } - - @Autowired - public void setDao(GenericDAO dao) { - super.dao = dao; - } - - @Override - protected void verificaExistencia(EtapaEnsino etapaEnsino) throws GenericServiceException { - Optional etapaCadastrada = ((EtapaEnsinoDAO) dao).findEtapaEnsinoByNome(etapaEnsino.getNome()); - if (etapaEnsino.getId() != 0 || etapaCadastrada.isPresent()) { - throw new ResourceConflictException(); - } - } -} diff --git a/src/main/java/br/com/imd/cadeduc/ensino/service/SerieService.java b/src/main/java/br/com/imd/cadeduc/ensino/service/SerieService.java deleted file mode 100644 index 0097300..0000000 --- a/src/main/java/br/com/imd/cadeduc/ensino/service/SerieService.java +++ /dev/null @@ -1,48 +0,0 @@ -package br.com.imd.cadeduc.ensino.service; - -import java.util.List; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.validation.BindingResult; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.core.service.GenericService; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceConflictException; -import br.com.imd.cadeduc.ensino.dao.SerieDAO; -import br.com.imd.cadeduc.ensino.domain.Serie; - -@Component -public class SerieService extends GenericService { - - @Override - public List listar() throws GenericServiceException { - return super.listar(); - } - - @Override - public void salvar(Serie serie, BindingResult resultado) throws GenericServiceException { - super.salvar(serie, resultado); - } - - @Override - public Optional buscar(Long id) throws GenericServiceException { - return super.buscar(id); - } - - - @Autowired - public void setDao(GenericDAO dao) { - super.dao = dao; - } - - @Override - protected void verificaExistencia(Serie serie) throws GenericServiceException { - Optional serieCadastrada = ((SerieDAO) dao).findSerieByNome(serie.getNome()); - if(serie.getId()!=0 || serieCadastrada.isPresent()) { - throw new ResourceConflictException(); - } - } -} diff --git a/src/main/java/br/com/imd/cadeduc/escola/dao/EscolaDAO.java b/src/main/java/br/com/imd/cadeduc/escola/dao/EscolaDAO.java deleted file mode 100644 index a993c0d..0000000 --- a/src/main/java/br/com/imd/cadeduc/escola/dao/EscolaDAO.java +++ /dev/null @@ -1,17 +0,0 @@ -package br.com.imd.cadeduc.escola.dao; - -import java.util.Optional; - -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.escola.domain.Escola; - -@Repository -public interface EscolaDAO extends GenericDAO { - - @Query("SELECT e FROM Escola e WHERE e.endereco.id = :idEndereco") - public Optional findEscolaByEndereco(@Param("idEndereco") Long idEndereco); -} diff --git a/src/main/java/br/com/imd/cadeduc/escola/domain/Escola.java b/src/main/java/br/com/imd/cadeduc/escola/domain/Escola.java deleted file mode 100644 index 1d3d36e..0000000 --- a/src/main/java/br/com/imd/cadeduc/escola/domain/Escola.java +++ /dev/null @@ -1,163 +0,0 @@ -package br.com.imd.cadeduc.escola.domain; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToMany; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -import br.com.imd.cadeduc.ensino.domain.Serie; -import br.com.imd.cadeduc.localizacao.domain.Endereco; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * - * Classe que define o modelo Escola - * - * @author Miguel - * @version 0.3 - * - */ - -@Entity -@Table(name = "escola", schema = "escola") -@ApiModel -public class Escola { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id_escola") - @ApiModelProperty(hidden = true, notes = "ID gerado automaticamente pela base de dados") - private Long id; - - @NotBlank(message = "Campo em branco") - @NotNull(message = "Campo nulo") - @ApiModelProperty(notes = "Nome da instituição", required = true) - private String nome; - - @ApiModelProperty(notes = "Telefone da instituição") - private String telefone; - - @NotNull(message = "Campo nulo") - @OneToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "id_endereco") - @ApiModelProperty(notes = "Endereço da Instituição", required = true) - private Endereco endereco; - - @ManyToMany(fetch = FetchType.EAGER) - @JoinColumn(name = "id_serie") - @ApiModelProperty(notes = "Séries da instituição") - private List series; - - public Escola() { - id = new Long(0); - } - - /** - * Método para retorno do id de uma instância de Escola - * - * @return Long - Valor do id - */ - public Long getId() { - return id; - } - - /** - * Altera o valor do id de uma instância de Escola - * - * @param id - * Long - Novo valor do id - */ - - public void setId(Long id) { - this.id = id; - } - - /** - * Método que retorna o nome da escola - * - * @return String - Nome da escola - */ - public String getNome() { - return nome; - } - - /** - * Método que modifica o nome da escola - * - * @param nome - * String - Novo nome da escola - */ - public void setNome(String nome) { - this.nome = nome; - } - - /** - * Retorna o endereço da escola - * - * @return Endereco - Endereço da escola - */ - public Endereco getEndereco() { - return endereco; - } - - /** - * Altera o endereço de uma instância de Escola - * - * @param endereco - * Endereco - Novo endereço - */ - public void setEndereco(Endereco endereco) { - this.endereco = endereco; - } - - /** - * Método para retorno o telefone da escola - * - * @return String - Telefone da escola - */ - public String getTelefone() { - return telefone; - } - - /** - * Altera o telefone de uma instância de Escola - * - * @param telefone - * String - Novo Telefone - */ - public void setTelefone(String telefone) { - this.telefone = telefone; - } - - /** - * Método para retornar as séries de uma escola - * - * @return List series da escola - */ - public List getSeries() { - return series; - } - - /** - * Altera as séries de uma instância de Escola - * - * @param series - * String - Novo Telefone - */ - public void setSeries(List series) { - this.series = series; - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/escola/resources/EscolaReportController.java b/src/main/java/br/com/imd/cadeduc/escola/resources/EscolaReportController.java deleted file mode 100644 index 31f4a9d..0000000 --- a/src/main/java/br/com/imd/cadeduc/escola/resources/EscolaReportController.java +++ /dev/null @@ -1,40 +0,0 @@ -package br.com.imd.cadeduc.escola.resources; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; - -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.escola.service.EscolaService; - -@Controller -@RequestMapping("/reports") -public class EscolaReportController { - - @Autowired - EscolaService escolaService; - - public EscolaReportController(EscolaService escolaService) { - this.escolaService = escolaService; - } - - - @GetMapping("/html") - public String html(@RequestParam(required = false, value = "escola") Long id, Model model) throws GenericServiceException { - - model.addAttribute("escolas", this.escolaService.listar()); - - if (id == null) { - return "report/index"; - } - - model.addAttribute("atribute", this.escolaService.buscar(id).get().getSeries()); - - return "report/index"; - - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/escola/resources/EscolaResources.java b/src/main/java/br/com/imd/cadeduc/escola/resources/EscolaResources.java deleted file mode 100644 index c0172ab..0000000 --- a/src/main/java/br/com/imd/cadeduc/escola/resources/EscolaResources.java +++ /dev/null @@ -1,54 +0,0 @@ -package br.com.imd.cadeduc.escola.resources; - -import java.net.URI; -import java.util.List; -import java.util.Optional; - -import javax.validation.Valid; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.escola.domain.Escola; -import br.com.imd.cadeduc.escola.service.EscolaService; -import io.swagger.annotations.Api; - -@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) -@RestController -@RequestMapping(value = "/escolas", produces = "application/json") -@Api(tags = "Escolas", description = "Operações pertinentes a escolas") -public class EscolaResources { - - @Autowired - EscolaService escolaService; - - @RequestMapping(method = RequestMethod.GET) - public List listar() throws GenericServiceException { - return escolaService.listar(); - - } - - @RequestMapping(method = RequestMethod.POST) - public ResponseEntity salvar(@Valid @RequestBody Escola escola, BindingResult resultado) throws GenericServiceException { - - escolaService.salvar(escola, resultado); - - URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(escola.getId()).toUri(); - - return ResponseEntity.created(uri).build(); - } - - @RequestMapping(value = "/{id}", method = RequestMethod.GET) - public Optional buscar(@PathVariable("id") Long id) throws GenericServiceException { - return escolaService.buscar(id); - } -} diff --git a/src/main/java/br/com/imd/cadeduc/escola/service/EscolaService.java b/src/main/java/br/com/imd/cadeduc/escola/service/EscolaService.java deleted file mode 100644 index 9723c47..0000000 --- a/src/main/java/br/com/imd/cadeduc/escola/service/EscolaService.java +++ /dev/null @@ -1,47 +0,0 @@ -package br.com.imd.cadeduc.escola.service; - -import java.util.List; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.validation.BindingResult; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.core.service.GenericService; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceConflictException; -import br.com.imd.cadeduc.escola.dao.EscolaDAO; -import br.com.imd.cadeduc.escola.domain.Escola; - -@Component -public class EscolaService extends GenericService { - - @Override - public List listar() throws GenericServiceException { - return super.listar(); - } - - @Override - public void salvar(Escola escola, BindingResult resultado) throws GenericServiceException { - super.salvar(escola, resultado); - } - - @Override - public Optional buscar(Long id) throws GenericServiceException { - return super.buscar(id); - } - - @Autowired - public void setDao(GenericDAO dao) { - super.dao = dao; - } - - @Override - protected void verificaExistencia(Escola escola) throws GenericServiceException { - Optional escolaCadastrada = ((EscolaDAO) dao).findEscolaByEndereco(escola.getEndereco().getId()); - if (escola.getId() != 0 || escolaCadastrada.isPresent()) { - throw new ResourceConflictException(); - } - } -} diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/dao/EnderecoDAO.java b/src/main/java/br/com/imd/cadeduc/localizacao/dao/EnderecoDAO.java deleted file mode 100644 index 2d3bbb3..0000000 --- a/src/main/java/br/com/imd/cadeduc/localizacao/dao/EnderecoDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package br.com.imd.cadeduc.localizacao.dao; - -import java.util.Optional; - -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.localizacao.domain.Endereco; - -@Repository -public interface EnderecoDAO extends GenericDAO { - - public Optional findEnderecoByLatitudeAndLongitude(@Param("latitude") double latitude, - @Param("longitude") double longitude); -} diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/dao/MunicipioDAO.java b/src/main/java/br/com/imd/cadeduc/localizacao/dao/MunicipioDAO.java deleted file mode 100644 index 06be7e8..0000000 --- a/src/main/java/br/com/imd/cadeduc/localizacao/dao/MunicipioDAO.java +++ /dev/null @@ -1,18 +0,0 @@ -package br.com.imd.cadeduc.localizacao.dao; - -import java.util.Optional; - -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.localizacao.domain.Municipio; - -@Repository -public interface MunicipioDAO extends GenericDAO { - - @Query(value="SELECT * FROM localizacao.municipio m WHERE m.nome = :nome and m.estado = :#{#estado} LIMIT 1", nativeQuery = true) - Optional findTop1MunicipioByNomeAndEstado(@Param("nome")String nome, @Param("estado") String estado); - -} diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/service/EnderecoService.java b/src/main/java/br/com/imd/cadeduc/localizacao/service/EnderecoService.java deleted file mode 100644 index 7176f44..0000000 --- a/src/main/java/br/com/imd/cadeduc/localizacao/service/EnderecoService.java +++ /dev/null @@ -1,50 +0,0 @@ -package br.com.imd.cadeduc.localizacao.service; - -import java.util.List; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.validation.BindingResult; - -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.core.service.GenericService; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceConflictException; -import br.com.imd.cadeduc.localizacao.dao.EnderecoDAO; -import br.com.imd.cadeduc.localizacao.domain.Endereco; - -@Component -public class EnderecoService extends GenericService { - - @Override - public List listar() throws GenericServiceException { - return super.listar(); - } - - @Override - public void salvar(Endereco endereco, BindingResult resultado) throws GenericServiceException { - super.salvar(endereco, resultado); - } - - @Override - public Optional buscar(Long id) throws GenericServiceException { - return super.buscar(id); - } - - @Autowired - public void setDao(GenericDAO dao) { - super.dao = dao; - } - - @Override - protected void verificaExistencia(Endereco endereco) throws GenericServiceException { - Optional enderecoCadastrado = ((EnderecoDAO) dao) - .findEnderecoByLatitudeAndLongitude(endereco.getLatitude(), endereco.getLongitude()); - - if(endereco.getId()!=0 || enderecoCadastrado.isPresent()) { - throw new ResourceConflictException(); - } - } - -} diff --git a/src/main/java/br/com/imd/cadeduc/util/ValidatorUtil.java b/src/main/java/br/com/imd/cadeduc/util/ValidatorUtil.java deleted file mode 100644 index 65d08c3..0000000 --- a/src/main/java/br/com/imd/cadeduc/util/ValidatorUtil.java +++ /dev/null @@ -1,34 +0,0 @@ -package br.com.imd.cadeduc.util; - -import java.util.List; - -import org.springframework.validation.FieldError; -import org.springframework.validation.ObjectError; - -import com.google.gson.Gson; - -public class ValidatorUtil { - - public static String gerarErrorsInJson(List allErrors) { - - StringBuilder message = new StringBuilder(); - message.append("{Errors:["); - for (ObjectError error : allErrors) { - message.append("{"); - message.append(((FieldError) error).getField().concat(": "+ error.getDefaultMessage())); - message.append("}"); - message.append(","); - } - message.append("]"); - - String errors = message.toString().replace("},]", "}]}"); - - return new Gson().toJson(errors); - } - - public static boolean isEmpty(Object o) { - //Validar de forma genérica quando um objeto está ou não válido - return true; - } - -} diff --git a/src/main/java/br/com/imd/cadwork/CadworkapiApplication.java b/src/main/java/br/com/imd/cadwork/CadworkapiApplication.java new file mode 100644 index 0000000..32f2f5e --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/CadworkapiApplication.java @@ -0,0 +1,15 @@ +package br.com.imd.cadwork; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import springfox.documentation.swagger2.annotations.EnableSwagger2; +/** + * Classe para inicializar aplicação + * @author Welligton Miguel + * @version 0.1 + */ +@EnableSwagger2 +@SpringBootApplication +public class CadworkapiApplication { +} + diff --git a/src/main/java/br/com/imd/cadwork/core/config/DetalheError.java b/src/main/java/br/com/imd/cadwork/core/config/DetalheError.java new file mode 100644 index 0000000..612e3e6 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/config/DetalheError.java @@ -0,0 +1,83 @@ +package br.com.imd.cadwork.core.config; + +import org.springframework.http.HttpStatus; +/** + * Classe modelo das respostas aos errors e seus detalhes + * @author Welligton Miguel + * @version 0.1 + */ + +public class DetalheError { + + private String titulo; + private HttpStatus status; + private Long timestamp; + private String mensagem; + + /** + * Método que retorna o titulo do error + * @return String - titulo do error + */ + + public String getTitulo() { + return titulo; + } + + /** + * Altera titulo do error + * @param titulo String - novo título + */ + + public void setTitulo(String titulo) { + this.titulo = titulo; + } + + /** + * Método que retorna o status do error + * @return HttpStatus - status do error + */ + + public HttpStatus getStatus() { + return status; + } + + /** + * Método que altera o status do error + * @param status HttpStatus - novo status do error + */ + + public void setStatus(HttpStatus status) { + this.status = status; + } + /** + * Método que o retorna o time stamp do error + * @return Long - time stamp do error + */ + + public Long getTimestamp() { + return timestamp; + } + /** + * Método que altera o time stamp do error + * @param timestamp Long - novo time stamp + */ + public void setTimestamp(Long timestamp) { + this.timestamp = timestamp; + } + /** + * Método que retorna a mensagem do error + * @return String - mensagem do error + */ + + public String getMensagem() { + return mensagem; + } + /** + * Método que altera a mensagem do error + * @param mensagem String - nova mensagem do error + */ + public void setMensagem(String mensagem) { + this.mensagem = mensagem; + } + +} diff --git a/src/main/java/br/com/imd/cadeduc/core/config/ResponseMessagesConfig.java b/src/main/java/br/com/imd/cadwork/core/config/ResponseMessagesConfig.java similarity index 96% rename from src/main/java/br/com/imd/cadeduc/core/config/ResponseMessagesConfig.java rename to src/main/java/br/com/imd/cadwork/core/config/ResponseMessagesConfig.java index a7adb93..6f24bee 100644 --- a/src/main/java/br/com/imd/cadeduc/core/config/ResponseMessagesConfig.java +++ b/src/main/java/br/com/imd/cadwork/core/config/ResponseMessagesConfig.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.core.config; +package br.com.imd.cadwork.core.config; import static com.google.common.collect.Lists.newArrayList; @@ -24,7 +24,9 @@ public class ResponseMessagesConfig { private static ResponseMessagesConfig instancia; private static Map mensagens; - + /** + * Procedimento de inicialização das mensagens padrões + */ private ResponseMessagesConfig() { mensagens = new HashMap<>(); mensagensPadroes(); diff --git a/src/main/java/br/com/imd/cadeduc/core/config/SwaggerConfig.java b/src/main/java/br/com/imd/cadwork/core/config/SwaggerConfig.java similarity index 72% rename from src/main/java/br/com/imd/cadeduc/core/config/SwaggerConfig.java rename to src/main/java/br/com/imd/cadwork/core/config/SwaggerConfig.java index 69237f0..9162ac2 100644 --- a/src/main/java/br/com/imd/cadeduc/core/config/SwaggerConfig.java +++ b/src/main/java/br/com/imd/cadwork/core/config/SwaggerConfig.java @@ -1,6 +1,4 @@ -package br.com.imd.cadeduc.core.config; - - +package br.com.imd.cadwork.core.config; import java.time.LocalDate; import java.util.Collections; @@ -9,8 +7,8 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import springfox.documentation.builders.PathSelectors; @@ -22,7 +20,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; /** - * Classe qe define as configurações da documentação Swagger + * Classe que define as configurações da documentação Swagger * * @author miguel * @version 0.2 @@ -34,23 +32,19 @@ public class SwaggerConfig extends WebMvcConfigurationSupport{ /** * Função central que constroi a documentação - * @return + * @return Docket */ @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() - .apis(RequestHandlerSelectors.basePackage("br.com.imd.cadeduc")) + .apis(RequestHandlerSelectors.basePackage("br.com.imd")) .paths(PathSelectors.any()) .build() .pathMapping("/") .directModelSubstitute(LocalDate.class, String.class) .genericModelSubstitutes(ResponseEntity.class) - .useDefaultResponseMessages(false) - .globalResponseMessage(RequestMethod.GET, - ResponseMessagesConfig.getInstance().listaMensagens()) - .globalResponseMessage(RequestMethod.POST, - ResponseMessagesConfig.getInstance().listaMensagens()) + .useDefaultResponseMessages(true) .apiInfo(metaData()); } @@ -61,11 +55,11 @@ public Docket api() { */ private ApiInfo metaData() { ApiInfo apiInfo = new ApiInfo( - "CADEduc", - "Spring Boot REST API para Geocalização de escolas", + "CADWork", + "Spring Boot REST API para Geocalização de recursos", "1.0", "Termos e Serviço", - new Contact("CADEduc", "https://cadeduc.imd.com.br/about/", "miguelwelligton@gmail.com"), + new Contact("CADEduc", "https://cadwork.imd.com.br/about/", "miguelwelligton@gmail.com"), "GNU General Public License 3.0", "https://www.gnu.org/licenses/gpl.txt", Collections.emptyList()); return apiInfo; @@ -83,5 +77,13 @@ protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addRedirectViewController("/null/v2/api-docs", "/v2/api-docs"); + registry.addRedirectViewController("/null/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui"); + registry.addRedirectViewController("/null/swagger-resources/configuration/security", "/swagger-resources/configuration/security"); + registry.addRedirectViewController("/null/swagger-resources", "/swagger-resources"); + } } \ No newline at end of file diff --git a/src/main/java/br/com/imd/cadeduc/core/dao/GenericDAO.java b/src/main/java/br/com/imd/cadwork/core/dao/GenericDAO.java similarity index 55% rename from src/main/java/br/com/imd/cadeduc/core/dao/GenericDAO.java rename to src/main/java/br/com/imd/cadwork/core/dao/GenericDAO.java index 18b5b33..8c80633 100644 --- a/src/main/java/br/com/imd/cadeduc/core/dao/GenericDAO.java +++ b/src/main/java/br/com/imd/cadwork/core/dao/GenericDAO.java @@ -1,8 +1,13 @@ -package br.com.imd.cadeduc.core.dao; +package br.com.imd.cadwork.core.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.NoRepositoryBean; - +/** + * Interface para criação de DAO no sistema + * @author Welligton Miguel + * + * @param - Classe modelo para criar o DAO + */ @NoRepositoryBean public interface GenericDAO extends JpaRepository { diff --git a/src/main/java/br/com/imd/cadwork/core/dao/GenericDomainException.java b/src/main/java/br/com/imd/cadwork/core/dao/GenericDomainException.java new file mode 100644 index 0000000..2d977aa --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/dao/GenericDomainException.java @@ -0,0 +1,19 @@ +package br.com.imd.cadwork.core.dao; + + +/** + * Classe de excessões padrões + * @author Welligton Miguel + * + */ +public class GenericDomainException extends Exception { + + private static final long serialVersionUID = 1L; + /** + * Construtor da classe + * @param message String - mensagem para repassar para Exception + */ + public GenericDomainException(String message) { + super(message); + } +} diff --git a/src/main/java/br/com/imd/cadwork/core/exception/ManipuladorException.java b/src/main/java/br/com/imd/cadwork/core/exception/ManipuladorException.java new file mode 100644 index 0000000..66226ba --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/exception/ManipuladorException.java @@ -0,0 +1,108 @@ +package br.com.imd.cadwork.core.exception; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +import br.com.imd.cadwork.core.config.DetalheError; +import br.com.imd.cadwork.core.config.ResponseMessagesConfig; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.core.service.exception.ResourceConflictException; +import br.com.imd.cadwork.core.service.exception.ResourceEmptyException; +import br.com.imd.cadwork.core.service.exception.ResourceNotFoundException; +import br.com.imd.cadwork.util.exception.ConvertLocalizavelException; + +/** + * Handler que atua entre as classes de exceções + * Formatando as exceções emitidas e as padronizando + * @author miguel + * + */ +@ControllerAdvice +public class ManipuladorException { + + /** + * Captura a exceção lançada do tipo {@link br.com.imd.cadwork.core.service.exception.ResourceEmptyException} + * @param e Exceção lançada + * @param request Requisição que causou a exceção + * @return ResponseEntity - Response com a mensagem correspondente a exceção + */ + @ExceptionHandler(ResourceEmptyException.class) + public ResponseEntity manipuladorResourceEmptyException(GenericServiceException e, + HttpServletRequest request) { + + DetalheError error = gerarMensagemError(HttpStatus.NOT_ACCEPTABLE, e); + + return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).body(error); + } + + /** + * Captura a exceção lançada do tipo {@link br.com.imd.cadwork.core.service.exception.ResourceNotFoundException} + * @param e Exceção lançada + * @param request Requisição que causou a exceção + * @return ResponseEntity<{@link br.com.imd.cadwork.core.config.DetalheError}> - Response com a mensagem correspondente a exceção + */ + @ExceptionHandler(ResourceNotFoundException.class) + public ResponseEntity manipuladorResourceNotFoundException(GenericServiceException e, + HttpServletRequest request) { + + DetalheError error = gerarMensagemError(HttpStatus.NOT_FOUND, e); + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error); + } + + /** + * Captura a exceção lançada do tipo {@link br.com.imd.cadwork.core.service.exception.ResourceConflictException} + * @param e Exceção lançada + * @param request Requisição que causou a exceção + * @return ResponseEntity<{@link br.com.imd.cadwork.core.config.DetalheError}> - + * Response com a mensagem correspondente a exceção + */ + @ExceptionHandler(ResourceConflictException.class) + public ResponseEntity manipuladorResourceConflictException(GenericServiceException e, + HttpServletRequest request) { + + DetalheError error = gerarMensagemError(HttpStatus.CONFLICT, e); + + return ResponseEntity.status(HttpStatus.CONFLICT).body(error); + } + + /** + * Captura a exceção lançada do tipo {@link br.com.imd.cadwork.util.exception.ConvertLocalizavelException} + * @param e Exceção lançada + * @param request Requisição que causou a exceção + * @return ResponseEntity<{@link br.com.imd.cadwork.core.config.DetalheError}> - + * Response com a mensagem correspondente a exceção + */ + @ExceptionHandler(ConvertLocalizavelException.class) + public ResponseEntity manipuladorResourceConvertLocalizavelException(GenericServiceException e, + HttpServletRequest request) { + + DetalheError error = gerarMensagemError(HttpStatus.INTERNAL_SERVER_ERROR, e); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error); + } + /** + * Procedimento que dada uma exceção juntamente com o status da mensagem pertencente ao protocolo http, + * formata uma mensagem padrão de resposta ao usuário + * @param status - Status correspondente ao verbo http + * @param e exceção lançada + * @return {@link br.com.imd.cadwork.core.config.DetalheError} - Mensagem padronizada referente a exceção recebida + */ + private DetalheError gerarMensagemError(HttpStatus status, GenericServiceException e) { + DetalheError error = new DetalheError(); + + error.setStatus(status); + error.setTitulo(ResponseMessagesConfig.getInstance().getMensagens() + .get(status.ordinal()).getMessage()); + + error.setTimestamp(System.currentTimeMillis()); + error.setMensagem(e.getMessage().replaceAll("\"", "")); + + return error; + } + +} diff --git a/src/main/java/br/com/imd/cadwork/core/localizacao/dao/EnderecoDAO.java b/src/main/java/br/com/imd/cadwork/core/localizacao/dao/EnderecoDAO.java new file mode 100644 index 0000000..df97ff7 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/dao/EnderecoDAO.java @@ -0,0 +1,25 @@ +package br.com.imd.cadwork.core.localizacao.dao; + +import java.util.Optional; + +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import br.com.imd.cadwork.core.dao.GenericDAO; +import br.com.imd.cadwork.core.localizacao.domain.Endereco; +/** + * Interface que herda da GeneticDAO para criar um DAO de Endereço + * @author Welligton Miguel + */ +@Repository +public interface EnderecoDAO extends GenericDAO { + /** + * Função para buscar endereço através da longitude e latitude + * + * @param latitude double - latitude do endereço + * @param longitude double - longitude do endereço + * @return Option - Optional de um endereço + */ + public Optional findEnderecoByLatitudeAndLongitude(@Param("latitude") double latitude, + @Param("longitude") double longitude); +} diff --git a/src/main/java/br/com/imd/cadwork/core/localizacao/dao/MunicipioDAO.java b/src/main/java/br/com/imd/cadwork/core/localizacao/dao/MunicipioDAO.java new file mode 100644 index 0000000..83754ff --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/dao/MunicipioDAO.java @@ -0,0 +1,27 @@ +package br.com.imd.cadwork.core.localizacao.dao; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import br.com.imd.cadwork.core.dao.GenericDAO; +import br.com.imd.cadwork.core.localizacao.domain.Municipio; +/** + * Interface que herda da GeneticDAO para criar um DAO de Municipio + * @author Welligton Miguel + */ +@Repository +public interface MunicipioDAO extends GenericDAO { + + /** + * Retorna um único municipio para o nome e estado passados + * @param nome String - nome do municipio a ser pesquisado + * @param estado String - estado ao qual o municipio pertence + * @return Optional<{@link br.com.imd.cadwork.core.localizacao.domain.Municipio}> - optional de um municipio + */ + @Query(value="SELECT * FROM localizacao.municipio m WHERE m.nome = :nome and m.estado = :#{#estado} LIMIT 1", nativeQuery = true) + Optional findTop1MunicipioByNomeAndEstado(@Param("nome")String nome, @Param("estado") String estado); + +} diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/domain/Endereco.java b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/Endereco.java similarity index 96% rename from src/main/java/br/com/imd/cadeduc/localizacao/domain/Endereco.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/domain/Endereco.java index 90a544c..37a506b 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/domain/Endereco.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/Endereco.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.domain; +package br.com.imd.cadwork.core.localizacao.domain; import javax.persistence.Column; import javax.persistence.Entity; @@ -61,12 +61,12 @@ public class Endereco { @NotNull(message = "Campo nulo") @ApiModelProperty(notes = "Latitude da Instituição", required = true) @Column(nullable = true) - private double latitude; + private Double latitude; @NotNull(message = "Campo nulo") @ApiModelProperty(notes = "Longitude da Instituição", required = true) @Column(nullable = true) - private double longitude; + private Double longitude; @NotNull(message = "Campo nulo") @Column(name = "tipo_localizacao") @@ -80,6 +80,10 @@ public class Endereco { @ApiModelProperty(notes = "Município da instituição ", required = true) private Municipio municipio; + /** + * Construtor da classe Endereço + */ + public Endereco(){ id = new Long(0); } @@ -203,7 +207,7 @@ public void setCep(String cep) { * * @return double - latitude de um endereço */ - public double getLatitude() { + public Double getLatitude() { return latitude; } @@ -213,7 +217,7 @@ public double getLatitude() { * @param latitude * double - nova latitude de um endereço */ - public void setLatitude(double latitude) { + public void setLatitude(Double latitude) { this.latitude = latitude; } diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/domain/EstadosEnum.java b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/EstadosEnum.java similarity index 96% rename from src/main/java/br/com/imd/cadeduc/localizacao/domain/EstadosEnum.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/domain/EstadosEnum.java index 7fc4196..ff3aa33 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/domain/EstadosEnum.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/EstadosEnum.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.domain; +package br.com.imd.cadwork.core.localizacao.domain; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/domain/Municipio.java b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/Municipio.java similarity index 97% rename from src/main/java/br/com/imd/cadeduc/localizacao/domain/Municipio.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/domain/Municipio.java index 1df38b0..ea3fcfc 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/domain/Municipio.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/Municipio.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.domain; +package br.com.imd.cadwork.core.localizacao.domain; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/domain/TipoLocalizacaoEnum.java b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/TipoLocalizacaoEnum.java similarity index 84% rename from src/main/java/br/com/imd/cadeduc/localizacao/domain/TipoLocalizacaoEnum.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/domain/TipoLocalizacaoEnum.java index a7b02fd..77dee53 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/domain/TipoLocalizacaoEnum.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/domain/TipoLocalizacaoEnum.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.domain; +package br.com.imd.cadwork.core.localizacao.domain; import io.swagger.annotations.ApiModel; @@ -10,7 +10,6 @@ * @version 0.2 * */ - @ApiModel public enum TipoLocalizacaoEnum { diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/resources/EnderecoResources.java b/src/main/java/br/com/imd/cadwork/core/localizacao/resources/EnderecoResources.java similarity index 60% rename from src/main/java/br/com/imd/cadeduc/localizacao/resources/EnderecoResources.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/resources/EnderecoResources.java index e7faee4..3e31eb7 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/resources/EnderecoResources.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/resources/EnderecoResources.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.resources; +package br.com.imd.cadwork.core.localizacao.resources; import java.net.URI; import java.util.List; @@ -9,7 +9,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,12 +16,16 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.localizacao.domain.Endereco; -import br.com.imd.cadeduc.localizacao.service.EnderecoService; +import br.com.imd.cadwork.core.localizacao.domain.Endereco; +import br.com.imd.cadwork.core.localizacao.service.EnderecoService; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; import io.swagger.annotations.Api; -@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) +/** + * Classe que faz o controle dos endpoints da API com os dados de enderecos + * @author Welligton Miguel + * + */ @RestController @RequestMapping(value = "/enderecos", produces = "application/json") @Api(tags = "Enderecos", description = "Operações pertinentes a endereços") @@ -30,13 +33,23 @@ public class EnderecoResources { @Autowired EnderecoService enderecoService; - + /** + * Retorna todos os enderecos da API + * @return List<{@link br.com.imd.cadwork.core.localizacao.domain.Endereco}> - todos os endereços da API + * @throws GenericServiceException + */ @RequestMapping(method = RequestMethod.GET) public List listar() throws GenericServiceException { return enderecoService.listar(); } - + /** + * Função para adicionar um endereco na API + * @param municipio Endereco - endereco para ser adicionado na API + * @param resultado BindingResult + * @return ResponseEntity<{@link java.lang.String}> + * @throws GenericServiceException + */ @RequestMapping(method = RequestMethod.POST) public ResponseEntity salvar(@Valid @RequestBody Endereco endereco, BindingResult resultado) throws GenericServiceException { @@ -47,10 +60,14 @@ public ResponseEntity salvar(@Valid @RequestBody Endereco endereco, Bind return ResponseEntity.created(uri).build(); } - + /** + * Retorna endereco associado a um determinado id + * @param id Long - id para retornar endereco associado + * @return Optional<{@link br.com.imd.cadwork.core.localizacao.domain.Endereco}> - caso o id seja válido retorna um endereco + * @throws GenericServiceException + */ @RequestMapping(value = "/{id}", method = RequestMethod.GET) public Optional buscar(@PathVariable("id") Long id) throws GenericServiceException { return enderecoService.buscar(id); } - } diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/resources/MunicipioResources.java b/src/main/java/br/com/imd/cadwork/core/localizacao/resources/MunicipioResources.java similarity index 61% rename from src/main/java/br/com/imd/cadeduc/localizacao/resources/MunicipioResources.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/resources/MunicipioResources.java index 33e76d8..acd3363 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/resources/MunicipioResources.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/resources/MunicipioResources.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.resources; +package br.com.imd.cadwork.core.localizacao.resources; import java.net.URI; import java.util.List; @@ -16,11 +16,15 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.localizacao.domain.Municipio; -import br.com.imd.cadeduc.localizacao.service.MunicipioService; +import br.com.imd.cadwork.core.localizacao.domain.Municipio; +import br.com.imd.cadwork.core.localizacao.service.MunicipioService; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; import io.swagger.annotations.Api; - +/** + * Classe que faz o controle dos endpoints da API com os dados de municipios + * @author Welligton Miguel + * + */ @RestController @RequestMapping(value = "/municipios", produces = "application/json") @Api(tags = "Municípios", value = "onlinestore", description = "Operações pertinentes a municípios") @@ -29,12 +33,23 @@ public class MunicipioResources { @Autowired MunicipioService municipioService; + /** + * Retorna todos os municipios da API + * @return List<{@link br.com.imd.cadwork.core.localizacao.domain.Municipio}> - todos os municipios da API + * @throws GenericServiceException + */ @RequestMapping(method = RequestMethod.GET) public List listar() throws GenericServiceException { return municipioService.listar(); } - + /** + * Função para adicionar municipio na API + * @param municipio Municipio - municipio para ser adicionado na API + * @param resultado BindingResult + * @return ResponseEntity<{@link java.lang.String}> + * @throws GenericServiceException + */ @RequestMapping(method = RequestMethod.POST) public ResponseEntity salvar(@Valid @RequestBody Municipio municipio, BindingResult resultado) throws GenericServiceException { municipioService.salvar(municipio, resultado); @@ -44,7 +59,12 @@ public ResponseEntity salvar(@Valid @RequestBody Municipio municipio, Bi return ResponseEntity.created(uri).build(); } - + /** + * Retorna municipio associado a um determinado id + * @param id Long - id para retornar municipio associado + * @return Optional<{@link br.com.imd.cadwork.core.localizacao.domain.Municipio}> - caso o id seja válido retorna um muninipio + * @throws GenericServiceException + */ @RequestMapping(value = "/{id}", method = RequestMethod.GET) public Optional buscar(@PathVariable("id") Long id) throws GenericServiceException { return municipioService.buscar(id); diff --git a/src/main/java/br/com/imd/cadwork/core/localizacao/service/EnderecoService.java b/src/main/java/br/com/imd/cadwork/core/localizacao/service/EnderecoService.java new file mode 100644 index 0000000..1dd19e6 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/service/EnderecoService.java @@ -0,0 +1,74 @@ +package br.com.imd.cadwork.core.localizacao.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.validation.BindingResult; + +import br.com.imd.cadwork.core.dao.GenericDAO; +import br.com.imd.cadwork.core.localizacao.dao.EnderecoDAO; +import br.com.imd.cadwork.core.localizacao.domain.Endereco; +import br.com.imd.cadwork.core.service.GenericService; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.core.service.exception.ResourceConflictException; +/** + * Service para objetos da classe Endereco + * @author Welligton Miguel + * + */ + +@Component +public class EnderecoService extends GenericService { + + /** + * {@inheritDoc} + */ + @Override + public List listar() throws GenericServiceException { + return super.listar(); + } + /** + * {@inheritDoc} + */ + @Override + public void salvar(Endereco endereco, BindingResult resultado) throws GenericServiceException { + super.salvar(endereco, resultado); + } + /** + * {@inheritDoc} + */ + @Override + public Optional buscar(Long id) throws GenericServiceException { + return super.buscar(id); + } + /** + * {@inheritDoc} + */ + @Autowired + public void setDao(GenericDAO dao) { + super.dao = dao; + } + /** + * {@inheritDoc} + */ + @Override + protected void verificaExistencia(Endereco endereco) throws GenericServiceException { + if (buscaEnderecosLatLng(endereco.getLatitude(),endereco.getLongitude()).isPresent()){ + throw new ResourceConflictException(); + } + } + + /** + * Função que busca um endereço baseado na latitude e longitude + * @param lat + * @param lng + * @return Optional - retorna o endereço caso exista + */ + public Optional buscaEnderecosLatLng(Double lat, Double lng){ + return ((EnderecoDAO) dao).findEnderecoByLatitudeAndLongitude(lat,lng); + + } + +} diff --git a/src/main/java/br/com/imd/cadeduc/localizacao/service/MunicipioService.java b/src/main/java/br/com/imd/cadwork/core/localizacao/service/MunicipioService.java similarity index 54% rename from src/main/java/br/com/imd/cadeduc/localizacao/service/MunicipioService.java rename to src/main/java/br/com/imd/cadwork/core/localizacao/service/MunicipioService.java index f167168..a89e33c 100644 --- a/src/main/java/br/com/imd/cadeduc/localizacao/service/MunicipioService.java +++ b/src/main/java/br/com/imd/cadwork/core/localizacao/service/MunicipioService.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.localizacao.service; +package br.com.imd.cadwork.core.localizacao.service; import java.util.List; import java.util.Optional; @@ -7,45 +7,57 @@ import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; -import br.com.imd.cadeduc.core.dao.GenericDAO; -import br.com.imd.cadeduc.core.service.GenericService; -import br.com.imd.cadeduc.core.service.exception.GenericServiceException; -import br.com.imd.cadeduc.core.service.exception.ResourceConflictException; -import br.com.imd.cadeduc.localizacao.dao.MunicipioDAO; -import br.com.imd.cadeduc.localizacao.domain.Municipio; - +import br.com.imd.cadwork.core.dao.GenericDAO; +import br.com.imd.cadwork.core.localizacao.dao.MunicipioDAO; +import br.com.imd.cadwork.core.localizacao.domain.Municipio; +import br.com.imd.cadwork.core.service.GenericService; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.core.service.exception.ResourceConflictException; +/** + * Service para objetos da classe Endereco + * @author Welligton Miguel + * + */ @Component public class MunicipioService extends GenericService { - + /** + * {@inheritDoc}} + */ @Override public List listar() throws GenericServiceException { return super.listar(); } - + /** + * {@inheritDoc}} + */ @Override public void salvar(Municipio municipio, BindingResult resultado) throws GenericServiceException { super.salvar(municipio, resultado); } - + /** + * {@inheritDoc}} + */ @Override public Optional buscar(Long id) throws GenericServiceException { return super.buscar(id); } - + /** + * {@inheritDoc}} + */ @Autowired public void setDao(GenericDAO dao) { super.dao = dao; } + /** + * {@inheritDoc}} + */ @Override protected void verificaExistencia(Municipio municipio) throws GenericServiceException { - Optional municipioCadastrado = ((MunicipioDAO) dao) - .findTop1MunicipioByNomeAndEstado(municipio.getNome(), municipio.getEstado().name()); - - if(municipio.getId()!=0 || municipioCadastrado.isPresent()) { + if (((MunicipioDAO) dao).findTop1MunicipioByNomeAndEstado( municipio.getNome(), + municipio.getEstado().name()).isPresent()) { throw new ResourceConflictException(); } - } } diff --git a/src/main/java/br/com/imd/cadwork/core/localizavel/dao/LocalizavelDAO.java b/src/main/java/br/com/imd/cadwork/core/localizavel/dao/LocalizavelDAO.java new file mode 100644 index 0000000..39be06e --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizavel/dao/LocalizavelDAO.java @@ -0,0 +1,22 @@ +package br.com.imd.cadwork.core.localizavel.dao; + +import java.util.Optional; + +import org.springframework.data.repository.NoRepositoryBean; +import org.springframework.data.repository.query.Param; + +import br.com.imd.cadwork.core.dao.GenericDAO; +import br.com.imd.cadwork.core.localizacao.domain.Endereco; +import br.com.imd.cadwork.core.localizavel.model.CriterioLocalizacao; +import br.com.imd.cadwork.core.localizavel.model.Localizavel; + +/** + * {@inheritDoc}} + */ +@NoRepositoryBean +public interface LocalizavelDAO extends GenericDAO { + + public Optional findByEndereco(@Param("endereco")Endereco endereco); + + public Optional findByCriterioLocalizacao(@Param("criterio")CriterioLocalizacao criterio); +} diff --git a/src/main/java/br/com/imd/cadwork/core/localizavel/exception/CriterioException.java b/src/main/java/br/com/imd/cadwork/core/localizavel/exception/CriterioException.java new file mode 100644 index 0000000..66ebe73 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizavel/exception/CriterioException.java @@ -0,0 +1,16 @@ +package br.com.imd.cadwork.core.localizavel.exception; + +import br.com.imd.cadwork.core.dao.GenericDomainException; + +public class CriterioException extends GenericDomainException { + + private static final long serialVersionUID = 1L; + + public CriterioException() { + super("Erro gerado pelo critério!"); + } + + public CriterioException(String message) { + super(message); + } +} diff --git a/src/main/java/br/com/imd/cadwork/core/localizavel/model/CriterioLocalizacao.java b/src/main/java/br/com/imd/cadwork/core/localizavel/model/CriterioLocalizacao.java new file mode 100644 index 0000000..4230db6 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizavel/model/CriterioLocalizacao.java @@ -0,0 +1,78 @@ +package br.com.imd.cadwork.core.localizavel.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +import br.com.imd.cadwork.core.dao.GenericDomainException; + +/** + * Classe abstrata para ser base do modelo do critério de localização + * + * @author Miguel + * @version 0.1 + */ +@Entity +@Table(name = "criterio", schema = "criterio") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +public abstract class CriterioLocalizacao { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + protected Long id; + + @NotNull + @Column + protected String nome; + + /** + * Método para retorno do id de uma instância de Etapa de Ensino + * + * @return Long - Valor do id + */ + public Long getId() { + return id; + } + + /** + * Altera o valor do id de uma instância de Etapa de Ensino + * + * @param id + * Long - Novo valor do id + */ + public void setId(Long id) { + this.id = id; + } + + /** + * Retorna o nome da etapa de ensino + * + * @return String - Nome da etapa de ensino + */ + public String getNome() { + return nome; + } + + /** + * Altera o nome da etapa de ensino + * + * @param nome + * String - Novo nome da etapa de ensino + */ + public void setNome(String nome) { + this.nome = nome; + } + + /** + * Método que será implementado pelas classes filhas com finalidade de limitar os possíveis + * itens localizáveis + * @throws GenericDomainException + */ + public abstract void validaCriterios() throws GenericDomainException; +} diff --git a/src/main/java/br/com/imd/cadwork/core/localizavel/model/Localizavel.java b/src/main/java/br/com/imd/cadwork/core/localizavel/model/Localizavel.java new file mode 100644 index 0000000..36855ad --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/localizavel/model/Localizavel.java @@ -0,0 +1,141 @@ +package br.com.imd.cadwork.core.localizavel.model; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Transient; +import javax.validation.constraints.NotNull; + +import org.springframework.beans.factory.annotation.Autowired; + +import br.com.imd.cadwork.core.localizacao.domain.Endereco; +import br.com.imd.cadwork.core.service.GoogleService; + +/** + * Classe abstrata para ser base do modelo do item localizavel + * + * @author Igor Barbosa Nogueira + * @author Miguel + * @version 0.2 + */ +@Entity +@Table(name = "localizavel", schema = "localizavel") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +public abstract class Localizavel { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + protected Long id; + + @NotNull + @Column + protected String nome; + + @NotNull + @OneToOne(cascade = CascadeType.REFRESH) + protected Endereco endereco; + + @NotNull + @OneToMany(cascade = CascadeType.ALL) + @Autowired + protected List criterioLocalizacao; + + + @Transient + @Autowired + protected GoogleService google; + /** + * Retorna o endereço do localizavel + * + * @return Endereco - Endereço da escola + */ + public Endereco getEndereco() { + return endereco; + } + + /** + * Altera o endereço de uma instância de Localizavel + * + * @param endereco + * Endereco - Novo endereço + */ + public void setEndereco(Endereco endereco) { + this.endereco = endereco; + } + + /** + * Método para retorno do id de uma instância de Localizavel + * + * @return Long - Valor do id + */ + public Long getId() { + return id; + } + + /** + * Altera o valor do id de uma instância de Localizavel + * + * @param id + * Long - Novo valor do id + */ + public void setId(Long id) { + this.id = id; + } + + /** + * Método que retorna o nome do localizavel + * + * @return String - Nome do localizavel + */ + public String getNome() { + return nome; + } + + /** + * Método que modifica o nome do localizavel + * + * @param nome + * String - Novo nome do localizavel + */ + public void setNome(String nome) { + this.nome = nome; + } + + /** + * Método que retorna o critério de localização + * + * @return List - Critério para buscar o localizavel + */ + public List getCriterioLocalizacao() { + return criterioLocalizacao; + } + + /** + * Método que modifica o tipo de critério para buscar o localizavel + * + * @param criterioLocalizacao + * List - Novo critério para buscar o localizavel + */ + public void setCriterioLocalizacao(List criterioLocalizacao) { + this.criterioLocalizacao = criterioLocalizacao; + } + + /** + * Método que será implentado pelas classes filhas com finalidade + * de validar a existência do localizável + * + * @return boolean - Se o localizavel é válido ou não + */ + public abstract boolean validaLocalizavel(); + +} \ No newline at end of file diff --git a/src/main/java/br/com/imd/cadeduc/core/resources/CadeducResources.java b/src/main/java/br/com/imd/cadwork/core/resources/CadeducResources.java similarity index 71% rename from src/main/java/br/com/imd/cadeduc/core/resources/CadeducResources.java rename to src/main/java/br/com/imd/cadwork/core/resources/CadeducResources.java index 45142db..bc9f35a 100644 --- a/src/main/java/br/com/imd/cadeduc/core/resources/CadeducResources.java +++ b/src/main/java/br/com/imd/cadwork/core/resources/CadeducResources.java @@ -1,4 +1,4 @@ -package br.com.imd.cadeduc.core.resources; +package br.com.imd.cadwork.core.resources; import javax.servlet.http.HttpServletResponse; @@ -6,11 +6,18 @@ import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; - +/** + * Classe para configurar resource principal + * @author Welligton Miguel + * + */ @ApiIgnore @RestController public class CadeducResources { - + /** + * Redireciona para página inicial + * @param response HttpServletResponse + */ @GetMapping("/") public void paginaInicial(HttpServletResponse response) { response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); diff --git a/src/main/java/br/com/imd/cadwork/core/service/GenericService.java b/src/main/java/br/com/imd/cadwork/core/service/GenericService.java new file mode 100644 index 0000000..2f0fa7a --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/service/GenericService.java @@ -0,0 +1,102 @@ +package br.com.imd.cadwork.core.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.validation.BindingResult; + +import br.com.imd.cadwork.core.dao.GenericDAO; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.core.service.exception.ResourceEmptyException; +import br.com.imd.cadwork.core.service.exception.ResourceNotFoundException; +import br.com.imd.cadwork.util.ValidatorUtil; + +/** + * Service genérico para objetos do framework + * + * @author Welligton Miguel + * + * @param + */ +@Service +public abstract class GenericService { + + protected GenericDAO dao; + + @Autowired + protected GoogleService googleService; + + /** + * Retorna uma lista de objetos + * + * @return List - lista de objetos + * @throws GenericServiceException + */ + protected List listar() throws GenericServiceException { + List entidades = dao.findAll(); + + entidades.stream().findAny().orElseThrow(ResourceNotFoundException::new); + + return entidades; + } + + /** + * Procedimento para salvar um objeto + * + * @param t + * T - objeto para ser salvo + * @param resultado + * BindingResult - resultados da operação + * @throws GenericServiceException + */ + protected void salvar(T t, BindingResult resultado) throws GenericServiceException { + + if (resultado.hasErrors()) { + throw new ResourceEmptyException(ValidatorUtil.gerarErrorsInJson(resultado.getAllErrors())); + } + verificaExistencia(t); + + try { + + dao.save(t); + + } catch (Exception e) { + throw new GenericServiceException(e.getMessage()); + } + + } + + /** + * Busca um onjeto por um id passado + * + * @param id + * Long - busca um objeto pelo id + * @return Optional - retorna o objeto caso exista + * @throws GenericServiceException + */ + protected Optional buscar(Long id) throws GenericServiceException { + T entidade = dao.findById(id).orElseThrow(ResourceNotFoundException::new); + + return Optional.of(entidade); + } + + /** + * Função abstrata que tem que ser injetada para setar o dao correto + * + * @param dao + * GenericDAO + */ + protected abstract void setDao(GenericDAO dao); + + /** + * Verifica a existência de um determinado objeto no BD + * + * @param t + * T - objeto passado + * @throws GenericServiceException + */ + protected abstract void verificaExistencia(T t) throws GenericServiceException; + +} diff --git a/src/main/java/br/com/imd/cadwork/core/service/GoogleService.java b/src/main/java/br/com/imd/cadwork/core/service/GoogleService.java new file mode 100644 index 0000000..deec9db --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/service/GoogleService.java @@ -0,0 +1,112 @@ +package br.com.imd.cadwork.core.service; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.util.GoogleValidator; +import br.com.imd.cadwork.util.exception.ConvertLocalizavelException; +import se.walkercrou.places.GooglePlaces; +import se.walkercrou.places.Param; +import se.walkercrou.places.Place; + +@Service +public class GoogleService { + + public static final String KEY = "AIzaSyD5SoFyhcb2eNCBW4PFwpt56BwMXWGDbHc"; + public static final int RAIO_BUSCA = 500; + public static final int LIMITE_BUSCA = 20; + public static final int BUSCA_INDIVIDUAL = 1; + + public static final String ESCOLA = "escola"; + public static final String PARADA = "bus"; + + private GooglePlaces cliente; + + public GoogleService() { + cliente = new GooglePlaces(KEY); + } + + /** + * Busca especificamente o localizavel pertencente a latitude e longitude + * @param lat + * @param lng + * @param extraParams + * @return + * @throws GenericServiceException + * @throws ConvertLocalizavelException + */ + public List> getLocalizavelByLatLng(Double lat, Double lng,Param... extraParams) + throws GenericServiceException, ConvertLocalizavelException { + + return getLocalizaveisProximos(lat,lng,RAIO_BUSCA,BUSCA_INDIVIDUAL,extraParams); + } + + /** + * Retorna uma lista com 20 localizáveis mais próximos no raio de 50.000 metros + * @param lat + * @param lng + * @param extraParams + * @return + * @throws GenericServiceException + * @throws ConvertLocalizavelException + */ + public List> getLocalizaveisByLatLng(Double lat, Double lng,Param... extraParams) + throws GenericServiceException, ConvertLocalizavelException { + + return getLocalizaveisProximos(lat,lng,RAIO_BUSCA,LIMITE_BUSCA,extraParams); + } + + + /** + * Core da consulta por latitude e longitude, invoca o service da google + * informando os parâmetros necessários + * @param lat + * @param lng + * @param raio + * @param limite + * @param extraParams + * @return + * @throws GenericServiceException + * @throws ConvertLocalizavelException + */ + private List> getLocalizaveisProximos(Double lat, Double lng, int raio, int limite, + Param... extraParams) throws GenericServiceException, ConvertLocalizavelException { + List places = new LinkedList<>(); + + places = cliente.getNearbyPlaces(lat,lng,raio,limite,extraParams); + + return GoogleValidator.convertPlaceInMapLocalizavel(places); + } + + + public GooglePlaces getCliente() { + return cliente; + } + + public void setCliente(GooglePlaces cliente) { + this.cliente = cliente; + } + + public boolean validaExistencia(Double lat, Double lng,String tipoInstituicao) { + Param param = new Param("keyword"); + param.value(tipoInstituicao); + try { + + return cliente.getNearbyPlacesRankedByDistance(lat, + lng, + BUSCA_INDIVIDUAL, + param + ) + .stream() + .findFirst() + .isPresent(); + + }catch (Exception e) { + return false; + } + } +} diff --git a/src/main/java/br/com/imd/cadwork/core/service/LocalizavelService.java b/src/main/java/br/com/imd/cadwork/core/service/LocalizavelService.java new file mode 100644 index 0000000..1108a54 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/service/LocalizavelService.java @@ -0,0 +1,34 @@ +package br.com.imd.cadwork.core.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import br.com.imd.cadwork.core.localizavel.model.Localizavel; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.util.exception.ConvertLocalizavelException; +import se.walkercrou.places.Param; + +/** + * {@inheritDoc}} + */ +@Service +public abstract class LocalizavelService extends GenericService { + + /** + * Função que retorna uma lista de localizáveis cadastrados no google baseado na latitude e longitude + * @param lat - Latitude do localizável + * @param lng - Longitude do localizável + * @param keyword - Plavra chave a ser pesquisada + * @return - Lista contendo os localizáveis disponíveis + * @throws GenericServiceException + * @throws ConvertLocalizavelException + */ + protected List> buscarLocalizaveisProximos(Double lat, Double lng, String keyword) throws GenericServiceException, ConvertLocalizavelException { + Param param = new Param("keyword"); + param.value(keyword); + + return googleService.getLocalizaveisByLatLng(lat, lng, param); + } +} diff --git a/src/main/java/br/com/imd/cadwork/core/service/exception/GenericServiceException.java b/src/main/java/br/com/imd/cadwork/core/service/exception/GenericServiceException.java new file mode 100644 index 0000000..d5c1f0c --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/core/service/exception/GenericServiceException.java @@ -0,0 +1,18 @@ +package br.com.imd.cadwork.core.service.exception; + +/** + * Exceção para services + * @author Welligton Miguel + * + */ +public class GenericServiceException extends Exception { + private static final long serialVersionUID = 1L; + /** + * Construtor + * @param message String - mensagem de exceção + */ + public GenericServiceException(String message) { + super(message); + } + +} diff --git a/src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceConflictException.java b/src/main/java/br/com/imd/cadwork/core/service/exception/ResourceConflictException.java similarity index 54% rename from src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceConflictException.java rename to src/main/java/br/com/imd/cadwork/core/service/exception/ResourceConflictException.java index 98932fe..0d1a37c 100644 --- a/src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceConflictException.java +++ b/src/main/java/br/com/imd/cadwork/core/service/exception/ResourceConflictException.java @@ -1,14 +1,25 @@ -package br.com.imd.cadeduc.core.service.exception; +package br.com.imd.cadwork.core.service.exception; +/** + * Exceção para resource de conflito + * @author Welligton Miguel + * + */ public class ResourceConflictException extends GenericServiceException { private static final long serialVersionUID = 1L; - + + /** + * Construtor + */ public ResourceConflictException() { super("Recurso Já existente"); } - + /** + * Constutor + * @param message String - mensagem da exceção + */ public ResourceConflictException(String message) { super(message); diff --git a/src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceEmptyException.java b/src/main/java/br/com/imd/cadwork/core/service/exception/ResourceEmptyException.java similarity index 57% rename from src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceEmptyException.java rename to src/main/java/br/com/imd/cadwork/core/service/exception/ResourceEmptyException.java index 477dffb..98829a8 100644 --- a/src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceEmptyException.java +++ b/src/main/java/br/com/imd/cadwork/core/service/exception/ResourceEmptyException.java @@ -1,9 +1,17 @@ -package br.com.imd.cadeduc.core.service.exception; +package br.com.imd.cadwork.core.service.exception; +/** + * Exceção para resource vazio + * @author Welligton Miguel + * + */ public class ResourceEmptyException extends GenericServiceException { private static final long serialVersionUID = 1L; + /** + * Contrutor + */ public ResourceEmptyException(String message) { super(message); } diff --git a/src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceNotFoundException.java b/src/main/java/br/com/imd/cadwork/core/service/exception/ResourceNotFoundException.java similarity index 54% rename from src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceNotFoundException.java rename to src/main/java/br/com/imd/cadwork/core/service/exception/ResourceNotFoundException.java index 43f7faf..7055330 100644 --- a/src/main/java/br/com/imd/cadeduc/core/service/exception/ResourceNotFoundException.java +++ b/src/main/java/br/com/imd/cadwork/core/service/exception/ResourceNotFoundException.java @@ -1,13 +1,24 @@ -package br.com.imd.cadeduc.core.service.exception; +package br.com.imd.cadwork.core.service.exception; +/** + * Exceção para resource não encontrado + * @author Welligton Miguel + * + */ public class ResourceNotFoundException extends GenericServiceException { private static final long serialVersionUID = 1L; + /** + * Construtor + */ public ResourceNotFoundException() { super("Recurso não encontrado."); } - + /** + * Construtor + * @param message String - mensagem da exceção + */ public ResourceNotFoundException(String message) { super(message); } diff --git a/src/main/java/br/com/imd/cadwork/util/GoogleValidator.java b/src/main/java/br/com/imd/cadwork/util/GoogleValidator.java new file mode 100644 index 0000000..e346046 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/util/GoogleValidator.java @@ -0,0 +1,35 @@ +package br.com.imd.cadwork.util; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import br.com.imd.cadwork.util.exception.ConvertLocalizavelException; +import se.walkercrou.places.Place; + +public class GoogleValidator { + + public static List> convertPlaceInMapLocalizavel(List places) throws ConvertLocalizavelException { + + List> listMapLocalizavel = new LinkedList<>(); + try { + places.stream().forEach(place -> listMapLocalizavel.add(getEnderecoInPlace(place))); + }catch (Exception e) { + throw new ConvertLocalizavelException(); + } + + return listMapLocalizavel; + } + + private static Map getEnderecoInPlace(Place place) { + Map mapLocalizavel = new HashMap<>(); + mapLocalizavel.put("nome", place.getName()); + mapLocalizavel.put("latitude", place.getLatitude()); + mapLocalizavel.put("longitude", place.getLongitude()); + mapLocalizavel.put("logradouro",place.getVicinity()); + + return mapLocalizavel; + } + +} diff --git a/src/main/java/br/com/imd/cadwork/util/ValidatorUtil.java b/src/main/java/br/com/imd/cadwork/util/ValidatorUtil.java new file mode 100644 index 0000000..a60769d --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/util/ValidatorUtil.java @@ -0,0 +1,76 @@ +package br.com.imd.cadwork.util; + +import java.util.List; + +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; + +import com.google.gson.Gson; + +public class ValidatorUtil { + /** + * Gera Json com os errors obtidos + * @param allErrors Lis - lista de objeto com todos os errors + * @return String - Json com os errors + */ + public static String gerarErrorsInJson(List allErrors) { + + StringBuilder message = new StringBuilder(); + message.append("{Errors:["); + for (ObjectError error : allErrors) { + message.append("{"); + message.append(((FieldError) error).getField().concat(": "+ error.getDefaultMessage())); + message.append("}"); + message.append(","); + } + message.append("]"); + + String errors = message.toString().replace("},]", "}]}"); + + return new Gson().toJson(errors); + } + /** + * Verifica se um objeto está vazio + * @param o Object - um objeto qualquer + * @return boolean - se o objeto está vazio ou não + */ + public static boolean isEmpty(Object o) { + //Validar de forma genérica quando um objeto está ou não válido + return true; + } + + + + /* + * http://www.frameworksystem.com/calculando-a-distancia-entre-2-pontos-latitude-e-longitude-em-java/ + * + * Calculate distance between two points in latitude + and longitude taking into account height difference. + If you are not interested in height difference pass 0.0. + Uses Haversine method as its base. lat1, lon1 Start point + lat2, lon2 End point el1 Start altitude in meters el2 End altitude + in meters */ + + public double distancia(double lat1, double lat2, double lon1, double lon2) { + final double el1 = 0.0; + final double el2 = 0.0; + final int R = 6371; // Radius of the earth + + Double latDistance = deg2rad(lat2 - lat1); + Double lonDistance = deg2rad(lon2 - lon1); + Double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) + * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2); + Double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + double distance = R * c * 1000; // convert to meters + + double height = el1 - el2; + distance = Math.pow(distance, 2) + Math.pow(height, 2); + return Math.sqrt(distance); + } + + private double deg2rad(double deg) { + return (deg * Math.PI / 180.0); + } + +} diff --git a/src/main/java/br/com/imd/cadwork/util/exception/ConvertLocalizavelException.java b/src/main/java/br/com/imd/cadwork/util/exception/ConvertLocalizavelException.java new file mode 100644 index 0000000..ca583f2 --- /dev/null +++ b/src/main/java/br/com/imd/cadwork/util/exception/ConvertLocalizavelException.java @@ -0,0 +1,18 @@ +package br.com.imd.cadwork.util.exception; + +public class ConvertLocalizavelException extends Exception{ + + private static final long serialVersionUID = 1L; + + public ConvertLocalizavelException() { + super("Erro ao converter Localizável"); + } + + /** + * Construtor + * @param message String - mensagem da exceção + */ + public ConvertLocalizavelException(String message) { + super(message); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3e56158..c1f7ef1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -11,8 +11,8 @@ spring.datasource.driver-class-name=org.h2.Driver ### confiruração JPA spring.jpa.show-sql=true -spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.ddl-auto=create-drop ### Acesso ao BD spring.datasource.username=sa -spring.datasource.password= \ No newline at end of file +spring.datasource.password= diff --git a/src/main/resources/db/migration/V1_create_schema.sql b/src/main/resources/db/migration/V1_create_schema.sql index bf4aed5..70046c0 100644 --- a/src/main/resources/db/migration/V1_create_schema.sql +++ b/src/main/resources/db/migration/V1_create_schema.sql @@ -1,3 +1,3 @@ -CREATE SCHEMA IF NOT EXISTS ENSINO; -CREATE SCHEMA IF NOT EXISTS ESCOLA; CREATE SCHEMA IF NOT EXISTS LOCALIZACAO; +CREATE SCHEMA IF NOT EXISTS LOCALIZAVEL; +CREATE SCHEMA IF NOT EXISTS CRITERIO; diff --git a/src/test/java/br/com/imd/cadeduc/CadeducapiApplicationTests.java b/src/test/java/br/com/imd/cadeduc/CadeducapiApplicationTests.java deleted file mode 100644 index 5ce5420..0000000 --- a/src/test/java/br/com/imd/cadeduc/CadeducapiApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package br.com.imd.cadeduc; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class CadeducapiApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/src/test/java/br/com/imd/cadwork/core/localizavel/service/EnderecoServiceTests.java b/src/test/java/br/com/imd/cadwork/core/localizavel/service/EnderecoServiceTests.java new file mode 100644 index 0000000..6261b89 --- /dev/null +++ b/src/test/java/br/com/imd/cadwork/core/localizavel/service/EnderecoServiceTests.java @@ -0,0 +1,96 @@ +package br.com.imd.cadwork.core.localizavel.service; + +import br.com.imd.cadwork.CadworkapiApplication; +import br.com.imd.cadwork.core.localizacao.domain.Endereco; +import br.com.imd.cadwork.core.localizacao.domain.EstadosEnum; +import br.com.imd.cadwork.core.localizacao.domain.Municipio; +import br.com.imd.cadwork.core.localizacao.domain.TipoLocalizacaoEnum; +import br.com.imd.cadwork.core.localizacao.service.EnderecoService; +import br.com.imd.cadwork.core.localizacao.service.MunicipioService; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.validation.BindingResult; + +import java.util.List; + +@RunWith(SpringRunner.class) +@WebAppConfiguration +@TestPropertySource(locations="classpath:application.properties") +@ContextConfiguration(classes = {CadworkapiApplication.class}) +@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, + pattern = {"br.com.imd.cadwork.core.resources","br.com.imd.cadwork.core.config"})) +public class EnderecoServiceTests { + + @Autowired + EnderecoService enderecoService; + + @Mock + BindingResult bindingResultMock; + + @Mock + Municipio municipio; + + @Autowired + MunicipioService municipioService; + + @Before + public void insereMunicipio() throws GenericServiceException { + Municipio municipio = new Municipio(); + + municipio.setNome("Natal"); + municipio.setEstado(EstadosEnum.TOCANTINS); + + municipioService.salvar(municipio,bindingResultMock); + + } + + @Test + public void testSalvarEndereco() throws GenericServiceException { + + List listar = municipioService.listar(); + + Endereco endereco = new Endereco(); + endereco.setBairro("Teste"); + endereco.setCep("Teste"); + endereco.setComplemento("Teste"); + endereco.setLatitude(0d); + endereco.setLongitude(0); + endereco.setLogradouro("Teste"); + endereco.setTipoLocalizacao(TipoLocalizacaoEnum.Urbana); + endereco.setNumero("467"); + + Mockito.when(municipio.getId()).thenReturn(1l); + + endereco.setMunicipio(municipio); + + Mockito.when(bindingResultMock.hasErrors()).thenReturn(false); + + enderecoService.salvar(endereco,bindingResultMock); + + Assert.assertFalse(enderecoService.listar().isEmpty()); + } + + @Test(expected = GenericServiceException.class) + public void testSalvarMunicipio_ComErrosNoCadastro() throws GenericServiceException { + + Endereco endereco = new Endereco(); + + Mockito.when(bindingResultMock.hasErrors()).thenReturn(true); + + enderecoService.salvar(endereco,bindingResultMock); + + } + +} diff --git a/src/test/java/br/com/imd/cadwork/core/localizavel/service/MunicipioServiceTests.java b/src/test/java/br/com/imd/cadwork/core/localizavel/service/MunicipioServiceTests.java new file mode 100644 index 0000000..b7f4c7e --- /dev/null +++ b/src/test/java/br/com/imd/cadwork/core/localizavel/service/MunicipioServiceTests.java @@ -0,0 +1,65 @@ +package br.com.imd.cadwork.core.localizavel.service; + +import br.com.imd.cadwork.CadworkapiApplication; +import br.com.imd.cadwork.core.localizacao.domain.EstadosEnum; +import br.com.imd.cadwork.core.localizacao.domain.Municipio; +import br.com.imd.cadwork.core.localizacao.service.MunicipioService; +import br.com.imd.cadwork.core.service.exception.GenericServiceException; +import br.com.imd.cadwork.core.service.exception.ResourceNotFoundException; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; + +import org.springframework.context.annotation.*; + +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.validation.BindingResult; + +@RunWith(SpringRunner.class) +@WebAppConfiguration +@TestPropertySource(locations="classpath:application.properties") +@ContextConfiguration(classes = {CadworkapiApplication.class}) +@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, + pattern = {"br.com.imd.cadwork.core.resources","br.com.imd.cadwork.core.config"})) +public class MunicipioServiceTests { + + @Autowired + MunicipioService municipioService; + + @Test + public void testSalvarMunicipio() throws GenericServiceException { + + Municipio municipio = new Municipio(); + + municipio.setNome("Natal"); + municipio.setEstado(EstadosEnum.TOCANTINS); + + BindingResult bindingResultMock = Mockito.mock(BindingResult.class); + Mockito.when(bindingResultMock.hasErrors()).thenReturn(false); + + municipioService.salvar(municipio,bindingResultMock); + + Assert.assertFalse(municipioService.listar().isEmpty()); + } + + @Test(expected = ResourceNotFoundException.class) + public void testSalvarMunicipio_ComErrosNoCadastro() throws GenericServiceException { + + Municipio municipio = new Municipio(); + + municipio.setNome("Natalondon"); + municipio.setEstado(EstadosEnum.TOCANTINS); + + BindingResult bindingResultMock = Mockito.mock(BindingResult.class); + Mockito.when(bindingResultMock.hasErrors()).thenReturn(true); + + municipioService.salvar(municipio,bindingResultMock); + + } + +} diff --git a/travis-ci.yml b/travis-ci.yml new file mode 100644 index 0000000..6d3b569 --- /dev/null +++ b/travis-ci.yml @@ -0,0 +1,4 @@ +language: java +sudo: true +script: +- mvn install -Dmaven.javadoc.skip=true -B -V \ No newline at end of file