Changeset 0aa707321195c645c29ce2074d0cdd0e0354685f

Show
Ignore:
Timestamp:
07/13/07 17:38:39 (1 year ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1184341119 +0200
git-parent:

[7990d11a9744902c50ac3585d2f94d16bb8e9e71]

git-author:
Christopher Jung <bktheg@web.de> 1184341119 +0200
Message:

Umstellung auf Hibernate

Files:

Legend:

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

    r283e6c7 r0aa7073  
    1919package net.driftingsouls.ds2.server.modules; 
    2020 
     21import java.util.Iterator; 
    2122import java.util.List; 
    2223 
     
    2728import net.driftingsouls.ds2.server.config.Faction; 
    2829import net.driftingsouls.ds2.server.config.Item; 
     30import net.driftingsouls.ds2.server.entities.GtuZwischenlager; 
    2931import net.driftingsouls.ds2.server.entities.User; 
    3032import net.driftingsouls.ds2.server.framework.Common; 
    3133import 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; 
    3534import net.driftingsouls.ds2.server.framework.pipeline.generators.DSGenerator; 
    3635import net.driftingsouls.ds2.server.framework.templates.TemplateEngine; 
     
    5857// TODO: Die ID des Handelspostens sollte per URL spezifiziert werden 
    5958public class GtuZwischenLagerController extends DSGenerator { 
    60         private SQLResultRow ship; 
     59        private Ship ship; 
    6160        private int handel; 
    62         private int retryCount; 
    6361                 
    6462        /** 
     
    7472                this.handel = 0; 
    7573                 
    76                 this.retryCount = 0; 
    77                  
    7874                parameterNumber("ship"); 
    7975        } 
     
    8177        @Override 
    8278        protected boolean validateAndPrepare(String action) { 
    83                 Database db = getDatabase(); 
     79                org.hibernate.Session db = getDB(); 
    8480                User user = (User)this.getUser(); 
    8581                TemplateEngine t = this.getTemplateEngine(); 
     
    8783                int shipId = getInteger("ship"); 
    8884                 
    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) ) { 
    9187                        addError("Das angegebene Schiff existiert nicht oder geh&ouml;rt nicht ihnen", Common.buildUrl(getContext(), "default", "module", "schiffe") ); 
    9288                         
     
    9490                } 
    9591 
    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 ) { 
    98101                        addError("Es existiert kein Handelsposten in diesem Sektor", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", shipId) ); 
    99102                         
     
    101104                } 
    102105                 
    103                 this.handel = handel.getInt("id"); 
     106                this.handel = handel.getId(); 
    104107                 
    105108                t.set_var( "global.shipid", shipId ); 
     
    115118         */ 
    116119        public void transportOwnAction() { 
    117                 Database db = getDatabase(); 
     120                org.hibernate.Session db = getDB(); 
    118121                User user = (User)this.getUser(); 
    119122                TemplateEngine t = this.getTemplateEngine(); 
     
    122125                int entry = getInteger("entry"); 
    123126                 
    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.getInt("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()) ); 
    128131                        this.setTemplate(""); 
    129132                         
     
    131134                } 
    132135                 
    133                 // Der Handelspartner 
    134                 User tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user2")); 
     136                // Der Handelspartner 
     137                User tradepartner = tradeentry.getUser2(); 
    135138                // 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(); 
    138141                // 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(); 
    141144         
    142145                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); 
    151154                 
    152155                tmpowncargoneed.substractCargo( owncargo ); 
    153156                if( !tmpowncargoneed.isEmpty() ) { 
    154                         addError("Sie m&uuml;ssen die Waren erst komplett bezahlen", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getInt("id")) ); 
     157                        addError("Sie m&uuml;ssen die Waren erst komplett bezahlen", Common.buildUrl(getContext(), "default", "module", "schiff", "ship", this.ship.getId()) ); 
    155158                        this.setTemplate(""); 
    156159                         
     
    158161                } 
    159162                         
    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()); 
    163166                long freecargo = shiptype.getCargo() - shipCargo.getMass(); 
    164167 
     
    171174                }        
    172175                else if( freecargo < tradecargo.getMass() ) { 
    173                         transportcargo = ((Cargo)tradecargo.clone()).cutCargo( freecargo );    
     176                        transportcargo = new Cargo(tradecargo).cutCargo( freecargo );  
    174177                } 
    175178                else { 
    176                         transportcargo = (Cargo)tradecargo.clone();    
     179                        transportcargo = new Cargo(tradecargo);        
    177180                }                
    178181 
     
    187190                tradecargoneed.substractCargo( transportcargo ); 
    188191                 
    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); 
    191193 
    192194                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); 
    203196                         
    204197                        t.set_var( "transferlist.backlink", 1 ); 
     
    207200                } 
    208201                 
    209                 if( tradeentry.getInt("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); 
    212205                } 
    213206                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 
    228211                this.redirect("viewEntry"); 
    229212        } 
     
    243226         */ 
    244227        public void viewEntryAction() { 
    245                 Database db = getDatabase(); 
     228                org.hibernate.Session db = getDB(); 
    246229                User user = (User)this.getUser(); 
    247230                TemplateEngine t = this.getTemplateEngine(); 
     
    250233                int entry = getInteger("entry"); 
    251234                 
    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.getInt("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()) ); 
    256239                        this.setTemplate(""); 
    257240                         
     
    264247         
    265248                // Der Handelspartner 
    266                 User tradepartner = (User)getContext().getDB().get(User.class, tradeentry.getInt("user2")); 
     249                User tradepartner = tradeentry.getUser2(); 
    267250                // Die (zukuenftig) eigenen Waren 
    268                 Cargo tradecargo = new Cargo(Cargo.Type.STRING,tradeentry.getString("cargo1")); 
     251                Cargo tradecargo = tradeentry.getCargo1(); 
    269252                // 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();
    272255         
    273256                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.getInt("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(), 
    281264                                        "tradeentry.partner",           Common._title(tradepartner.getName()), 
    282265                                        "tradeentry.missingcargo",      "", 
     
    301284        @Override 
    302285        public void defaultAction() { 
    303                 Database db = getDatabase(); 
     286                org.hibernate.Session db = getDB(); 
    304287                User user = (User)this.getUser(); 
    305288                TemplateEngine t = this.getTemplateEngine(); 
     
    309292                t.set_block("tradelist.listitem","res.listitem","res.list"); 
    310293         
    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(); 
    323311                        } 
    324312                 
    325                         t.set_var(      "list.entryid",                 tradeentry.getInt("id"), 
     313                        t.set_var(      "list.entryid",                 tradeentry.getId(), 
    326314                                                "list.user",                    Common._title(tradepartner.getName()), 
    327315                                                "res.list",                             "", 
     
    352340                        t.parse("tradelist.list","tradelist.listitem",true); 
    353341                } 
    354                 tradeentry.free(); 
    355342        } 
    356343}