Browse Source

Refactor to remove abstraction

master
MagicBot 2 years ago
parent
commit
a92ac8671b
  1. 142
      src/engine/db/handlers/dbWarehouseHandler.java

142
src/engine/db/handlers/dbWarehouseHandler.java

@ -19,7 +19,6 @@ import engine.server.MBServerStatics;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
import java.net.UnknownHostException;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -37,68 +36,71 @@ public class dbWarehouseHandler extends dbHandlerBase {
} }
public ArrayList<AbstractGameObject> CREATE_WAREHOUSE( int parentZoneID, int OwnerUUID, String name, int meshUUID, public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
Vector3fImmutable location, float meshScale, int currentHP, String type = rs.getString("type");
ProtectionState protectionState, int currentGold, int rank, switch (type) {
DateTime upgradeDate, int blueprintUUID, float w, float rotY) { case "building":
Building building = new Building(rs);
prepareCallable("CALL `WAREHOUSE_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?, ?);"); DbManager.addToCache(building);
list.add(building);
setInt(1, parentZoneID); break;
setInt(2, OwnerUUID); case "warehouse":
setString(3, name); Warehouse warehouse = new Warehouse(rs);
setInt(4, meshUUID); DbManager.addToCache(warehouse);
setFloat(5, location.x); list.add(warehouse);
setFloat(6, location.y); break;
setFloat(7, location.z);
setFloat(8, meshScale);
setInt(9, currentHP);
setString(10, protectionState.name());
setInt(11, currentGold);
setInt(12, rank);
if (upgradeDate != null) {
setTimeStamp(13, upgradeDate.getMillis());
} else {
setNULL(13, java.sql.Types.DATE);
} }
}
setInt(14, blueprintUUID); public ArrayList<AbstractGameObject> CREATE_WAREHOUSE(int parentZoneID, int OwnerUUID, String name, int meshUUID,
setFloat(15, w); Vector3fImmutable location, float meshScale, int currentHP,
setFloat(16, rotY); ProtectionState protectionState, int currentGold, int rank,
DateTime upgradeDate, int blueprintUUID, float w, float rotY) {
ArrayList<AbstractGameObject> list = new ArrayList<>(); ArrayList<AbstractGameObject> warehouseList = new ArrayList<>();
//System.out.println(this.cs.get().toString());
try { try (Connection connection = DbManager.getConnection();
boolean work = execute(); PreparedStatement preparedStatement = connection.prepareStatement("CALL `WAREHOUSE_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?, ?);")) {
if (work) {
ResultSet rs = this.callableStatement.get().getResultSet(); preparedStatement.setInt(1, parentZoneID);
while (rs.next()) { preparedStatement.setInt(2, OwnerUUID);
addObject(list, rs); preparedStatement.setString(3, name);
} preparedStatement.setInt(4, meshUUID);
rs.close(); preparedStatement.setFloat(5, location.x);
} else { preparedStatement.setFloat(6, location.y);
Logger.info("Warehouse Creation Failed: " + this.callableStatement.get().toString()); preparedStatement.setFloat(7, location.z);
return list; //city creation failure preparedStatement.setFloat(8, meshScale);
} preparedStatement.setInt(9, currentHP);
while (this.callableStatement.get().getMoreResults()) { preparedStatement.setString(10, protectionState.name());
ResultSet rs = this.callableStatement.get().getResultSet(); preparedStatement.setInt(11, currentGold);
while (rs.next()) { preparedStatement.setInt(12, rank);
addObject(list, rs);
} if (upgradeDate != null)
rs.close(); preparedStatement.setTimestamp(13, new java.sql.Timestamp(upgradeDate.getMillis()));
else
preparedStatement.setNull(13, java.sql.Types.DATE);
preparedStatement.setInt(14, blueprintUUID);
preparedStatement.setFloat(15, w);
preparedStatement.setFloat(16, rotY);
preparedStatement.execute();
ResultSet rs = preparedStatement.getResultSet();
while (rs.next())
addObject(warehouseList, rs);
while (preparedStatement.getMoreResults()) {
rs = preparedStatement.getResultSet();
while (rs.next())
addObject(warehouseList, rs);
} }
} catch (SQLException e) { } catch (SQLException e) {
Logger.info("Warehouse Creation Failed, SQLException: " + this.callableStatement.get().toString() + e.toString()); Logger.error(e);
return list; //city creation failure
} catch (UnknownHostException e) {
Logger.info("Warehouse Creation Failed, UnknownHostException: " + this.callableStatement.get().toString());
return list; //city creation failure
} finally {
closeCallable();
} }
return list;
return warehouseList;
} }
public boolean updateLocks(final Warehouse wh, long locks) { public boolean updateLocks(final Warehouse wh, long locks) {
@ -117,7 +119,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
return false; return false;
} }
public boolean updateGold(final Warehouse wh, int amount ) { public boolean updateGold(final Warehouse wh, int amount) {
prepareCallable("UPDATE `obj_warehouse` SET `warehouse_gold`=? WHERE `UID` = ?"); prepareCallable("UPDATE `obj_warehouse` SET `warehouse_gold`=? WHERE `UID` = ?");
setInt(1, amount); setInt(1, amount);
setInt(2, wh.getUID()); setInt(2, wh.getUID());
@ -268,7 +270,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
return (executeUpdate() != 0); return (executeUpdate() != 0);
} }
public boolean updateWormwood(final Warehouse wh, int amount ) { public boolean updateWormwood(final Warehouse wh, int amount) {
prepareCallable("UPDATE `obj_warehouse` SET `warehouse_wormwood`=? WHERE `UID` = ?"); prepareCallable("UPDATE `obj_warehouse` SET `warehouse_wormwood`=? WHERE `UID` = ?");
setInt(1, amount); setInt(1, amount);
setInt(2, wh.getUID()); setInt(2, wh.getUID());
@ -300,7 +302,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
return (executeUpdate() != 0); return (executeUpdate() != 0);
} }
public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType,Resource resource, int amount,DateTime date){ public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, Resource resource, int amount, DateTime date) {
Transaction transactions = null; Transaction transactions = null;
prepareCallable("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)"); prepareCallable("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)");
setLong(1, warehouseBuildingID); setLong(1, warehouseBuildingID);
@ -308,27 +310,11 @@ public class dbWarehouseHandler extends dbHandlerBase {
setLong(3, targetUUID); setLong(3, targetUUID);
setString(4, transactionType.name()); setString(4, transactionType.name());
setString(5, resource.name()); setString(5, resource.name());
setInt(6,amount); setInt(6, amount);
setTimeStamp(7,date.getMillis()); setTimeStamp(7, date.getMillis());
return (executeUpdate() != 0); return (executeUpdate() != 0);
} }
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException, UnknownHostException {
String type = rs.getString("type");
switch (type) {
case "building":
Building building = new Building(rs);
DbManager.addToCache(building);
list.add(building);
break;
case "warehouse":
Warehouse warehouse = new Warehouse(rs);
DbManager.addToCache(warehouse);
list.add(warehouse);
break;
}
}
public ArrayList<Transaction> GET_TRANSACTIONS_FOR_WAREHOUSE(final int warehouseUUID) { public ArrayList<Transaction> GET_TRANSACTIONS_FOR_WAREHOUSE(final int warehouseUUID) {
ArrayList<Transaction> transactionsList = new ArrayList<>(); ArrayList<Transaction> transactionsList = new ArrayList<>();
prepareCallable("SELECT * FROM dyn_warehouse_transactions WHERE `warehouseUID` = ?;"); prepareCallable("SELECT * FROM dyn_warehouse_transactions WHERE `warehouseUID` = ?;");
@ -343,7 +329,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
} }
} catch (SQLException e) { } catch (SQLException e) {
Logger.error( e.getErrorCode() + ' ' + e.getMessage(), e); Logger.error(e.getErrorCode() + ' ' + e.getMessage(), e);
} finally { } finally {
closeCallable(); closeCallable();
} }

Loading…
Cancel
Save