Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
1ea1cf2
try FrontControllerServlet
IvanNoyvik Feb 19, 2021
03d456e
findByLoginAndPasswordSqlQuery
IvanNoyvik Feb 20, 2021
d301496
change in mem base init
IvanNoyvik Feb 20, 2021
916144e
front-end fail
IvanNoyvik Feb 23, 2021
30fb234
front-end fail
IvanNoyvik Feb 25, 2021
f84c1a0
front-end up
IvanNoyvik Feb 27, 2021
b1d2ff3
class work
IvanNoyvik Feb 27, 2021
957b91e
add add Order
IvanNoyvik Mar 1, 2021
eab98cb
add block user part user
IvanNoyvik Mar 2, 2021
63d2773
add admin panel
IvanNoyvik Mar 3, 2021
d7c8af5
Transaction fail
IvanNoyvik Mar 5, 2021
8daf648
class work
IvanNoyvik Mar 6, 2021
a9cfbe3
test add image
IvanNoyvik Mar 7, 2021
3c59d94
Merge remote-tracking branch 'origin/transaction' into transaction
IvanNoyvik Mar 7, 2021
bc0fda3
ok test add and get image
IvanNoyvik Mar 8, 2021
f7b48d9
add image servlet
IvanNoyvik Mar 10, 2021
a41f052
to create book
IvanNoyvik Mar 14, 2021
f1697ea
add filter
IvanNoyvik Mar 14, 2021
359129e
Merge remote-tracking branch 'origin/transaction' into transaction
IvanNoyvik Mar 14, 2021
7246b49
add Genre and Author
IvanNoyvik Mar 14, 2021
b567613
add Genre, Author and Book
IvanNoyvik Mar 14, 2021
d96470f
users list on book.jsp
IvanNoyvik Mar 14, 2021
4ed53db
fixed view
IvanNoyvik Mar 16, 2021
240acd8
check git
IvanNoyvik Mar 16, 2021
0f5180b
add resp message
IvanNoyvik Mar 18, 2021
ba13e21
fix admin panel
IvanNoyvik Mar 21, 2021
67e05e4
fix frontend
IvanNoyvik Mar 21, 2021
4c4d201
Merge pull request #1 from IvanNoyvik/transaction
IvanNoyvik Mar 21, 2021
c6ac5ea
final touches
IvanNoyvik Mar 25, 2021
d97e1ce
Merge pull request #2 from IvanNoyvik/transaction
IvanNoyvik Mar 25, 2021
7070fb9
Add singleton in DAO
IvanNoyvik Mar 26, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
# library
# library
jdbc:h2:tcp://localhost/mem:jdbc
57 changes: 57 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,62 @@
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>

<lombok.version>1.18.16</lombok.version>
<HikariCP.version>4.0.1</HikariCP.version>
<h2.version>1.4.200</h2.version>
<slf4j-nop.version>2.0.0-alpha1</slf4j-nop.version>
<servlet.version>3.1.0</servlet.version>
<jsp.version>2.3.0</jsp.version>
<jstl.version>1.2</jstl.version>
</properties>


<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${HikariCP.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>${slf4j-nop.version}</version>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>

</dependencies>



</project>
19 changes: 19 additions & 0 deletions src/main/java/by/gomel/library/exception/DaoPartException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package by.gomel.library.exception;

public class DaoPartException extends RuntimeException {

public DaoPartException() {
}

public DaoPartException(String message) {
super(message);
}

public DaoPartException(String message, Throwable cause) {
super(message, cause);
}

public DaoPartException(Throwable cause) {
super(cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package by.gomel.library.exception;

public class InitDataBaseException extends RuntimeException {
public InitDataBaseException() {
}

public InitDataBaseException(String message) {
super(message);
}

public InitDataBaseException(String message, Throwable cause) {
super(message, cause);
}

public InitDataBaseException(Throwable cause) {
super(cause);
}
}
18 changes: 18 additions & 0 deletions src/main/java/by/gomel/library/exception/TcpServerException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package by.gomel.library.exception;

public class TcpServerException extends RuntimeException {
public TcpServerException() {
}

public TcpServerException(String message) {
super(message);
}

public TcpServerException(String message, Throwable cause) {
super(message, cause);
}

public TcpServerException(Throwable cause) {
super(cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package by.gomel.novik.library.controller;

import by.gomel.novik.library.persistance.dao.bookimpl.BookJdbcDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.InputStream;

import static by.gomel.novik.library.controller.constant.CommandConstant.*;

@WebServlet(name = "AddImageServlet", urlPatterns = {"/addImage"})
@MultipartConfig
public class AddImageServlet extends HttpServlet {

BookJdbcDao bookJdbcDao = BookJdbcDao.getInstance();

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

try {

long id = Long.parseLong(request.getParameter(BOOK_ID));
Part part = null;
part = request.getPart(IMAGE);

if (part != null) {

try (InputStream inputStream = part.getInputStream()) {
bookJdbcDao.addImage(id, inputStream);
response.sendRedirect("/redirect?target=main&resp=Add image completed");

}

} else {
response.sendRedirect("/redirect?target=main&resp=Add image fail");

}

} catch (Exception e) {
response.sendRedirect("/redirect?target=main&resp=Add image fail");
}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) {

}
}
51 changes: 51 additions & 0 deletions src/main/java/by/gomel/novik/library/controller/FrontCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package by.gomel.novik.library.controller;

import by.gomel.novik.library.controller.constant.SetAttribute;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static by.gomel.novik.library.controller.constant.CommandConstant.*;

public abstract class FrontCommand implements SetAttribute {

protected ServletContext context;
protected HttpServletRequest request;
protected HttpServletResponse response;

public void init(
ServletContext servletContext,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse) {
this.context = servletContext;
this.request = servletRequest;
this.response = servletResponse;
}

public abstract void process() throws ServletException, IOException;

protected void forward(String target) throws ServletException, IOException {

setAttribute(target, request);

target = PREFIX + target + POSTFIX;
RequestDispatcher dispatcher = context.getRequestDispatcher(target);

dispatcher.forward(request, response);

}


protected void redirectWithResp(String target, String resp) throws IOException {

target = "/redirect?target=" + target + "&resp=" + resp;
response.sendRedirect(target);

}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package by.gomel.novik.library.controller;

import by.gomel.novik.library.controller.commands.UnknownCommand;
import by.gomel.novik.library.controller.constant.CommandConstant;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import static by.gomel.novik.library.controller.constant.CommandConstant.*;

@WebServlet(name = "FrontControllerServlet", urlPatterns = {"/front"})
public class FrontControllerServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException {
doFrontCommand(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
doFrontCommand(request, response);
}

private void doFrontCommand(HttpServletRequest request, HttpServletResponse response) throws IOException {
FrontCommand command = getCommand(request);
command.init(getServletContext(), request, response);
try {
command.process();
} catch (Exception e) {

response.sendRedirect(ERROR_PROCESS);

}
}

private FrontCommand getCommand(HttpServletRequest request) {
try {
Class type = Class.forName(String.format( COMMAND_PATH,
request.getParameter(COMMAND)));
return (FrontCommand) type.asSubclass(FrontCommand.class).newInstance();
} catch (Exception e) {
return new UnknownCommand();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package by.gomel.novik.library.controller;


import by.gomel.novik.library.controller.constant.SetAttribute;
import by.gomel.novik.library.temp.CurrentDate;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "RedirectServlet", urlPatterns = {"/redirect"})
public class RedirectServlet extends HttpServlet implements SetAttribute {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {



}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String target = request.getParameter("target");

if (target == null){
target = "main";
}
setAttribute(target, request);
String path = "/" + target + ".jsp";
getServletContext().getRequestDispatcher(path).forward(request, response);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package by.gomel.novik.library.controller.commands;

import by.gomel.novik.library.controller.FrontCommand;
import by.gomel.novik.library.model.*;
import by.gomel.novik.library.persistance.dao.bookimpl.AuthorJdbcDao;

import javax.servlet.ServletException;
import java.io.IOException;

import static by.gomel.novik.library.controller.constant.CommandConstant.*;

public class AddAuthorCommand extends FrontCommand {

private static final AuthorJdbcDao AUTHOR_DAO = AuthorJdbcDao.getInstance();


@Override
public void process() throws ServletException, IOException {


String author = request.getParameter(AUTHOR);

if (author != null && AUTHOR_DAO.findByAuthor(author) == null) {

AUTHOR_DAO.save(new Author(author));

redirectWithResp(ADMIN_JSP, ADD_AUTHOR_OK);

} else {

redirectWithResp(ADMIN_JSP, ADD_AUTHOR_FAIL);

}


}
}
Loading