Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Server;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import Logic.DbGetter;
- import Logic.DbQuery;
- import Logic.DbUpdater;
- import Logic.ISelect;
- import Logic.IUpdate;
- import PacketSender.Command;
- import PacketSender.Packet;
- import Products.CatalogProduct;
- import Products.FlowerInProduct;
- import Users.Permission;
- import Users.User;
- import ocsf.server.AbstractServer;
- import ocsf.server.ConnectionToClient;
- public class SystemServer extends AbstractServer {
- private static final int DEFAULT_PORT = 5555;
- private String user = "root";
- private String password = "root";
- public SystemServer(int port) {
- super(port);
- }
- public void getCatalogProductsHandler(DbQuery db, Command key)
- {
- DbGetter dbGet = new DbGetter(db, key);
- dbGet.performAction(new ISelect() {
- @Override
- public String getQuery() {
- return "SELECT P.pId, C.productName, C.discount, C.image, T.typeId, T.description, P.price "
- + "FROM product P INNER JOIN ProductType T ON P.pId = T.typeId "
- + "INNER JOIN CatalogProduct C ON P.pId = C.pId";
- }
- @Override
- public Object createObject(ResultSet rs) throws SQLException {
- int id = rs.getInt(1);
- String productName = rs.getString(2);
- int discount = rs.getInt(3);
- //String image = rs.getString(4);
- int typeId = rs.getInt(5);
- double price = rs.getDouble(7);
- CatalogProduct catalogPro = new CatalogProduct(id, typeId, price, null, null, productName, discount, "");
- return (Object)catalogPro;
- }
- @Override
- public void setStatements(PreparedStatement stmt, Packet packet) throws SQLException { }
- });
- }
- // Set the user's isLogged to '1' - Assumed that user is found
- public void updateUserIsLoggedHandler(DbQuery db, Command key)
- {
- System.out.println("updateUserIsLoggedHandler");
- DbUpdater<User> dbUpdate = new DbUpdater<>(db, key);
- dbUpdate.performAction(new IUpdate<User>() {
- @Override
- public String getQuery() {
- return "UPDATE test.user"
- +" SET isLogged = ? "
- +" WHERE user = ?";
- }
- @Override
- public void setStatements(PreparedStatement stmt, User obj) throws SQLException {
- stmt.setInt(1, 1);
- stmt.setString(2, obj.getUser());
- }
- });
- }
- // Set the user's isLogged to '0' - Assumed that user is found
- public void updateUserIsLoggedToZeroHandler(DbQuery db, Command key)
- {
- System.out.println("updateUserIsLoggedToZeroHandler");
- DbUpdater<User> dbUpdate = new DbUpdater<>(db, key);
- dbUpdate.performAction(new IUpdate<User>() {
- @Override
- public String getQuery() {
- return "UPDATE test.user"
- +" SET isLogged = ? "
- +" WHERE user = ?";
- }
- @Override
- public void setStatements(PreparedStatement stmt, User obj) throws SQLException {
- stmt.setInt(1, 0);
- stmt.setString(2, obj.getUser());
- }
- });
- }
- public void getUserByUserNameHandler(DbQuery db, Command key)
- {
- System.out.println("getUserByUserNameHandler");
- DbGetter dbGet = new DbGetter(db, key);
- dbGet.performAction(new ISelect() {
- @Override
- public String getQuery() {
- return "SELECT * "
- + "FROM test.user where user = ? ";
- }
- @Override
- public Object createObject(ResultSet rs) throws SQLException {
- int uId = rs.getInt(1);
- String user =rs.getString(2);
- String password = rs.getString(3);
- int islogged = rs.getInt(4);
- String perm=rs.getString(5);
- Permission permission;
- boolean isloggedbool=(islogged==1);
- User newuser;
- if(perm.equals((Permission.Administrator).toString()))
- permission = Permission.Administrator;
- else if(perm.equals((Permission.Blocked).toString()))
- permission = Permission.Blocked;
- else
- permission = Permission.Limited;
- newuser = new User(uId, user, password, isloggedbool, permission);
- return (Object)newuser;
- }
- @Override
- public void setStatements(PreparedStatement stmt, Packet packet) throws SQLException {
- User user = (User) packet.getParameterForCommand(Command.getUsersByUserName).get(0);
- stmt.setString(1, user.getUser());
- }
- });
- }
- public void getFlowersHandler(DbQuery db, Command key)
- {
- DbGetter dbGet = new DbGetter(db, key);
- dbGet.performAction(new ISelect() {
- @Override
- public String getQuery() {
- return "SELECT FP.fId, FP.pId, FP.quantity " +
- "FROM flowerinproduct FP";
- }
- @Override
- public Object createObject(ResultSet rs) throws SQLException {
- int fId = rs.getInt(1);
- int productID = rs.getInt(2);
- int qty = rs.getInt(3);
- FlowerInProduct fp = new FlowerInProduct(fId, productID, qty);
- return (Object)fp;
- }
- @Override
- public void setStatements(PreparedStatement stmt, Packet packet) throws SQLException { }
- });
- }
- public void updateCatalogProductHandler(DbQuery db, Command key)
- {
- DbUpdater<CatalogProduct> dbUpdate = new DbUpdater<>(db, key);
- dbUpdate.performAction(new IUpdate<CatalogProduct>() {
- @Override
- public String getQuery() {
- return "UPDATE product P INNER JOIN ProductType T ON P.pId = T.typeId "
- + "INNER JOIN CatalogProduct C ON P.pId = C.pId "
- + "SET C.productName = ?, C.discount = ?, C.image = ?, P.typeId = ?, P.price = ? "
- + "WHERE P.pId = ?";
- }
- @Override
- public void setStatements(PreparedStatement stmt, CatalogProduct obj) throws SQLException {
- stmt.setString(1, obj.getName());
- stmt.setInt(2, obj.getSaleDiscountPercent());
- stmt.setString(3, obj.getImgUrl());
- stmt.setInt(4, obj.getProductTypeId());
- stmt.setDouble(5, obj.getPrice());
- stmt.setInt(6, obj.getId());
- }
- });
- }
- @Override
- protected void handleMessageFromClient(Object msg, ConnectionToClient client) {
- Packet packet = (Packet) msg;
- DbQuery db = new DbQuery(user, password, packet, client);
- for (Command key : packet.getCommands())
- {
- if (key.equals(Command.getCatalogProducts)) {
- getCatalogProductsHandler(db, key);
- }
- else if (key.equals(Command.updateCatalogProduct)) {
- updateCatalogProductHandler(db, key);
- }
- else if (key.equals(Command.getFlowers)) {
- getFlowersHandler(db, key);
- }
- else if(key.equals(Command.getUsersByUserName))
- getUserByUserNameHandler(db, key);
- else if(key.equals(Command.updateUserLoggedIn))
- updateUserIsLoggedHandler(db, key);
- else if(key.equals(Command.updateUserLoggedInToZero))
- updateUserIsLoggedToZeroHandler(db,key);
- }
- db.sendToClient();
- }
- public static void main(String[] args) {
- int port = 0; // Port to listen on
- try {
- port = Integer.parseInt(args[0]); // Get port from command line
- } catch (Throwable t) {
- port = DEFAULT_PORT; // Set port to 5555
- }
- SystemServer sc = new SystemServer(port);
- try {
- sc.listen(); // Start listening for connections
- System.out.println(String.format("Server has started listening on port: %d", port));
- } catch (Exception ex) {
- System.out.println("ERROR - Could not listen for clients!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement