From 04240cda532a50ebcdf0d6f316f736a663804175 Mon Sep 17 00:00:00 2001 From: SVEK Date: Tue, 26 Feb 2019 00:42:52 +0300 Subject: [PATCH] Initial commit --- .idea/compiler.xml | 14 +++ .idea/encodings.xml | 4 + .idea/misc.xml | 14 +++ .idea/uiDesigner.xml | 127 +++++++++++++++++++++++ CarsDB.sql | 12 +++ WST_Lab1.iml | 2 + pom.xml | 42 ++++++++ src/main/java/App.java | 13 +++ src/main/java/Lab1/Car.java | 59 +++++++++++ src/main/java/Lab1/CarDAO.java | 66 ++++++++++++ src/main/java/Lab1/CarWebService.java | 22 ++++ src/main/java/Lab1/ConnectionUtil.java | 31 ++++++ src/main/java/Lab1/StandaloneCarDAO.java | 11 ++ 13 files changed, 417 insertions(+) create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 CarsDB.sql create mode 100644 WST_Lab1.iml create mode 100644 pom.xml create mode 100644 src/main/java/App.java create mode 100644 src/main/java/Lab1/Car.java create mode 100644 src/main/java/Lab1/CarDAO.java create mode 100644 src/main/java/Lab1/CarWebService.java create mode 100644 src/main/java/Lab1/ConnectionUtil.java create mode 100644 src/main/java/Lab1/StandaloneCarDAO.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..8954ca3 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..15a15b2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..847b923 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..5fe4afd --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CarsDB.sql b/CarsDB.sql new file mode 100644 index 0000000..ddea690 --- /dev/null +++ b/CarsDB.sql @@ -0,0 +1,12 @@ +create table cars ( + brand varchar(100) primary key, + model varchar(100), + dateOfSales date, + country varchar(50), + power numeric +) + +insert into cars values('Dodge', 'RAM', to_date('27-09-2019', 'DD-MM-yyyy'), 'USA', 395); +insert into cars values('LADA', 'XRay', to_date('18-04-2018', 'DD-MM-yyyy'), 'Russia', 122); +insert into cars values('Nissan', 'Pathfinder', to_date('01-06-2010', 'DD-MM-yyyy'), 'Japan', 170); +insert into cars values('Cadillac', 'Escalade', to_date('21-03-2005', 'DD-MM-yyyy'), 'USA', 362); diff --git a/WST_Lab1.iml b/WST_Lab1.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/WST_Lab1.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..81c31b4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + WST + WST + 1.0-SNAPSHOT + + + + + org.postgresql + postgresql + 42.2.2 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 7 + 7 + + + + org.apache.maven.plugins + maven-war-plugin + 2.1 + + WEB-INF/classes/** + false + + + + + + + \ No newline at end of file diff --git a/src/main/java/App.java b/src/main/java/App.java new file mode 100644 index 0000000..fafe7ed --- /dev/null +++ b/src/main/java/App.java @@ -0,0 +1,13 @@ + + + +import Lab1.CarWebService; + +import javax.xml.ws.Endpoint; + +public class App { + public static void main(String[] args) { + String url = "http://localhost:8081/CarService"; + Endpoint.publish(url, new CarWebService()); + } +} diff --git a/src/main/java/Lab1/Car.java b/src/main/java/Lab1/Car.java new file mode 100644 index 0000000..688807f --- /dev/null +++ b/src/main/java/Lab1/Car.java @@ -0,0 +1,59 @@ +package Lab1; + +import java.util.Date; + +public class Car { + private String name; + private Date dateOfStart; + private String country; + private double duration; + private String director; + + public Car(String name, Date date, String country, double duration, String director) { + this.name = name; + this.dateOfStart = date; + this.country = country; + this.duration = duration; + this.director = director; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getDateOfStart() { + return dateOfStart; + } + + public void setDateOfStart(Date dateOfStart) { + this.dateOfStart = dateOfStart; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public double getDuration() { + return duration; + } + + public void setDuration(double duration) { + this.duration = duration; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } +} diff --git a/src/main/java/Lab1/CarDAO.java b/src/main/java/Lab1/CarDAO.java new file mode 100644 index 0000000..80d5dcb --- /dev/null +++ b/src/main/java/Lab1/CarDAO.java @@ -0,0 +1,66 @@ +package Lab1; + +import java.sql.*; +import java.util.*; +import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; + +public abstract class CarDAO { + + private Boolean addChecking(Object value, String fieldName, Boolean isNotFirst, StringBuilder query) { + if (value != null) { + if (isNotFirst) { + query.append(" and "); + } + if (value instanceof String) { + query.append(fieldName).append(" = '").append(value).append("'"); + } else { + query.append(fieldName).append(" = ").append(value); + } + if (!isNotFirst) { + return true; + } + } + return isNotFirst; + } + + public abstract Connection getConnection(); + + public List getDataByFields(String name, String director, String country, Date dateOfStart, Double duration) { + List cars = Collections.emptyList(); + try (Connection connection = getConnection()) { + StringBuilder query = new StringBuilder("select * from cars"); + boolean notFirstField = false; + if (name != null || director != null || country != null && dateOfStart != null || duration != null) { + query.append(" where "); + } + notFirstField = addChecking(name, "name", notFirstField, query); + notFirstField = addChecking(director, "director", notFirstField, query); + notFirstField = addChecking(country, "country", notFirstField, query); + notFirstField = addChecking(dateOfStart, "dateOfStart", notFirstField, query); + addChecking(duration, "duration", notFirstField, query); + + PreparedStatement stmt = connection.prepareStatement(query.toString()); + ResultSet rs = stmt.executeQuery(); + cars = extractFilmsFromResultSet(rs); + } catch (SQLException ex) { + Logger.getLogger(CarDAO.class.getName()).log(Level.SEVERE, null, ex); + } + return cars; + } + + private List extractFilmsFromResultSet(ResultSet rs) throws SQLException{ + List cars = new ArrayList(); + while (rs.next()) { + String name = rs.getString("name"); + Date date = rs.getDate("dateOfStart"); + String director = rs.getString("director"); + String country = rs.getString("country"); + double duration = rs.getDouble("duration"); + + Car car = new Car(name, date, country, duration, director); + cars.add(car); + } return cars; + } +} diff --git a/src/main/java/Lab1/CarWebService.java b/src/main/java/Lab1/CarWebService.java new file mode 100644 index 0000000..6674c29 --- /dev/null +++ b/src/main/java/Lab1/CarWebService.java @@ -0,0 +1,22 @@ +package Lab1; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; +import java.util.Date; +import java.util.List; + +@WebService(name = "FilmService") +public class CarWebService { + + private final static CarDAO filmDao = new StandaloneCarDAO(); + + @WebMethod + public List getFilmsByFields(@WebParam(name = "filmName") String name, + @WebParam(name = "director") String director, + @WebParam(name = "country") String country, + @WebParam(name = "dateOfStart") Date date, + @WebParam(name = "duration") Double duration) { + return filmDao.getDataByFields(name, director, country, date, duration); + } +} diff --git a/src/main/java/Lab1/ConnectionUtil.java b/src/main/java/Lab1/ConnectionUtil.java new file mode 100644 index 0000000..9bfdee5 --- /dev/null +++ b/src/main/java/Lab1/ConnectionUtil.java @@ -0,0 +1,31 @@ +package Lab1; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class ConnectionUtil { + private static final String JDBC_URL = "jdbc:postgresql://192.168.1.119:5432/"; + private static final String JDBC_USER = "postgres"; + private static final String JDBC_PASSWORD = "qwerty"; + + static { + try { + Class.forName("org.postgresql.Driver"); + } catch (ClassNotFoundException ex) { + Logger.getLogger(CarDAO.class.getName()).log(Level.SEVERE, null, ex); + } + } + public static Connection getConnection() { + Connection connection = null; + try { + connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, + JDBC_PASSWORD); + } catch (SQLException ex) { + Logger.getLogger(ConnectionUtil.class.getName()).log(Level.SEVERE, null, ex); + } + return connection; + } +} diff --git a/src/main/java/Lab1/StandaloneCarDAO.java b/src/main/java/Lab1/StandaloneCarDAO.java new file mode 100644 index 0000000..5d08f9b --- /dev/null +++ b/src/main/java/Lab1/StandaloneCarDAO.java @@ -0,0 +1,11 @@ +package Lab1; + +import java.sql.Connection; + +public class StandaloneCarDAO extends CarDAO { + + @Override + public Connection getConnection() { + return ConnectionUtil.getConnection(); + } +}