Changeset cba33281b3d5ab568bffa467af20463764a8f7c0

Show
Ignore:
Timestamp:
03/01/08 16:09:23 (9 months ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1204384163 +0100
git-parent:

[9e4bc5e766622e597afd6c642de28b7d86e7b04d]

git-author:
Christopher Jung <bktheg@web.de> 1204384163 +0100
Message:

consign und removeFromFleet nach ShipFleet? ausgelagert

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/net/driftingsouls/ds2/server/modules/FleetMgntController.java

    r6915793 rcba3328  
    514514                 
    515515                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) ) { 
    541517                                Ship coords = (Ship)db.createQuery("from Ship where owner=? and fleet=?") 
    542518                                        .setEntity(0, newowner) 
     
    546522                                PM.send(user, newowner.getId(), "Flotte &uuml;bergeben", "Ich habe dir die Flotte "+Common._plaintitle(this.fleet.getName())+" &uuml;bergeben. Sie steht bei "+coords.getLocation()); 
    547523                 
    548                                 t.setVar("fleetmgnt.message", message+"Die Flotte wurde &uuml;bergeben"); 
     524                                t.setVar("fleetmgnt.message", ShipFleet.MESSAGE.getMessage()+"Die Flotte wurde &uuml;bergeben"); 
    549525                        } 
    550526                        else { 
    551                                 t.setVar("fleetmgnt.message", message+"Flotten&uuml;bergabe gescheitert"); 
     527                                t.setVar("fleetmgnt.message", ShipFleet.MESSAGE.getMessage()+"Flotten&uuml;bergabe gescheitert"); 
    552528                        } 
    553529                } 
  • src/net/driftingsouls/ds2/server/ships/Ship.java

    r94bdd78 rcba3328  
    30383038         */ 
    30393039        public void removeFromFleet() { 
    3040                 org.hibernate.Session db = ContextMap.getContext().getDB(); 
    3041  
    30423040                if( this.id < 0 ) { 
    30433041                        throw new UnsupportedOperationException("removeFromFleet kann nur bei Schiffen mit positiver ID ausgefuhert werden!"); 
     
    30483046                } 
    30493047 
    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&ouml;&szlig;t"); 
    3071                 } 
     3048                this.fleet.removeShip(this); 
     3049                 
     3050                MESSAGE.get().append(ShipFleet.MESSAGE.getMessage()); 
    30723051        } 
    30733052 
  • src/net/driftingsouls/ds2/server/ships/ShipFleet.java

    r6915793 rcba3328  
    2727import javax.persistence.Id; 
    2828import javax.persistence.Table; 
     29import javax.persistence.Transient; 
    2930 
    3031import net.driftingsouls.ds2.server.entities.User; 
     32import net.driftingsouls.ds2.server.framework.ContextLocalMessage; 
    3133import net.driftingsouls.ds2.server.framework.ContextMap; 
    3234 
     
    3941@Table(name="ship_fleets") 
    4042public class ShipFleet { 
     43        /** 
     44         * Objekt mit Funktionsmeldungen 
     45         */ 
     46        public static final ContextLocalMessage MESSAGE = new ContextLocalMessage(); 
     47         
    4148        @Id @GeneratedValue 
    4249        private int id; 
    4350        private String name; 
     51         
     52        @Transient 
     53        private boolean consignMode = false; 
    4454         
    4555        /** 
     
    283293                } 
    284294        } 
     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&ouml;&szlig;t"); 
     364                } 
     365        } 
    285366}