Changeset 7a2d453af35dcca82feb66bc4c5bdcd6352ad4e8

Show
Ignore:
Timestamp:
06/24/07 14:05:29 (2 years ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1182686729 +0200
git-parent:

[e0917e794a3fb8de497bf97854c6943e76e016bf]

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

Weitere Umstellungen auf Hibernate

Files:

Legend:

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

    rd0533dd r7a2d453  
    2222import java.util.Map; 
    2323 
    24 import net.driftingsouls.ds2.server.Location; 
    2524import net.driftingsouls.ds2.server.bases.Base; 
    2625import net.driftingsouls.ds2.server.cargo.Cargo; 
  • src/net/driftingsouls/ds2/server/modules/NPCOrderController.java

    r283e6c7 r7a2d453  
    22 
    33import java.util.HashMap; 
     4import java.util.Iterator; 
     5import java.util.List; 
    46import java.util.Map; 
    57 
     
    1113import net.driftingsouls.ds2.server.config.Medals; 
    1214import net.driftingsouls.ds2.server.config.Rassen; 
     15import net.driftingsouls.ds2.server.entities.FactionShopOrder; 
    1316import net.driftingsouls.ds2.server.entities.User; 
    1417import net.driftingsouls.ds2.server.framework.Common; 
     
    7477         */ 
    7578        public void viewTransportsAction() { 
    76                 Database db = getDatabase(); 
     79                org.hibernate.Session db = getDB(); 
    7780                TemplateEngine t = this.getTemplateEngine(); 
    7881                User user = (User)this.getUser(); 
     
    8689                t.set_block("_NPCORDER", "transports.listitem", "transports.list"); 
    8790                 
    88                 SQLQuery aship = db.query("SELECT * FROM ships WHERE owner="+user.getID()+" AND LOCATE('#!/tm gany_transport',destcom)"); 
    89                 while( aship.next() ) { 
    90                         ShipTypeData ashiptype = Ship.getShipType(aship.getRow()); 
    91                          
    92                         t.set_var(      "transport.ship",               Common._plaintitle(aship.getString("name")), 
    93                                                 "transport.ship.id",    aship.getInt("id"), 
     91                List ships = db.createQuery("from Ship where owner=? and locate('#!/tm gany_transport',destcom)!=0") 
     92                        .setEntity(0, user) 
     93                        .list(); 
     94                for( Iterator iter=ships.iterator(); iter.hasNext(); ) { 
     95                        Ship aship = (Ship)iter.next(); 
     96                        ShipTypeData ashiptype = aship.getTypeData(); 
     97                         
     98                        t.set_var(      "transport.ship",               Common._plaintitle(aship.getName()), 
     99                                                "transport.ship.id",    aship.getId(), 
    94100                                                "transport.ship.picture",       ashiptype.getPicture(), 
    95101                                                "transport.status",             "langeweile", 
     
    97103                                                                 
    98104                        Taskmanager taskmanager = Taskmanager.getInstance(); 
    99                         Task[] tasks = taskmanager.getTasksByData(Taskmanager.Types.GANY_TRANSPORT, "*", Integer.toString(aship.getInt("id")), "*"); 
     105                        Task[] tasks = taskmanager.getTasksByData(Taskmanager.Types.GANY_TRANSPORT, "*", Integer.toString(aship.getId()), "*"); 
    100106                        if( tasks.length == 0 ) { 
    101107                                t.parse("transports.list", "transports.listitem", true); 
     
    118124                        t.set_var("transport.status", status); 
    119125                         
    120                         SQLResultRow order = db.first("SELECT * FROM factions_shop_orders WHERE id="+Integer.parseInt(task.getData1())); 
    121                          
    122                         User orderuser = (User)getDB().get(User.class, order.getInt("user_id")); 
    123                          
    124                         t.set_var("transport.assignment", order.getInt("id")+": "+Common._title(orderuser.getName())+"<br />"+order.getString("adddata")); 
     126                        FactionShopOrder order = (FactionShopOrder)db.get(FactionShopOrder.class, Integer.parseInt(task.getData1())); 
     127                         
     128                        User orderuser = order.getUser(); 
     129                         
     130                        t.set_var("transport.assignment", order.getId()+": "+Common._title(orderuser.getName())+"<br />"+order.getAddData()); 
    125131                                                         
    126132                        t.parse("transports.list", "transports.listitem", true); 
    127133                } 
    128                 aship.free(); 
    129134        } 
    130135 
  • src/net/driftingsouls/ds2/server/modules/UeberController.java

    rca92ef8 r7a2d453  
    2424import java.sql.Blob; 
    2525import java.util.ArrayList; 
     26import java.util.Iterator; 
    2627import java.util.List; 
    2728 
     
    547548                        t.set_var("show.bookmarks",1); 
    548549         
    549                         SQLQuery bookmark = db.query("SELECT id,name,x,y,system,destx,desty,destsystem,destcom,status,type FROM ships WHERE id>0 AND bookmark=1 AND owner=",user.getID()," ORDER BY id DESC"); 
    550                         while( bookmark.next() ) { 
    551                                 ShipTypeData shiptype = Ship.getShipType( bookmark.getRow() ); 
    552                                 t.set_var(      "bookmark.shipid",              bookmark.getInt("id"), 
    553                                                         "bookmark.shipname",    bookmark.getString("name"), 
    554                                                         "bookmark.location",    Ships.getLocationText(Location.fromResult(bookmark.getRow()), false), 
     550                        List bookmarks = getDB().createQuery("from Ship where id>0 and bookmark=1 and owner=? order by id desc") 
     551                                .setEntity(0, user) 
     552                                .list(); 
     553                        for( Iterator iter=bookmarks.iterator(); iter.hasNext(); ) { 
     554                                Ship bookmark = (Ship)iter.next(); 
     555                                ShipTypeData shiptype = bookmark.getTypeData(); 
     556                                t.set_var(      "bookmark.shipid",              bookmark.getId(), 
     557                                                        "bookmark.shipname",    bookmark.getName(), 
     558                                                        "bookmark.location",    Ships.getLocationText(bookmark.getLocation(), false), 
    555559                                                        "bookmark.shiptype",    shiptype.getNickname(), 
    556                                                         "bookmark.description", bookmark.getInt("destsystem")+":"+bookmark.getInt("destx")+"/"+bookmark.getInt("desty")+"<br />"+bookmark.getString("destcom").replace("\r\n","<br />") ); 
     560                                                        "bookmark.description", bookmark.getDestSystem()+":"+bookmark.getDestX()+"/"+bookmark.getDestY()+"<br />"+bookmark.getDestCom().replace("\r\n","<br />") ); 
    557561                                t.parse("bookmarks.list","bookmarks.listitem",true); 
    558562                        } 
    559                         bookmark.free(); 
    560563                } 
    561564                else if( box.equals("fleets") ) { 
  • src/net/driftingsouls/ds2/server/tick/regular/NPCOrderTick.java

    r283e6c7 r7a2d453  
    2323import java.util.ArrayList; 
    2424import java.util.HashMap; 
     25import java.util.Iterator; 
    2526import java.util.List; 
    2627import java.util.Map; 
     
    2829import net.driftingsouls.ds2.server.ContextCommon; 
    2930import net.driftingsouls.ds2.server.Location; 
     31import net.driftingsouls.ds2.server.Offizier; 
     32import net.driftingsouls.ds2.server.bases.Base; 
    3033import net.driftingsouls.ds2.server.cargo.Cargo; 
    3134import net.driftingsouls.ds2.server.cargo.Resources; 
     
    3336import net.driftingsouls.ds2.server.config.Rasse; 
    3437import net.driftingsouls.ds2.server.config.Rassen; 
     38import net.driftingsouls.ds2.server.entities.Order; 
     39import net.driftingsouls.ds2.server.entities.OrderOffizier; 
    3540import net.driftingsouls.ds2.server.entities.User; 
    3641import net.driftingsouls.ds2.server.framework.Common; 
    3742import net.driftingsouls.ds2.server.framework.db.Database; 
    38 import net.driftingsouls.ds2.server.framework.db.SQLQuery; 
    39 import net.driftingsouls.ds2.server.framework.db.SQLResultRow; 
    4043import net.driftingsouls.ds2.server.ships.Ship; 
     44import net.driftingsouls.ds2.server.ships.ShipType; 
    4145import net.driftingsouls.ds2.server.ships.ShipTypeData; 
    42 import net.driftingsouls.ds2.server.ships.Ships; 
    4346import net.driftingsouls.ds2.server.tick.TickController; 
    4447 
     
    5558        private static final Location DEFAULT_LOCATION = new Location(2,30,35); 
    5659         
    57         private int maxid; 
    5860        private StringBuilder pmcache; 
    5961        private int lastowner; 
     
    6365        @Override 
    6466        protected void prepare() { 
    65                 Database db = getContext().getDatabase(); 
    66                  
    67                 this.maxid = db.first("SELECT max(id) maxid FROM ships").getInt("maxid"); 
    68  
    69                 this.log("maxid : "+this.maxid); 
    70  
    7167                this.pmcache = new StringBuilder(); 
    7268                this.lastowner = 0; 
     
    108104        @Override 
    109105        protected void tick() { 
    110                 Database db = getDatabase(); 
    111                  
    112                 SQLQuery data = db.query("SELECT * FROM orders WHERE tick=1 ORDER BY user"); 
    113                 while( data.next() ) { 
     106                org.hibernate.Session db = getDB(); 
     107                Database database = getDatabase(); 
     108                 
     109                List orders = db.createQuery("from Order where tick=1 order by user").list(); 
     110                for( Iterator iter=orders.iterator(); iter.hasNext(); ) { 
     111                        Order order = (Order)iter.next(); 
    114112                        try { 
    115                                 int owner = data.getInt("user"); 
     113                                int owner = order.getUser(); 
    116114                                User user = (User)getDB().get(User.class, owner); 
    117115                                         
     
    123121                         
    124122                                int type = OFFIZIERSSCHIFF; 
    125                                 if( data.getInt("type") > 0 ) { 
    126                                         type = data.getInt("type"); 
     123                                if( order.getType() > 0 ) { 
     124                                        type = order.getType(); 
    127125                                } 
    128126                         
    129127                                ShipTypeData shipd = Ship.getShipType( type, false ); 
    130128                         
    131                                 if( data.getInt("type") > 0 ) { 
    132                                         this.log("* Order "+data.getInt("id")+" ready: "+shipd.getNickname()+" ("+type+") wird zu User "+data.getInt("user")+" geliefert"); 
     129                                if( order.getType() > 0 ) { 
     130                                        this.log("* Order "+order.getId()+" ready: "+shipd.getNickname()+" ("+type+") wird zu User "+order.getUser()+" geliefert"); 
    133131                                } 
    134132                                else { 
    135                                         this.log("* Order "+data.getInt("id")+" ready: Offizier wird mittels "+shipd.getNickname()+" ("+type+") wird zu User "+data.getInt("user")+" geliefert"); 
    136                                 } 
    137                          
    138                                 SQLResultRow base = db.first("SELECT id,x,y,system,name FROM bases WHERE owner=",data.getInt("user")," ORDER BY id"); 
     133                                        this.log("* Order "+order.getId()+" ready: Offizier wird mittels "+shipd.getNickname()+" ("+type+") wird zu User "+order.getUser()+" geliefert"); 
     134                                } 
     135                         
     136                                Base base = (Base)db.createQuery("from Base where owner=?") 
     137                                        .setEntity(0, user) 
     138                                        .setMaxResults(1) 
     139                                        .uniqueResult(); 
    139140                                Location loc = DEFAULT_LOCATION; 
    140                                 if( !base.isEmpty() ) { 
    141                                         loc = Location.fromResult(base); 
    142                                 } 
     141                                if( base != null ) { 
     142                                        loc = base.getLocation(); 
     143                                } 
     144                                 
     145                                int id = 0; 
    143146                                 
    144147                                this.log("  Lieferung erfolgt bei "+loc); 
    145148                                // Falls ein Schiff geordert wurde oder keine Basis fuer den Offizier existiert (und er braucht somit ein Schiff)... 
    146                                 if( (data.getInt("type") > 0) || base.isEmpty() ) { 
    147                                         this.maxid++; 
    148                                  
     149                                if( (order.getType() > 0) || base == null ) { 
    149150                                        Cargo cargo = new Cargo(); 
    150151                                        cargo.addResource( Resources.DEUTERIUM, shipd.getRd()*10 ); 
     
    154155                                        User auser = (User)getDB().get(User.class, owner);       
    155156                                        String history = "Indienststellung am "+this.currentTime+" durch "+auser.getName()+" ("+auser.getID()+") [hide]NPC-Order[/hide]\n"; 
    156                                                                  
    157                                         db.prepare("INSERT INTO ships " , 
    158                                                         "(id,owner,name,type,x,y,system,crew,hull,e,cargo,history) " , 
    159                                                         "VALUES " , 
    160                                                         "( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") 
    161                                                 .update(maxid, owner, "noname", type, loc.getX(), loc.getY(), loc.getSystem(), shipd.getCrew(), shipd.getHull(), shipd.getEps(), cargo.save(), history); 
     157                                         
     158                                        Ship ship = new Ship(user); 
     159                                        ship.setName("noname"); 
     160                                        ship.setBaseType((ShipType)db.get(ShipType.class, type)); 
     161                                        ship.setX(loc.getX()); 
     162                                        ship.setY(loc.getY()); 
     163                                        ship.setSystem(loc.getSystem()); 
     164                                        ship.setCrew(shipd.getCrew()); 
     165                                        ship.setHull(shipd.getHull()); 
     166                                        ship.setEnergy(shipd.getEps()); 
     167                                        ship.setCargo(cargo); 
     168                                        ship.setHistory(history); 
     169                                         
     170                                        id = (Integer)db.save(ship); 
    162171                                         
    163172                                        if( shipd.getWerft().length() > 0 ) { 
    164                                                 db.update("INSERT INTO werften (shipid) VALUES ('",this.maxid,"')"); 
     173                                                database.update("INSERT INTO werften (shipid) VALUES ('",id,"')"); 
    165174                                        } 
    166175                                } 
    167176                         
    168177                                // Es handelt sich um einen Offizier... 
    169                                 if( data.getInt("type") < 0 ) { 
    170                                         SQLResultRow offizier = db.first("SELECT name,rang,ing,waf,nav,sec,com FROM orders_offiziere WHERE id=",(-data.getInt("type"))); 
     178                                if( order.getType() < 0 ) { 
     179                                        OrderOffizier offizier = (OrderOffizier)db.get(OrderOffizier.class, (-order.getType())); 
    171180                                        int special = RandomUtils.nextInt(6)+1; 
    172                                          
    173                                         String dest = "s "+this.maxid; 
    174                                         if( !base.isEmpty() ) { 
    175                                                 dest = "b "+base.getInt("id");   
    176                                         } 
    177                                         String name = this.getOffiName(user); 
    178                                          
    179                                         db.prepare("INSERT INTO offiziere ", 
    180                                                                 "(name,userid,rang,ing,waf,nav,sec,com,dest,spec) ", 
    181                                                                 "VALUES ", 
    182                                                                 "( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") 
    183                                                 .update(name, owner, offizier.getInt("rang"), offizier.getInt("ing"), offizier.getInt("waf"), offizier.getInt("nav"), offizier.getInt("sec"), offizier.getInt("com"), dest, special); 
     181 
     182                                        Offizier offi = new Offizier(user, this.getOffiName(user)); 
     183                                        offi.setRang(offizier.getRang()); 
     184                                        offi.setAbility(Offizier.Ability.ING, offizier.getIng()); 
     185                                        offi.setAbility(Offizier.Ability.WAF, offizier.getWaf()); 
     186                                        offi.setAbility(Offizier.Ability.NAV, offizier.getNav()); 
     187                                        offi.setAbility(Offizier.Ability.SEC, offizier.getSec()); 
     188                                        offi.setAbility(Offizier.Ability.COM, offizier.getCom()); 
     189                                        if( base != null ) { 
     190                                                offi.setDest("b", base.getID()); 
     191                                        } 
     192                                        else { 
     193                                                offi.setDest("s", id); 
     194                                        } 
     195                                        offi.setSpecial(Offizier.Special.values()[special]); 
     196                                         
     197                                        db.persist(offizier); 
    184198                         
    185199                                        // PM-Nachricht erstellen 
    186200                                        pmcache.append("Der von ihnen bestellte "); 
    187                                         pmcache.append(offizier.getString("name")); 
     201                                        pmcache.append(offizier.getName()); 
    188202                                        pmcache.append(" wurde geliefert.\nEr befindet sich auf "); 
    189203                                         
    190                                         if( base.isEmpty() ) { 
     204                                        if( base == null ) { 
    191205                                                pmcache.append("einer "); 
    192206                                                pmcache.append(shipd.getNickname()); 
     
    195209                                        else { 
    196210                                                pmcache.append("auf ihrer Basis "); 
    197                                                 pmcache.append(base.getString("name")); 
     211                                                pmcache.append(base.getName()); 
    198212                                                pmcache.append(" ("); 
    199                                                 pmcache.append(base.getInt("id")); 
     213                                                pmcache.append(base.getID()); 
    200214                                                pmcache.append(") im Sektor "); 
    201215                                        } 
     
    213227                                } 
    214228                                 
    215                                 Ships.recalculateShipStatus(this.maxid); 
    216                          
    217                                 db.update("DELETE FROM orders WHERE id=",data.getInt("id")); 
     229                                if( id != 0 ) { 
     230                                        Ship ship = (Ship)db.get(Ship.class, id); 
     231                                        ship.recalculateShipStatus(); 
     232                                } 
     233                         
     234                                db.delete(order); 
    218235                        } 
    219236                        catch( Exception e ) { 
    220                                 this.log("Order "+data.getInt("id")+" failed: "+e); 
     237                                this.log("Order "+order.getId()+" failed: "+e); 
    221238                                e.printStackTrace(); 
    222                                 Common.mailThrowable(e, "NPCOrderTick Exception", "order: "+data.getInt("id")); 
     239                                Common.mailThrowable(e, "NPCOrderTick Exception", "order: "+order.getId()); 
    223240                        } 
    224241                } 
    225                 data.free(); 
    226242                 
    227243                if( pmcache.length() > 0 ) { 
     
    230246                 
    231247                this.log("Verringere Wartezeit um 1..."); 
    232                 db.update("UPDATE orders SET tick=tick-1"); 
     248                db.createQuery("update Order set tick=tick-1").executeUpdate(); 
    233249                 
    234250                this.log("Verteile NPC-Punkte..."); 
    235                 db.update("UPDATE users SET npcpunkte=npcpunkte+1 WHERE LOCATE('ordermenu',flags)"); 
     251                db.createQuery("update User set npcpunkte=npcpunkte+1 where locate('ordermenu',flags)!=0"); 
    236252        } 
    237253 
  • src/net/driftingsouls/ds2/server/tick/regular/NPCScriptTick.java

    r283e6c7 r7a2d453  
    1919package net.driftingsouls.ds2.server.tick.regular; 
    2020 
     21import java.io.ByteArrayOutputStream; 
    2122import java.sql.Blob; 
     23import java.util.Iterator; 
    2224import java.util.List; 
     25 
     26import org.hibernate.Hibernate; 
    2327 
    2428import net.driftingsouls.ds2.server.ContextCommon; 
    2529import net.driftingsouls.ds2.server.entities.User; 
    2630import net.driftingsouls.ds2.server.framework.Common; 
    27 import net.driftingsouls.ds2.server.framework.db.Database; 
    28 import net.driftingsouls.ds2.server.framework.db.PreparedQuery; 
    29 import net.driftingsouls.ds2.server.framework.db.SQLQuery; 
    3031import net.driftingsouls.ds2.server.scripting.ScriptParser; 
    3132import net.driftingsouls.ds2.server.scripting.ScriptParserContext; 
     33import net.driftingsouls.ds2.server.ships.Ship; 
    3234import net.driftingsouls.ds2.server.tick.TickController; 
    3335 
     
    5961        @Override 
    6062        protected void tick() { 
    61                 Database db = getContext().getDatabase(); 
     63                org.hibernate.Session db = getContext().getDB(); 
    6264                this.log("Fuehre automatische NPC-Aktionen durch"); 
    6365                 
     
    7274                                scriptparser.setLogFunction(new TickLogger());   
    7375                        } 
    74                          
    75                         // Query zum aktuallisieren von Schiffen, die nicht via !RESETSCRIPT zurueckgesetzt wurden 
    76                         PreparedQuery scriptExecUpdate = db.prepare("UPDATE ships SET scriptexedata=? WHERE id=? AND script IS NOT NULL"); 
    77                          
     76 
    7877                        this.log("+++++++++ User: "+user.getID()+" +++++++++"); 
    79                         SQLQuery ship = db.query("SELECT * FROM ships WHERE id>0 AND owner='",user.getID(),"' AND battle=0 AND script IS NOT NULL"); 
    80                         while( ship.next() ) {                   
     78                        List ships = db.createQuery("from Ship where id>0 and owner=? and battle=0 and script is not null") 
     79                                .setEntity(0, user) 
     80                                .list(); 
     81                        for( Iterator iter=ships.iterator(); iter.hasNext(); ) { 
     82                                Ship ship = (Ship)iter.next(); 
    8183                                try { 
    82                                         this.log("+++ Ship "+ship.getInt("id")+" +++"); 
     84                                        this.log("+++ Ship "+ship.getId()+" +++"); 
    8385                                         
    84                                         Blob scriptExecData = ship.getBlob("scriptexedata"); 
     86                                        Blob scriptExecData = ship.getScriptExeData(); 
    8587                                        if( (scriptExecData != null) && (scriptExecData.length() > 0) ) { 
    8688                                                scriptparser.setContext( 
     
    8991                                        } 
    9092                                        else { 
    91                                                 // Hochgradig umstaendliches erstellen eines leeren Blobs. Geht sicherlich einfacher...  
    92                                                 db.update("UPDATE ships SET scriptexedata='' WHERE id="+ship.getInt("id")); 
    93                                                 SQLQuery tmp = db.query("SELECT scriptexedata FROM ships WHERE id=",ship.getInt("id")); 
    94                                                 tmp.next(); 
    95                                                 scriptExecData = tmp.getBlob("scriptexedata"); 
    96                                                 tmp.free(); 
    97                                                  
    9893                                                scriptparser.setContext(new ScriptParserContext()); 
    9994                                        } 
    10095                                         
    101                                         scriptparser.setShip( ship.getRow() ); 
    102                                         scriptparser.executeScript( db, ship.getString("script") ); 
     96                                        scriptparser.setShip( ship ); 
     97                                        scriptparser.executeScript( getDatabase(), ship.getScript() ); 
    10398                                         
    104                                         scriptparser.getContext().toStream(scriptExecData.setBinaryStream(1)); 
    105                                         scriptExecUpdate.update(scriptExecData, ship.getInt("id")); 
     99                                        if( scriptExecData != null ) { 
     100                                                scriptparser.getContext().toStream(scriptExecData.setBinaryStream(1)); 
     101                                        } 
     102                                        else { 
     103                                                ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     104                                                scriptparser.getContext().toStream(out); 
     105                                                scriptExecData = Hibernate.createBlob(out.toByteArray()); 
     106                                        } 
     107                                         
     108                                        // Pruefen, ob das Script nicht via !RESETSCRIPT geloescht wurde 
     109                                        if( ship.getScript() != null ) { 
     110                                                ship.setScriptExeData(scriptExecData); 
     111                                        } 
    106112                                } 
    107113                                catch( Exception e ) { 
    108                                         this.log("[FEHLER] Kann Script auf Schiff "+ship.getInt("id")+" nicht ausfuehren: "+e); 
     114                                        this.log("[FEHLER] Kann Script auf Schiff "+ship.getId()+" nicht ausfuehren: "+e); 
    109115                                        e.printStackTrace(); 
    110                                         Common.mailThrowable(e, "[DS2J] NPCScriptTick Exception", "Schiff: "+ship.getInt("id")+"\nUser: "+ship.getInt("owner")); 
     116                                        Common.mailThrowable(e, "[DS2J] NPCScriptTick Exception", "Schiff: "+ship.getId()+"\nUser: "+ship.getOwner().getID()); 
    111117                                } 
    112118                                scriptparser.cleanup(); 
    113119                        } 
    114                         ship.free(); 
    115                          
    116                         scriptExecUpdate.close(); 
    117120                } 
    118121        }