This commit is contained in:
2019-04-17 17:37:17 +02:00
parent 5947a358a3
commit 76eea1b8f7
6 changed files with 237 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
package Lab4;
import Lab4.common.CarResource;
import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
import com.sun.jersey.api.core.ClassNamesResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;
import org.glassfish.grizzly.http.server.HttpServer;
import java.io.IOException;
import java.net.URI;
public class App {
private static final URI BASE_URI = URI.create("http://localhost:8081/rest/");
public static void main(String[] args) {
HttpServer server = null;
try {
ResourceConfig resourceConfig = new ClassNamesResourceConfig(CarResource.class);
server = GrizzlyServerFactory.createHttpServer(BASE_URI, resourceConfig);
server.start();
System.in.read();
stopServer(server);
} catch (IOException e) {
e.printStackTrace();
stopServer(server);
}
}
private static void stopServer(HttpServer server) {
if (server != null)
server.stop();
}
}
+64
View File
@@ -0,0 +1,64 @@
package Lab4.common;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;
@XmlRootElement
public class Car {
private String name;
private Date dateOfSales;
private String country;
private double power;
private String model;
public Car(String name, Date date, String country, double power, String model) {
this.name = name;
this.dateOfSales = date;
this.country = country;
this.power = power;
this.model = model;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getdateOfSales() {
return dateOfSales;
}
public void setdateOfSales(Date dateOfSales) {
this.dateOfSales = dateOfSales;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public double getpower() {
return power;
}
public void setpower(double power) {
this.power = power;
}
public String getmodel() {
return model;
}
public void setmodel(String model) {
this.model = model;
}
}
+66
View File
@@ -0,0 +1,66 @@
package Lab4.common;
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 CheckIN(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<Car> getDataByFields(String name, String model, String country, Date dateOfSales, Integer power) {
List<Car> cars = Collections.emptyList();
try (Connection connection = getConnection()) {
StringBuilder query = new StringBuilder("select * from cars");
boolean notFirstField = false;
if (name != null || model != null || country != null && dateOfSales != null || power != 0) {
query.append(" where ");
}
notFirstField = CheckIN(name, "name", notFirstField, query);
notFirstField = CheckIN(model, "model", notFirstField, query);
notFirstField = CheckIN(country, "country", notFirstField, query);
notFirstField = CheckIN(dateOfSales, "dateOfSales", notFirstField, query);
CheckIN(power, "power", notFirstField, query);
PreparedStatement stmt = connection.prepareStatement(query.toString());
ResultSet rs = stmt.executeQuery();
cars = extractCarsFromResult(rs);
} catch (SQLException ex) {
Logger.getLogger(CarDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return cars;
}
private List<Car> extractCarsFromResult(ResultSet rs) throws SQLException{
List<Car> cars = new ArrayList<Car>();
while (rs.next()) {
String name = rs.getString("name");
Date date = rs.getDate("dateOfSales");
String model = rs.getString("model");
String country = rs.getString("country");
double power = rs.getDouble("power");
Car car = new Car(name, date, country, power, model);
cars.add(car);
} return cars;
}
}
@@ -0,0 +1,29 @@
package Lab4.common;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.util.Date;
import java.util.List;
@Path("/cars")
@Produces({MediaType.APPLICATION_JSON})
public class CarResource {
private final static CarDAO carDao = new StandaloneCarDAO();
@GET
public List<Car> findCars(@QueryParam("Name") String name,
@QueryParam("model") String model,
@QueryParam("country") String country,
@QueryParam("dateOfSales") Date dateOfSales,
@QueryParam("power") Integer power) {
return carDao.getDataByFields(name, model, country, dateOfSales, power);
}
}
@@ -0,0 +1,34 @@
package Lab4.common;
//import Lab1.CarDAO;
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_URL = "jdbc:postgresql://5.19.136.134: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;
}
}
@@ -0,0 +1,11 @@
package Lab4.common;
import java.sql.Connection;
public class StandaloneCarDAO extends CarDAO {
@Override
public Connection getConnection() {
return ConnectionUtil.getConnection();
}
}