This commit is contained in:
2019-04-18 14:41:45 +02:00
parent 76eea1b8f7
commit 45b415cedf
3 changed files with 201 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
package Lab5;
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(CarCrudResource.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();
}
}
+61
View File
@@ -0,0 +1,61 @@
package Lab5;
//import Lab2.CheckStatus;
import Lab4.common.Car;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Date;
import java.util.List;
@Path("/cars")
@Produces({MediaType.APPLICATION_JSON})
public class CarCrudResource {
private final static CarsDAO carDao = new CarsDAO();
/// Find
@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);
}
/// seve
@POST
@Path("/saves")
public String insertCars(@QueryParam("Name") String name,
@QueryParam("model") String model,
@QueryParam("country") String country,
@QueryParam("dateOfSales") Date dateOfSales,
@QueryParam("power") Integer power) {
return carDao.insertDB(name, model, country, dateOfSales, power).toString();
}
/// Update id
@PUT
@Path("/update/ID")
public String updateCars(@QueryParam("id") Integer id,
@QueryParam("Name") String name,
@QueryParam("model") String model,
@QueryParam("country") String country,
@QueryParam("dateOfSales") Date dateOfSales,
@QueryParam("power") Integer power) {
return String.valueOf(carDao.updateDB(id, name, model, country, dateOfSales, power));
}
/// Delete
@Path("/delete/ID")
@DELETE
public String deleteCars(@QueryParam("id") Integer id) {
return carDao.deleteDB(id).getStringValue();
}
}
+106
View File
@@ -0,0 +1,106 @@
package Lab5;
import Lab1.CarDAO;
import Lab1.ConnectionUtil;
import Lab2.CheckStatus;
import Lab4.common.StandaloneCarDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
public class CarsDAO extends StandaloneCarDAO {
public static Integer insertDB(String name, String model, String country, Date dateOfSales, int power) {
String query = " insert into cars (name, model, country, dateOfSales, power)"
+ " values (?, ?, ?, ?, ?)";
int index = 1;
Integer id = null;
try (Connection connection = ConnectionUtil.getConnection();) {
try (PreparedStatement preparedStmt = connection.prepareStatement(query)) {
preparedStmt.setString(index++, name);
preparedStmt.setString(index++, model);
preparedStmt.setDate(index++, dateOfSales != null
? new java.sql.Date(dateOfSales.getTime())
: null);
preparedStmt.setString(index++, country);
preparedStmt.setObject(index, power);
preparedStmt.executeUpdate();
try (ResultSet result = connection.createStatement().executeQuery("select max(id) as maxid from cars")) {
result.next();
id = result.getInt("maxid");
}
}
} catch (SQLException ex) {
Logger.getLogger(CarDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return id;
}
private static void addUpdated(Object value, String fieldName, StringBuilder query) {
if (value != null) {
if (value instanceof String) {
query.append(fieldName).append(" = '").append(value).append("'").append(", ");
} else {
query.append(fieldName).append(" = ").append(value).append(',');
}
}
}
public static CheckStatus updateDB(Integer id, String name, String model, String country, Date dateOfSales, int power) {
StringBuilder query = new StringBuilder(" update cars set ");
addUpdated(name, "name", query);
addUpdated(model, "model", query);
addUpdated(country, "country", query);
addUpdated(dateOfSales, "dateOfSales", query);
addUpdated(power, "power", query);
query.replace(query.lastIndexOf("."), query.length(), " ");
query.append(" where id = " + id);
try (Connection connection = ConnectionUtil.getConnection();) {
try (PreparedStatement preparedStmt = connection.prepareStatement(query.toString())) {
preparedStmt.executeUpdate();
}
} catch (SQLException ex) {
Logger.getLogger(CarDAO.class.getName()).log(Level.SEVERE, null, ex);
return CheckStatus.FAIL;
}
return CheckStatus.SUCCESS_UPDATE;
}
public static CheckStatus deleteDB(Integer id) {
String query = "DELETE FROM cars WHERE id = " + id;
try (Connection connection = ConnectionUtil.getConnection()) {
try (PreparedStatement preparedStmt = connection.prepareStatement(query)) {
preparedStmt.executeUpdate();
}
} catch (SQLException ex) {
Logger.getLogger(CarDAO.class.getName()).log(Level.SEVERE, null, ex);
return CheckStatus.FAIL;
}
return CheckStatus.SUCCESS_DELETE;
}
public boolean findID(Integer id) {
boolean isIdPresent = false;
String query = "select count(*) from cars where id = ?";
try (Connection connection = ConnectionUtil.getConnection()) {
try (PreparedStatement ps = connection.prepareStatement(query)) {
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
isIdPresent = rs.getInt(1) == 1;
}
}
} catch (SQLException ex) {
Logger.getLogger(CarsDAO.class.getName()).log(Level.SEVERE, null, ex);
} finally {
return isIdPresent;
}
}
}