Changeset 0aa707321195c645c29ce2074d0cdd0e0354685f
- Timestamp:
- 07/13/07 17:38:39 (1 year ago)
- git-parent:
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/net/driftingsouls/ds2/server/modules/GtuZwischenLagerController.java
r283e6c7 r0aa7073 19 19 package net.driftingsouls.ds2.server.modules; 20 20 21 import java.util.Iterator; 21 22 import java.util.List; 22 23 … … 27 28 import net.driftingsouls.ds2.server.config.Faction; 28 29 import net.driftingsouls.ds2.server.config.Item; 30 import net.driftingsouls.ds2.server.entities.GtuZwischenlager; 29 31 import net.driftingsouls.ds2.server.entities.User; 30 32 import net.driftingsouls.ds2.server.framework.Common; 31 33 import net.driftingsouls.ds2.server.framework.Context; 32 import net.driftingsouls.ds2.server.framework.db.Database;33 import net.driftingsouls.ds2.server.framework.db.SQLQuery;34 import net.driftingsouls.ds2.server.framework.db.SQLResultRow;35 34 import net.driftingsouls.ds2.server.framework.pipeline.generators.DSGenerator; 36 35 import net.driftingsouls.ds2.server.framework.templates.TemplateEngine; … … 58 57 // TODO: Die ID des Handelspostens sollte per URL spezifiziert werden 59 58 public class GtuZwischenLagerController extends DSGenerator { 60 private S QLResultRowship;59 private Ship ship; 61 60 private int handel; 62 private int retryCount;63 61 64 62 /** … … 74 72 this.handel = 0; 75 73 76 this.retryCount = 0;77 78 74 parameterNumber("ship"); 79 75 } … … 81 77 @Override 82 78 protected boolean validateAndPrepare(String action) { 83 Database db = getDatabase();79 org.hibernate.Session db = getDB(); 84 80 User user = (User)this.getUser(); 85 81 TemplateEngine t = this.getTemplateEngine(); … … 87 83 int shipId = getInteger("ship"); 88 84 89 ship = db.first("SELECT * FROM ships WHERE id>0 AND owner=",user.getID()," AND id=",shipId);90 if( ship.isEmpty() ) {85 ship = (Ship)db.get(Ship.class, shipId); 86 if( (ship == null) || (ship.getId() < 0) || (ship.getOwner() != user) ) { 91 87 addError("Das angegebene Schiff existiert nicht oder gehört nicht ihnen", Common.buildUrl(getContext(), "default", "module", "schiffe") ); 92 88 … … 94 90 } 95 91 96 SQLResultRow handel = db.first("SELECT id FROM ships WHERE id>0 AND owner=",Faction.GTU," AND LOCATE('tradepost',status) AND system=",ship.getInt("system")," AND x=",ship.getInt("x")," AND y=",ship.getInt("y")); 97 if( handel.isEmpty() ) { 92 Ship handel = (Ship)db.createQuery("from Ship where id>0 and owner=? and locate('tradepost',status)!=0 and " + 93 "system=? and x=? and y=?") 94 .setInteger(0, Faction.GTU) 95 .setInteger(1, ship.getSystem()) 96 .setInteger(2, ship.getX()) 97 .setInteger(3, ship.getY()) 98 .setMaxResults(1) 99 .uniqueResult(); 100 if( handel == null ) { 98 101 addError("Es existiert kein Handelsposten in diesem Sektor", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", shipId) ); 99 102 … … 101 104 } 102 105 103 this.handel = handel.getI nt("id");106 this.handel = handel.getId(); 104 107 105 108 t.set_var( "global.shipid", shipId ); … … 115 118 */ 116 119 public void transportOwnAction() { 117 Database db = getDatabase();120 org.hibernate.Session db = getDB(); 118 121 User user = (User)this.getUser(); 119 122 TemplateEngine t = this.getTemplateEngine(); … … 122 125 int entry = getInteger("entry"); 123 126 124 SQLResultRow tradeentry = db.first("SELECT * FROM gtu_zwischenlager WHERE posten=",this.handel," AND id=",entry);125 126 if( tradeentry.isEmpty() || ((tradeentry.getInt("user1") != user.getID()) && (tradeentry.getInt("user2") != user.getID())) ) {127 addError("Es wurde kein passender Handelseintrag gefunden", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getI nt("id")) );127 GtuZwischenlager tradeentry = (GtuZwischenlager)db.get(GtuZwischenlager.class, entry); 128 129 if( (tradeentry == null) || (tradeentry.getPosten().getId() != this.handel) || ((tradeentry.getUser1() != user) && (tradeentry.getUser2() != user)) ) { 130 addError("Es wurde kein passender Handelseintrag gefunden", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getId()) ); 128 131 this.setTemplate(""); 129 132 … … 131 134 } 132 135 133 // Der Handelspartner134 User tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user2"));136 // Der Handelspartner 137 User tradepartner = tradeentry.getUser2(); 135 138 // Die (zukuenftig) eigenen Waren 136 Cargo tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo1"));137 Cargo tradecargoneed = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo1need"));139 Cargo tradecargo = tradeentry.getCargo1(); 140 Cargo tradecargoneed = tradeentry.getCargo1Need(); 138 141 // Die Bezahlung 139 Cargo owncargo = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo2"));140 Cargo owncargoneed = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo2need"));142 Cargo owncargo = tradeentry.getCargo2(); 143 Cargo owncargoneed = tradeentry.getCargo2Need(); 141 144 142 145 if( tradepartner.getID() == user.getID() ) { 143 tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user1"));144 tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo2"));145 tradecargoneed = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo2need"));146 owncargo = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo1"));147 owncargoneed = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo1need"));148 } 149 150 Cargo tmpowncargoneed = (Cargo)owncargoneed.clone();146 tradepartner = tradeentry.getUser1(); 147 tradecargo = tradeentry.getCargo2(); 148 tradecargoneed = tradeentry.getCargo2Need(); 149 owncargo = tradeentry.getCargo1(); 150 owncargoneed = tradeentry.getCargo1Need(); 151 } 152 153 Cargo tmpowncargoneed = new Cargo(owncargoneed); 151 154 152 155 tmpowncargoneed.substractCargo( owncargo ); 153 156 if( !tmpowncargoneed.isEmpty() ) { 154 addError("Sie müssen die Waren erst komplett bezahlen", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getI nt("id")) );157 addError("Sie müssen die Waren erst komplett bezahlen", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getId()) ); 155 158 this.setTemplate(""); 156 159 … … 158 161 } 159 162 160 ShipTypeData shiptype = Ship.getShipType(this.ship);161 162 Cargo shipCargo = new Cargo( Cargo.Type.STRING, ship.getString("cargo"));163 ShipTypeData shiptype = this.ship.getTypeData(); 164 165 Cargo shipCargo = new Cargo(this.ship.getCargo()); 163 166 long freecargo = shiptype.getCargo() - shipCargo.getMass(); 164 167 … … 171 174 } 172 175 else if( freecargo < tradecargo.getMass() ) { 173 transportcargo = ((Cargo)tradecargo.clone()).cutCargo( freecargo );176 transportcargo = new Cargo(tradecargo).cutCargo( freecargo ); 174 177 } 175 178 else { 176 transportcargo = (Cargo)tradecargo.clone();179 transportcargo = new Cargo(tradecargo); 177 180 } 178 181 … … 187 190 tradecargoneed.substractCargo( transportcargo ); 188 191 189 db.tBegin(); 190 db.tUpdate(1, "UPDATE ships SET cargo='",shipCargo.save(),"' WHERE id>0 AND id=",this.ship.getInt("id")," AND cargo='",shipCargo.save(true),"'"); 192 ship.setCargo(shipCargo); 191 193 192 194 if( tradecargoneed.isEmpty() && owncargo.isEmpty() ) { 193 db.tUpdate(1, "DELETE FROM gtu_zwischenlager WHERE id=",entry); 194 if( !db.tCommit() ) { 195 if( this.retryCount < 3 ) { 196 this.retryCount++; 197 this.redirect("transportOwn"); 198 199 return; 200 } 201 addError("Die Waren konnten nicht erfolgreich zum Schiff transferiert werden"); 202 } 195 db.delete(tradeentry); 203 196 204 197 t.set_var( "transferlist.backlink", 1 ); … … 207 200 } 208 201 209 if( tradeentry.get Int("user1") == user.getID()) {210 db.tUpdate(1, "UPDATE gtu_zwischenlager SET cargo1='",tradecargo.save(),"',cargo1need='",tradecargoneed.save(),"' " ,211 "WHERE id='",entry,"' AND cargo1='",tradecargo.save(true),"' AND cargo1need='",tradecargoneed.save(true),"'");202 if( tradeentry.getUser1() == user ) { 203 tradeentry.setCargo1(tradecargo); 204 tradeentry.setCargo1Need(tradecargoneed); 212 205 } 213 206 else { 214 db.tUpdate(1, "UPDATE gtu_zwischenlager SET cargo2='",tradecargo.save(),"',cargo2need='",tradecargoneed.save(),"' " , 215 "WHERE id='",entry,"' AND cargo2='",tradecargo.save(true),"' AND cargo2need='",tradecargoneed.save(true),"'"); 216 } 217 218 if( !db.tCommit() ) { 219 if( this.retryCount < 3 ) { 220 this.retryCount++; 221 this.redirect("transportOwn"); 222 223 return; 224 } 225 addError("Die Waren konnten nicht erfolgreich zum Schiff transferiert werden"); 226 } 227 207 tradeentry.setCargo2(tradecargo); 208 tradeentry.setCargo2Need(tradecargoneed); 209 } 210 228 211 this.redirect("viewEntry"); 229 212 } … … 243 226 */ 244 227 public void viewEntryAction() { 245 Database db = getDatabase();228 org.hibernate.Session db = getDB(); 246 229 User user = (User)this.getUser(); 247 230 TemplateEngine t = this.getTemplateEngine(); … … 250 233 int entry = getInteger("entry"); 251 234 252 SQLResultRow tradeentry = db.first("SELECT * FROM gtu_zwischenlager WHERE posten=",this.handel," AND id=",entry);253 254 if( tradeentry.isEmpty() || ((tradeentry.getInt("user1") != user.getID()) && (tradeentry.getInt("user2") != user.getID())) ) {255 addError("Es wurde kein passender Handelseintrag gefunden", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getI nt("id")) );235 GtuZwischenlager tradeentry = (GtuZwischenlager)db.get(GtuZwischenlager.class, entry); 236 237 if( (tradeentry == null) || (tradeentry.getPosten().getId() != this.handel) || ((tradeentry.getUser1() != user) && (tradeentry.getUser2() != user)) ) { 238 addError("Es wurde kein passender Handelseintrag gefunden", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getId()) ); 256 239 this.setTemplate(""); 257 240 … … 264 247 265 248 // Der Handelspartner 266 User tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user2"));249 User tradepartner = tradeentry.getUser2(); 267 250 // Die (zukuenftig) eigenen Waren 268 Cargo tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo1"));251 Cargo tradecargo = tradeentry.getCargo1(); 269 252 // Die Bezahlung 270 Cargo owncargo = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo2"));271 Cargo owncargoneed = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo2need"));253 Cargo owncargo = tradeentry.getCargo2(); 254 Cargo owncargoneed = tradeentry.getCargo2Need();; 272 255 273 256 if( tradepartner.getID() == user.getID() ) { 274 tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user1"));275 tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo2"));276 owncargo = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo1"));277 owncargoneed = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo1need"));278 } 279 280 t.set_var( "tradeentry.id", tradeentry.getI nt("id"),257 tradepartner = tradeentry.getUser1(); 258 tradecargo = tradeentry.getCargo2(); 259 owncargo = tradeentry.getCargo1(); 260 owncargoneed = tradeentry.getCargo1Need(); 261 } 262 263 t.set_var( "tradeentry.id", tradeentry.getId(), 281 264 "tradeentry.partner", Common._title(tradepartner.getName()), 282 265 "tradeentry.missingcargo", "", … … 301 284 @Override 302 285 public void defaultAction() { 303 Database db = getDatabase();286 org.hibernate.Session db = getDB(); 304 287 User user = (User)this.getUser(); 305 288 TemplateEngine t = this.getTemplateEngine(); … … 309 292 t.set_block("tradelist.listitem","res.listitem","res.list"); 310 293 311 SQLQuery tradeentry = db.query("SELECT * FROM gtu_zwischenlager WHERE posten=",this.handel," AND (user1=",user.getID()," OR user2=",user.getID(),")"); 312 while( tradeentry.next() ) { 313 User tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user2")); 314 Cargo tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo1")); 315 Cargo owncargo = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo2")); 316 Cargo owncargoneed = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo2need")); 317 318 if( tradepartner.getID() == user.getID() ) { 319 tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user1")); 320 tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo2")); 321 owncargo = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo1")); 322 owncargoneed = new Cargo(Cargo.Type.STRING, tradeentry.getString("cargo1need")); 294 List tradelist = db.createQuery("from GtuZwischenlager where posten=? and (user1= :user or user2= :user)") 295 .setInteger(0, this.handel) 296 .setEntity("user", user) 297 .list(); 298 for( Iterator iter=tradelist.iterator(); iter.hasNext(); ) { 299 GtuZwischenlager tradeentry = (GtuZwischenlager)iter.next(); 300 301 User tradepartner = tradeentry.getUser2(); 302 Cargo tradecargo = tradeentry.getCargo1(); 303 Cargo owncargo = tradeentry.getCargo2(); 304 Cargo owncargoneed = tradeentry.getCargo2Need(); 305 306 if( tradepartner == user ) { 307 tradepartner = tradeentry.getUser1(); 308 tradecargo = tradeentry.getCargo2(); 309 owncargo = tradeentry.getCargo1(); 310 owncargoneed = tradeentry.getCargo1Need(); 323 311 } 324 312 325 t.set_var( "list.entryid", tradeentry.getI nt("id"),313 t.set_var( "list.entryid", tradeentry.getId(), 326 314 "list.user", Common._title(tradepartner.getName()), 327 315 "res.list", "", … … 352 340 t.parse("tradelist.list","tradelist.listitem",true); 353 341 } 354 tradeentry.free();355 342 } 356 343 }
