Changeset 6760ac9f7fd8d4e2b7062327eaac4055ff98f583

Show
Ignore:
Timestamp:
07/10/07 15:39:03 (1 year ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1184074743 +0200
git-parent:

[7a698dad95e80782edc96d6337ae617f53930aa7]

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

Cores auf Hibernate umgestellt

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/ehcache.xml

    r7a698da r6760ac9  
    77                        timeToIdleSeconds="5" 
    88                        timeToLiveSeconds="10" 
     9                        overflowToDisk="false" 
     10        /> 
     11        <cache  name="net.driftingsouls.ds2.server.bases.Cargo" 
     12                        maxElementsInMemory="20" 
     13                        eternal="true" 
     14                        timeToIdleSeconds="60" 
     15                        timeToLiveSeconds="600" 
    916                        overflowToDisk="false" 
    1017        /> 
  • src/net/driftingsouls/ds2/server/bases/Base.java

    rd54fd1c r6760ac9  
    537537         
    538538                if( (base.getCore() > 0) && base.isCoreActive() ) { 
    539                         Core core = Core.getCore(context.getDatabase(), base.getCore() ); 
    540          
     539                        Core core = Core.getCore(base.getCore()); 
     540 
    541541                        stat.substractCargo(core.getConsumes()); 
    542542                        stat.addCargo(core.getProduces()); 
  • src/net/driftingsouls/ds2/server/bases/Core.java

    r31f53b6 r6760ac9  
    1919package net.driftingsouls.ds2.server.bases; 
    2020 
    21 import java.util.HashMap; 
    22 import java.util.Map; 
     21import javax.persistence.Entity; 
     22import javax.persistence.Id; 
     23import javax.persistence.Inheritance; 
     24import javax.persistence.InheritanceType; 
     25import javax.persistence.Table; 
    2326 
    2427import net.driftingsouls.ds2.server.cargo.Cargo; 
    25 import net.driftingsouls.ds2.server.framework.caches.CacheManager; 
    26 import net.driftingsouls.ds2.server.framework.caches.ControllableCache; 
    27 import net.driftingsouls.ds2.server.framework.db.Database; 
    28 import net.driftingsouls.ds2.server.framework.db.SQLResultRow; 
     28import net.driftingsouls.ds2.server.framework.ContextMap; 
     29 
     30import org.hibernate.annotations.Cache; 
     31import org.hibernate.annotations.CacheConcurrencyStrategy; 
     32import org.hibernate.annotations.DiscriminatorFormula; 
     33import org.hibernate.annotations.Immutable; 
    2934 
    3035//TODO: Warum Verbrauch/Produktion unterscheiden? 
     
    3439 * 
    3540 */ 
     41@Entity 
     42@Table(name="cores") 
     43@Immutable 
     44@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
     45@DiscriminatorFormula("1") 
     46@Cache(usage=CacheConcurrencyStrategy.READ_ONLY) 
    3647public abstract class Core { 
    37         private static Map<Integer,Core> coreCache = new HashMap<Integer,Core>(); 
     48        @Id 
     49        private int id; 
    3850         
    39         static { 
    40                 CacheManager.getInstance().registerCache( 
    41                         new ControllableCache() { 
    42                                 public void clear() { 
    43                                         Core.clearCache(); 
    44                                 } 
    45                         } 
    46                 ); 
    47         } 
    48          
    49         static void clearCache() { 
    50                 synchronized(coreCache) { 
    51                         coreCache.clear(); 
    52                 } 
     51        /** 
     52         * Konstruktor 
     53         * 
     54         */ 
     55        public Core() { 
     56                // EMPTY 
    5357        } 
    5458         
     
    5761         * Sollte kein passender Coretyp existieren, wird <code>null</code> zurueckgegeben. 
    5862         *  
    59          * @param db Eine Datenbankverbindung 
    6063         * @param id Die ID des Coretyps 
    6164         * @return Eine Instanz der zugehoerigen Coreklasse 
    6265         */ 
    63         public static synchronized Core getCore(Database db, int id) { 
    64                 if( !coreCache.containsKey(id) ) { 
    65                         SQLResultRow row = db.first("SELECT * FROM cores WHERE id='",id,"'"); 
    66                         if( row.isEmpty() ) { 
    67                                 coreCache.put(id, null); 
    68                         } 
    69                         else { 
    70                                 coreCache.put(id, new DefaultCore(row)); 
    71                         } 
    72                 } 
    73                 return coreCache.get(id); 
     66        public static Core getCore(int id) { 
     67                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     68                 
     69                return (Core)db.get(Core.class, id); 
    7470        } 
    7571         
     
    7874         * @return die ID 
    7975         */ 
    80         public abstract int getID(); 
     76        public final int getID() { 
     77                return id; 
     78        } 
    8179         
    8280        /** 
  • src/net/driftingsouls/ds2/server/bases/DefaultCore.java

    rae09dfe r6760ac9  
    1919package net.driftingsouls.ds2.server.bases; 
    2020 
     21import javax.persistence.Column; 
     22import javax.persistence.DiscriminatorValue; 
     23import javax.persistence.Entity; 
     24 
    2125import net.driftingsouls.ds2.server.cargo.Cargo; 
    2226import net.driftingsouls.ds2.server.cargo.UnmodifiableCargo; 
    23 import net.driftingsouls.ds2.server.framework.db.SQLResultRow; 
     27 
     28import org.hibernate.annotations.Immutable; 
     29import org.hibernate.annotations.Type; 
    2430 
    2531/** 
     
    3137 * 
    3238 */ 
     39@Entity 
     40@Immutable 
     41@DiscriminatorValue("1") 
    3342public class DefaultCore extends Core { 
    34         private SQLResultRow data; 
     43        private String name; 
     44        @Column(name="astitype") 
     45        private int astiType; 
     46        @Type(type="cargo") 
     47        private Cargo buildcosts; 
     48        @Type(type="cargo") 
     49        private Cargo produces; 
     50        @Type(type="cargo") 
     51        private Cargo consumes; 
     52        private int arbeiter; 
     53        @Column(name="ever") 
     54        private int eVerbrauch; 
     55        @Column(name="eprodu") 
     56        private int eProduktion; 
     57        private int bewohner; 
     58        @Column(name="techreq") 
     59        private int techReq; 
     60        private int eps; 
    3561         
    3662        /** 
    3763         * Erstellt eine neue Core-Instanz 
    38          * @param row Eine SQL-Ergebniszeile mit den Core-Daten 
    3964         */ 
    40         public DefaultCore(SQLResultRow row) { 
    41                 data = row; 
    42                 data.put("consumes", new UnmodifiableCargo(new Cargo(Cargo.Type.STRING, data.getString("consumes"))) ); 
    43                 data.put("produces", new UnmodifiableCargo(new Cargo(Cargo.Type.STRING, data.getString("produces"))) ); 
    44                 data.put("buildcosts", new UnmodifiableCargo(new Cargo(Cargo.Type.STRING, data.getString("buildcosts"))) ); 
    45         } 
    46  
    47         @Override 
    48         public int getID() { 
    49                 return data.getInt("id"); 
     65        public DefaultCore() { 
     66                // EMPTY 
    5067        } 
    5168 
    5269        @Override 
    5370        public String getName() { 
    54                 return data.getString("name")
     71                return name
    5572        } 
    5673 
    5774        @Override 
    5875        public int getAstiType() { 
    59                 return data.getInt("astitype")
     76                return astiType
    6077        } 
    6178 
    6279        @Override 
    6380        public Cargo getBuildCosts() { 
    64                 return (Cargo)data.get("buildcosts"); 
     81                return new UnmodifiableCargo(buildcosts); 
    6582        } 
    6683 
    6784        @Override 
    6885        public Cargo getProduces() { 
    69                 return (Cargo)data.get("produces"); 
     86                return new UnmodifiableCargo(produces); 
    7087        } 
    7188 
    7289        @Override 
    7390        public Cargo getConsumes() { 
    74                 return (Cargo)data.get("consumes"); 
     91                return new UnmodifiableCargo(consumes); 
    7592        } 
    7693 
    7794        @Override 
    7895        public int getArbeiter() { 
    79                 return data.getInt("arbeiter")
     96                return arbeiter
    8097        } 
    8198 
    8299        @Override 
    83100        public int getEVerbrauch() { 
    84                 return data.getInt("ever")
     101                return eVerbrauch
    85102        } 
    86103 
    87104        @Override 
    88105        public int getEProduktion() { 
    89                 return data.getInt("eprodu")
     106                return eProduktion
    90107        } 
    91108 
    92109        @Override 
    93110        public int getBewohner() { 
    94                 return data.getInt("bewohner")
     111                return bewohner
    95112        } 
    96113 
    97114        @Override 
    98115        public int getTechRequired() { 
    99                 return data.getInt("techreq")
     116                return techReq
    100117        } 
    101118 
    102119        @Override 
    103120        public int getEPS() { 
    104                 return data.getInt("eps")
     121                return eps
    105122        } 
    106123 
  • src/net/driftingsouls/ds2/server/modules/ActivateAllController.java

    r283e6c7 r6760ac9  
    9292                        Alle Gebaeude deaktivieren 
    9393                */ 
    94                 Core core = Core.getCore(db, base.getCore()); 
     94                Core core = Core.getCore(base.getCore()); 
    9595                 
    9696                if( (base.getCore() != 0) && base.isCoreActive() ) { 
  • src/net/driftingsouls/ds2/server/modules/BaseController.java

    r4a172a3 r6760ac9  
    275275                //------------------ 
    276276                if( base.getCore() > 0 ) { 
    277                         Core core = Core.getCore(db, base.getCore()); 
     277                        Core core = Core.getCore(base.getCore()); 
    278278                        t.set_var( "core.name", Common._plaintitle(core.getName()) ); 
    279279                } 
  • src/net/driftingsouls/ds2/server/modules/BuildingsController.java

    r283e6c7 r6760ac9  
    164164                SQLQuery coreID = db.query("SELECT id FROM cores ORDER BY name,astitype"); 
    165165                while( coreID.next() ) { 
    166                         Core core = Core.getCore(db, coreID.getInt("id")); 
     166                        Core core = Core.getCore(coreID.getInt("id")); 
    167167                        if( !user.hasResearched(core.getTechRequired()) ) { 
    168168                                continue; 
  • src/net/driftingsouls/ds2/server/modules/CoreController.java

    rb7af64d r6760ac9  
    9393                } 
    9494                 
    95                 Core core = Core.getCore(db, build); 
     95                Core core = Core.getCore(build); 
    9696                if( core == null ) { 
    9797                        addError("Der angegebene Core-Typ existiert nicht", Common.buildUrl(getContext(), "default", "module", "base", "col", base.getID())); 
     
    187187                } 
    188188                 
    189                 Core core = Core.getCore(db, base.getCore()); 
     189                Core core = Core.getCore(base.getCore()); 
    190190 
    191191                db.update("UPDATE bases " + 
     
    220220                } 
    221221                 
    222                 Core core = Core.getCore(db, base.getCore()); 
     222                Core core = Core.getCore(base.getCore()); 
    223223                if( core.getArbeiter()+base.getArbeiter() > base.getBewohner() ) { 
    224224                        t.set_var( "core.message", "<span style=\"color:#ff0000\">Nicht gen&uuml;gend Arbeiter</span>" ); 
     
    245245         
    246246        private void showCore() { 
    247                 Database db = getDatabase(); 
    248                 TemplateEngine t = getTemplateEngine(); 
    249                  
    250                 Core core = Core.getCore(db, base.getCore()); 
     247                TemplateEngine t = getTemplateEngine(); 
     248                 
     249                Core core = Core.getCore(base.getCore()); 
    251250                 
    252251                t.set_var(      "core.astitype",        core.getAstiType(), 
     
    290289                SQLQuery coreID = db.query("SELECT id FROM cores WHERE astitype='",base.getKlasse(),"'"); 
    291290                while( coreID.next() ) { 
    292                         Core core = Core.getCore(db, coreID.getInt("id")); 
     291                        Core core = Core.getCore(coreID.getInt("id")); 
    293292                         
    294293                        if( !user.hasResearched(core.getTechRequired()) ) { 
  • src/net/driftingsouls/ds2/server/modules/ForschinfoController.java

    r283e6c7 r6760ac9  
    268268                SQLQuery coreRow = db.query("SELECT id FROM cores WHERE techreq=",this.research.getID()); 
    269269                while( coreRow.next() ) { 
    270                         Core core = Core.getCore(db, coreRow.getInt("id")); 
     270                        Core core = Core.getCore(coreRow.getInt("id")); 
    271271                         
    272272                        t.start_record(); 
  • web/WEB-INF/cfg/hibernatemappings.xml

    r29cd7e5 r6760ac9  
    2020        <!-- config_felsbrocken_systems --> 
    2121        <!-- config_vacmodes --> 
    22         <!-- cores [net.driftingsouls.ds2.server.bases.Core migrieren] --> 
     22        <mapping class="net.driftingsouls.ds2.server.bases.Core" /> 
     23        <mapping class="net.driftingsouls.ds2.server.bases.DefaultCore" /> 
    2324        <mapping class="net.driftingsouls.ds2.server.entities.FactionOffer" /> 
    2425        <mapping class="net.driftingsouls.ds2.server.entities.FactionShopEntry" />