Changeset cba33281b3d5ab568bffa467af20463764a8f7c0
- Timestamp:
- 03/01/08 16:09:23 (9 months ago)
- git-parent:
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/net/driftingsouls/ds2/server/modules/FleetMgntController.java
r6915793 rcba3328 514 514 515 515 if( newowner != null ) { 516 StringBuilder message = new StringBuilder(100); 517 int count = 0; 518 519 List<Integer> idlist = new ArrayList<Integer>(); 520 521 List shiplist = db.createQuery("from Ship where fleet=? and battle is null" ) 522 .setInteger(0, this.fleet.getId()) 523 .list(); 524 for( Iterator iter=shiplist.iterator(); iter.hasNext(); ) { 525 Ship aship = (Ship)iter.next(); 526 boolean tmp = aship.consign(newowner, false ); 527 528 String msg = Ship.MESSAGE.getMessage(); 529 if( msg.length() > 0 ) { 530 message.append(msg+"<br />"); 531 } 532 if( !tmp ) { 533 count++; 534 idlist.add(aship.getId()); 535 aship.setFleet(this.fleet); 536 } 537 } 538 539 if( count != 0 ) { 540 // Da die Schiffe beim uebergeben aus der Flotte geschmissen werden, muessen wir sie nun wieder hinein tun 516 if( this.fleet.consign(newowner) ) { 541 517 Ship coords = (Ship)db.createQuery("from Ship where owner=? and fleet=?") 542 518 .setEntity(0, newowner) … … 546 522 PM.send(user, newowner.getId(), "Flotte übergeben", "Ich habe dir die Flotte "+Common._plaintitle(this.fleet.getName())+" übergeben. Sie steht bei "+coords.getLocation()); 547 523 548 t.setVar("fleetmgnt.message", message+"Die Flotte wurde übergeben");524 t.setVar("fleetmgnt.message", ShipFleet.MESSAGE.getMessage()+"Die Flotte wurde übergeben"); 549 525 } 550 526 else { 551 t.setVar("fleetmgnt.message", message+"Flottenübergabe gescheitert");527 t.setVar("fleetmgnt.message", ShipFleet.MESSAGE.getMessage()+"Flottenübergabe gescheitert"); 552 528 } 553 529 } src/net/driftingsouls/ds2/server/ships/Ship.java
r94bdd78 rcba3328 3038 3038 */ 3039 3039 public void removeFromFleet() { 3040 org.hibernate.Session db = ContextMap.getContext().getDB();3041 3042 3040 if( this.id < 0 ) { 3043 3041 throw new UnsupportedOperationException("removeFromFleet kann nur bei Schiffen mit positiver ID ausgefuhert werden!"); … … 3048 3046 } 3049 3047 3050 int fleetcount = ((Number)db.createQuery("select count(*) from Ship where fleet=? and id>0") 3051 .setInteger(0, fleet.getId()) 3052 .iterate().next()).intValue(); 3053 3054 if( fleetcount > 2 ) { 3055 this.fleet = null; 3056 MESSAGE.get().append("aus der Flotte ausgetreten"); 3057 } 3058 else { 3059 final ShipFleet fleet = this.fleet; 3060 3061 final Iterator shipIter = db.createQuery("from Ship where fleet=?") 3062 .setEntity(0, this.fleet) 3063 .iterate(); 3064 while( shipIter.hasNext() ) { 3065 Ship aship = (Ship)shipIter.next(); 3066 aship.setFleet(null); 3067 } 3068 3069 db.delete(fleet); 3070 MESSAGE.get().append("Flotte aufgelößt"); 3071 } 3048 this.fleet.removeShip(this); 3049 3050 MESSAGE.get().append(ShipFleet.MESSAGE.getMessage()); 3072 3051 } 3073 3052 src/net/driftingsouls/ds2/server/ships/ShipFleet.java
r6915793 rcba3328 27 27 import javax.persistence.Id; 28 28 import javax.persistence.Table; 29 import javax.persistence.Transient; 29 30 30 31 import net.driftingsouls.ds2.server.entities.User; 32 import net.driftingsouls.ds2.server.framework.ContextLocalMessage; 31 33 import net.driftingsouls.ds2.server.framework.ContextMap; 32 34 … … 39 41 @Table(name="ship_fleets") 40 42 public class ShipFleet { 43 /** 44 * Objekt mit Funktionsmeldungen 45 */ 46 public static final ContextLocalMessage MESSAGE = new ContextLocalMessage(); 47 41 48 @Id @GeneratedValue 42 49 private int id; 43 50 private String name; 51 52 @Transient 53 private boolean consignMode = false; 44 54 45 55 /** … … 283 293 } 284 294 } 295 296 /** 297 * Uebergibt alle Schiffe der Flotte an den angegebenen Spieler. Meldungen 298 * werden dabei nach {@link #MESSAGE} geschrieben. 299 * @param newowner Der neue Besitzer. 300 * @return <code>true</code>, falls mindestens ein Schiff der Flotte uebergeben werden konnte 301 */ 302 public boolean consign(User newowner) { 303 org.hibernate.Session db = ContextMap.getContext().getDB(); 304 305 int count = 0; 306 307 this.consignMode = true; 308 try { 309 List shiplist = db.createQuery("from Ship where fleet=? and battle is null" ) 310 .setInteger(0, this.id) 311 .list(); 312 for( Iterator iter=shiplist.iterator(); iter.hasNext(); ) { 313 Ship aship = (Ship)iter.next(); 314 boolean tmp = aship.consign(newowner, false ); 315 316 String msg = Ship.MESSAGE.getMessage(); 317 if( msg.length() > 0 ) { 318 MESSAGE.get().append(msg+"<br />"); 319 } 320 if( !tmp ) { 321 count++; 322 aship.setFleet(this); 323 } 324 } 325 } 326 finally { 327 this.consignMode = false; 328 } 329 330 return count > 0; 331 } 332 333 /** 334 * Entfernt ein Schiff aus der Flotte. Slotte die Flotte anschliessend zu wenige Schiffe haben 335 * wird sie aufgeloesst. 336 * @param ship Das Schiff 337 */ 338 public void removeShip(Ship ship) { 339 if( !this.equals(ship.getFleet()) ) { 340 throw new IllegalArgumentException("Das Schiff gehoert nicht zu dieser Flotte"); 341 } 342 343 org.hibernate.Session db = ContextMap.getContext().getDB(); 344 345 int fleetcount = ((Number)db.createQuery("select count(*) from Ship where fleet=? and id>0") 346 .setInteger(0, this.id) 347 .iterate().next()).intValue(); 348 349 if( fleetcount > 2 || this.consignMode ) { 350 ship.setFleet(null); 351 MESSAGE.get().append("aus der Flotte ausgetreten"); 352 } 353 else { 354 final Iterator shipIter = db.createQuery("from Ship where fleet=?") 355 .setEntity(0, this) 356 .iterate(); 357 while( shipIter.hasNext() ) { 358 Ship aship = (Ship)shipIter.next(); 359 aship.setFleet(null); 360 } 361 362 db.delete(this); 363 MESSAGE.get().append("Flotte aufgelößt"); 364 } 365 } 285 366 }
