Changeset 0ec8fa982414a88bbb0cfdf9ee1b76438f532f00

Show
Ignore:
Timestamp:
05/23/08 11:28:24 (3 months ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1211534904 +0200
git-parent:

[fed890a27561ed88e66a8e3b7ec311dd0693fe21]

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

[bug/ref] fz.forschung akzeptiert nun null und ist ueber einen foreign key abgesichert

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • db/tables/fz_alter.sql

    rf328b74 r0ec8fa9  
    11ALTER TABLE fz ADD CONSTRAINT fz_fk_bases FOREIGN KEY (col) REFERENCES bases(id); 
     2ALTER TABLE fz ADD CONSTRAINT fz_fk_forschungen FOREIGN KEY (forschung) REFERENCES forschungen(id); 
  • db/tables/fz_create.sql

    rf328b74 r0ec8fa9  
    22  `col` int(11) NOT NULL default '0', 
    33  `type` int(11) NOT NULL default '0', 
    4   `forschung` int(11) NOT NULL default '0'
     4  `forschung` int(11)
    55  `dauer` int(11) NOT NULL default '0', 
    66  `version` int(10) unsigned not null default '0', 
  • db/updates.xml

    r6676c57 r0ec8fa9  
    570570                DROP PROCEDURE `convert_f_user`; 
    571571        ]]></update> 
     572        <update type="structure" datum="2008-05-23"><![CDATA[ 
     573                ALTER TABLE fz MODIFY forschung int(11); 
     574                UPDATE fz SET forschung=NULL WHERE forschung=0; 
     575                ALTER TABLE fz ADD CONSTRAINT fz_fk_forschungen FOREIGN KEY (forschung) REFERENCES forschungen(id); 
     576        ]]></update> 
    572577</updates> 
  • src/net/driftingsouls/ds2/server/bases/ForschungszentrumBuilding.java

    rc2bf6ef r0ec8fa9  
    118118                        else { 
    119119                                StringBuilder popup = new StringBuilder(Common.tableBegin( 350, "left" ).replace("\"", "'") ); 
    120                                 Forschung forschung = Forschung.getInstance(fz.getForschung()); 
     120                                Forschung forschung = fz.getForschung(); 
    121121                                popup.append("<img align='left' border='0' src='"+Configuration.getSetting("URL")+"data/tech/"+fz.getForschung()+".gif' alt='' />"); 
    122122                                popup.append(forschung.getName()+"<br />"); 
     
    154154                List<Integer> researches = new ArrayList<Integer>(); 
    155155                List researchList = db.createQuery("from Forschungszentrum " + 
    156                                 "where forschung>0 and base.owner=?") 
     156                                "where forschung is not null and base.owner=?") 
    157157                                .setEntity(0, user) 
    158158                                .list(); 
     
    160160                        Forschungszentrum aFz = (Forschungszentrum)iter.next(); 
    161161                         
    162                         researches.add(aFz.getForschung()); 
     162                        if( aFz.getForschung() != null ) { 
     163                                researches.add(aFz.getForschung().getID()); 
     164                        } 
    163165                } 
    164166                 
     
    254256         
    255257        private boolean currentResearch(Context context, StringBuilder echo, Forschungszentrum fz, int field ) { 
    256                 Forschung tech = Forschung.getInstance(fz.getForschung()); 
     258                Forschung tech = fz.getForschung(); 
    257259                if( tech != null ) { 
    258260                        echo.append("<img style=\"float:left;border:0px\" src=\""+Configuration.getSetting("URL")+"data/tech/"+tech.getID()+".gif\" alt=\"\" />"); 
     
    276278                } 
    277279                 
    278                 fz.setForschung(0); 
     280                fz.setForschung(null); 
    279281                fz.setDauer(0); 
    280282                 
     
    318320         
    319321                // Wird bereits im Forschungszentrum geforscht? 
    320                 if( fz.getForschung() != 0 ) { 
     322                if( fz.getForschung() != null ) { 
    321323                        ok = false; 
    322324                } 
    323325         
    324                 // Besitzt der Spieler alle fuer die Forschung n?tigen Forschungen? 
     326                // Besitzt der Spieler alle fuer die Forschung noetigen Forschungen? 
    325327                for( int i=1; i <= 3; i++ ) { 
    326328                        if( !user.hasResearched(tech.getRequiredResearch(i)) ) { 
     
    354356                        echo.append("</div>\n"); 
    355357                         
    356                         fz.setForschung(researchid); 
     358                        fz.setForschung(tech); 
    357359                        fz.setDauer(tech.getTime()); 
    358360                        base.setCargo(cargo); 
  • src/net/driftingsouls/ds2/server/entities/Forschung.java

    r7a648c6 r0ec8fa9  
    1919package net.driftingsouls.ds2.server.entities; 
    2020 
    21 import java.util.HashMap; 
    22 import java.util.Map; 
    23  
    2421import javax.persistence.Column; 
    2522import javax.persistence.Entity; 
     
    3027import net.driftingsouls.ds2.server.cargo.Cargo; 
    3128import net.driftingsouls.ds2.server.framework.ContextMap; 
    32 import net.driftingsouls.ds2.server.framework.caches.CacheManager; 
    33 import net.driftingsouls.ds2.server.framework.caches.ControllableCache; 
    3429 
    3530import org.hibernate.annotations.Cache; 
     
    5651        public static final String FLAG_DROP_NOOB_PROTECTION = "drop_noob"; 
    5752         
    58         private static final Map<Integer,Forschung> cache = new HashMap<Integer,Forschung>(); 
    59          
    60         static { 
    61                 CacheManager.getInstance().registerCache( 
    62                         new ControllableCache() { 
    63                                 public void clear() { 
    64                                         Forschung.clearCache(); 
    65                                 } 
    66                         } 
    67                 ); 
    68         } 
    69          
    7053        /** 
    7154         * Sichtbarkeiten von einzelnen Forschungen 
     
    11598         */ 
    11699        public static Forschung getInstance( int fid ) { 
    117                 synchronized(cache) { 
    118                         if( !cache.containsKey(fid) ) { 
    119                                 org.hibernate.Session db = ContextMap.getContext().getDB(); 
    120                                  
    121                                 Forschung res = (Forschung)db.get(Forschung.class, fid); 
    122                                 if( res == null ) { 
    123                                         return null; 
    124                                 }        
    125                                  
    126                                 cache.put(fid, res); 
    127                                  
    128                                 return res; 
    129                         } 
    130                 } 
    131                  
    132                 return cache.get(fid); 
    133         } 
    134          
    135         /** 
    136          * Leert den Forschungscache 
    137          * 
    138          */ 
    139         public static void clearCache() { 
    140                 synchronized(cache) { 
    141                         cache.clear(); 
    142                 } 
     100                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     101                return (Forschung)db.get(Forschung.class, fid); 
    143102        } 
    144103         
  • src/net/driftingsouls/ds2/server/entities/Forschungszentrum.java

    r89c047d r0ec8fa9  
    2222import javax.persistence.FetchType; 
    2323import javax.persistence.Id; 
     24import javax.persistence.JoinColumn; 
     25import javax.persistence.ManyToOne; 
    2426import javax.persistence.OneToOne; 
    2527import javax.persistence.PrimaryKeyJoinColumn; 
     
    4345        private Base base; 
    4446        private int type; 
    45         private int forschung; 
     47        @ManyToOne(fetch=FetchType.LAZY) 
     48        @JoinColumn(name="forschung", nullable=true) 
     49        private Forschung forschung; 
    4650        private int dauer; 
    4751         
     
    103107         * @return Die Forschung 
    104108         */ 
    105         public int getForschung() { 
     109        public Forschung getForschung() { 
    106110                return forschung; 
    107111        } 
     
    111115         * @param forschung Die Forschung 
    112116         */ 
    113         public void setForschung(int forschung) { 
     117        public void setForschung(Forschung forschung) { 
    114118                this.forschung = forschung; 
    115119        } 
  • src/net/driftingsouls/ds2/server/modules/TechListeController.java

    r05c40d0 r0ec8fa9  
    151151 
    152152                Map<Integer,Integer> currentResearches = new HashMap<Integer,Integer>(); 
    153                 List resList = db.createQuery("from Forschungszentrum where forschung>0 and base.owner=?") 
     153                List resList = db.createQuery("from Forschungszentrum where forschung is not null and base.owner=?") 
    154154                        .setEntity(0, user) 
    155155                        .list(); 
    156156                for( Iterator iter=resList.iterator(); iter.hasNext(); ) { 
    157157                        Forschungszentrum fz = (Forschungszentrum)iter.next(); 
    158                         currentResearches.put(fz.getForschung(), fz.getDauer()); 
     158                        currentResearches.put(fz.getForschung().getID(), fz.getDauer()); 
    159159                } 
    160160 
  • src/net/driftingsouls/ds2/server/tick/regular/ForschungsTick.java

    r8c3eb1a r0ec8fa9  
    5858                                log("fz "+fz.getBaseId()); 
    5959                                log("\tforschung: "+fz.getForschung()); 
    60                                 Forschung forschung = Forschung.getInstance(fz.getForschung()); 
     60                                Forschung forschung = fz.getForschung(); 
    6161                                         
    6262                                log("\t"+forschung.getName()+" ("+forschung.getID()+") erforscht"); 
     
    7575                                PM.send(sourceUser, base.getOwner().getId(), "Forschung abgeschlossen", msg); 
    7676                                 
    77                                 fz.setForschung(0); 
     77                                fz.setForschung(null); 
    7878                                fz.setDauer(0); 
    7979