Changeset 0ec8fa982414a88bbb0cfdf9ee1b76438f532f00
- 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
| rf328b74 |
r0ec8fa9 |
|
| 1 | 1 | ALTER TABLE fz ADD CONSTRAINT fz_fk_bases FOREIGN KEY (col) REFERENCES bases(id); |
|---|
| | 2 | ALTER TABLE fz ADD CONSTRAINT fz_fk_forschungen FOREIGN KEY (forschung) REFERENCES forschungen(id); |
|---|
| rf328b74 |
r0ec8fa9 |
|
| 2 | 2 | `col` int(11) NOT NULL default '0', |
|---|
| 3 | 3 | `type` int(11) NOT NULL default '0', |
|---|
| 4 | | `forschung` int(11) NOT NULL default '0', |
|---|
| | 4 | `forschung` int(11), |
|---|
| 5 | 5 | `dauer` int(11) NOT NULL default '0', |
|---|
| 6 | 6 | `version` int(10) unsigned not null default '0', |
|---|
| r6676c57 |
r0ec8fa9 |
|
| 570 | 570 | DROP PROCEDURE `convert_f_user`; |
|---|
| 571 | 571 | ]]></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> |
|---|
| 572 | 577 | </updates> |
|---|
| rc2bf6ef |
r0ec8fa9 |
|
| 118 | 118 | else { |
|---|
| 119 | 119 | StringBuilder popup = new StringBuilder(Common.tableBegin( 350, "left" ).replace("\"", "'") ); |
|---|
| 120 | | Forschung forschung = Forschung.getInstance(fz.getForschung()); |
|---|
| | 120 | Forschung forschung = fz.getForschung(); |
|---|
| 121 | 121 | popup.append("<img align='left' border='0' src='"+Configuration.getSetting("URL")+"data/tech/"+fz.getForschung()+".gif' alt='' />"); |
|---|
| 122 | 122 | popup.append(forschung.getName()+"<br />"); |
|---|
| … | … | |
| 154 | 154 | List<Integer> researches = new ArrayList<Integer>(); |
|---|
| 155 | 155 | List researchList = db.createQuery("from Forschungszentrum " + |
|---|
| 156 | | "where forschung>0 and base.owner=?") |
|---|
| | 156 | "where forschung is not null and base.owner=?") |
|---|
| 157 | 157 | .setEntity(0, user) |
|---|
| 158 | 158 | .list(); |
|---|
| … | … | |
| 160 | 160 | Forschungszentrum aFz = (Forschungszentrum)iter.next(); |
|---|
| 161 | 161 | |
|---|
| 162 | | researches.add(aFz.getForschung()); |
|---|
| | 162 | if( aFz.getForschung() != null ) { |
|---|
| | 163 | researches.add(aFz.getForschung().getID()); |
|---|
| | 164 | } |
|---|
| 163 | 165 | } |
|---|
| 164 | 166 | |
|---|
| … | … | |
| 254 | 256 | |
|---|
| 255 | 257 | private boolean currentResearch(Context context, StringBuilder echo, Forschungszentrum fz, int field ) { |
|---|
| 256 | | Forschung tech = Forschung.getInstance(fz.getForschung()); |
|---|
| | 258 | Forschung tech = fz.getForschung(); |
|---|
| 257 | 259 | if( tech != null ) { |
|---|
| 258 | 260 | echo.append("<img style=\"float:left;border:0px\" src=\""+Configuration.getSetting("URL")+"data/tech/"+tech.getID()+".gif\" alt=\"\" />"); |
|---|
| … | … | |
| 276 | 278 | } |
|---|
| 277 | 279 | |
|---|
| 278 | | fz.setForschung(0); |
|---|
| | 280 | fz.setForschung(null); |
|---|
| 279 | 281 | fz.setDauer(0); |
|---|
| 280 | 282 | |
|---|
| … | … | |
| 318 | 320 | |
|---|
| 319 | 321 | // Wird bereits im Forschungszentrum geforscht? |
|---|
| 320 | | if( fz.getForschung() != 0 ) { |
|---|
| | 322 | if( fz.getForschung() != null ) { |
|---|
| 321 | 323 | ok = false; |
|---|
| 322 | 324 | } |
|---|
| 323 | 325 | |
|---|
| 324 | | // Besitzt der Spieler alle fuer die Forschung n?tigen Forschungen? |
|---|
| | 326 | // Besitzt der Spieler alle fuer die Forschung noetigen Forschungen? |
|---|
| 325 | 327 | for( int i=1; i <= 3; i++ ) { |
|---|
| 326 | 328 | if( !user.hasResearched(tech.getRequiredResearch(i)) ) { |
|---|
| … | … | |
| 354 | 356 | echo.append("</div>\n"); |
|---|
| 355 | 357 | |
|---|
| 356 | | fz.setForschung(researchid); |
|---|
| | 358 | fz.setForschung(tech); |
|---|
| 357 | 359 | fz.setDauer(tech.getTime()); |
|---|
| 358 | 360 | base.setCargo(cargo); |
|---|
| r7a648c6 |
r0ec8fa9 |
|
| 19 | 19 | package net.driftingsouls.ds2.server.entities; |
|---|
| 20 | 20 | |
|---|
| 21 | | import java.util.HashMap; |
|---|
| 22 | | import java.util.Map; |
|---|
| 23 | | |
|---|
| 24 | 21 | import javax.persistence.Column; |
|---|
| 25 | 22 | import javax.persistence.Entity; |
|---|
| … | … | |
| 30 | 27 | import net.driftingsouls.ds2.server.cargo.Cargo; |
|---|
| 31 | 28 | import net.driftingsouls.ds2.server.framework.ContextMap; |
|---|
| 32 | | import net.driftingsouls.ds2.server.framework.caches.CacheManager; |
|---|
| 33 | | import net.driftingsouls.ds2.server.framework.caches.ControllableCache; |
|---|
| 34 | 29 | |
|---|
| 35 | 30 | import org.hibernate.annotations.Cache; |
|---|
| … | … | |
| 56 | 51 | public static final String FLAG_DROP_NOOB_PROTECTION = "drop_noob"; |
|---|
| 57 | 52 | |
|---|
| 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 | | |
|---|
| 70 | 53 | /** |
|---|
| 71 | 54 | * Sichtbarkeiten von einzelnen Forschungen |
|---|
| … | … | |
| 115 | 98 | */ |
|---|
| 116 | 99 | 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); |
|---|
| 143 | 102 | } |
|---|
| 144 | 103 | |
|---|
| r89c047d |
r0ec8fa9 |
|
| 22 | 22 | import javax.persistence.FetchType; |
|---|
| 23 | 23 | import javax.persistence.Id; |
|---|
| | 24 | import javax.persistence.JoinColumn; |
|---|
| | 25 | import javax.persistence.ManyToOne; |
|---|
| 24 | 26 | import javax.persistence.OneToOne; |
|---|
| 25 | 27 | import javax.persistence.PrimaryKeyJoinColumn; |
|---|
| … | … | |
| 43 | 45 | private Base base; |
|---|
| 44 | 46 | private int type; |
|---|
| 45 | | private int forschung; |
|---|
| | 47 | @ManyToOne(fetch=FetchType.LAZY) |
|---|
| | 48 | @JoinColumn(name="forschung", nullable=true) |
|---|
| | 49 | private Forschung forschung; |
|---|
| 46 | 50 | private int dauer; |
|---|
| 47 | 51 | |
|---|
| … | … | |
| 103 | 107 | * @return Die Forschung |
|---|
| 104 | 108 | */ |
|---|
| 105 | | public int getForschung() { |
|---|
| | 109 | public Forschung getForschung() { |
|---|
| 106 | 110 | return forschung; |
|---|
| 107 | 111 | } |
|---|
| … | … | |
| 111 | 115 | * @param forschung Die Forschung |
|---|
| 112 | 116 | */ |
|---|
| 113 | | public void setForschung(int forschung) { |
|---|
| | 117 | public void setForschung(Forschung forschung) { |
|---|
| 114 | 118 | this.forschung = forschung; |
|---|
| 115 | 119 | } |
|---|
| r05c40d0 |
r0ec8fa9 |
|
| 151 | 151 | |
|---|
| 152 | 152 | 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=?") |
|---|
| 154 | 154 | .setEntity(0, user) |
|---|
| 155 | 155 | .list(); |
|---|
| 156 | 156 | for( Iterator iter=resList.iterator(); iter.hasNext(); ) { |
|---|
| 157 | 157 | Forschungszentrum fz = (Forschungszentrum)iter.next(); |
|---|
| 158 | | currentResearches.put(fz.getForschung(), fz.getDauer()); |
|---|
| | 158 | currentResearches.put(fz.getForschung().getID(), fz.getDauer()); |
|---|
| 159 | 159 | } |
|---|
| 160 | 160 | |
|---|
| r8c3eb1a |
r0ec8fa9 |
|
| 58 | 58 | log("fz "+fz.getBaseId()); |
|---|
| 59 | 59 | log("\tforschung: "+fz.getForschung()); |
|---|
| 60 | | Forschung forschung = Forschung.getInstance(fz.getForschung()); |
|---|
| | 60 | Forschung forschung = fz.getForschung(); |
|---|
| 61 | 61 | |
|---|
| 62 | 62 | log("\t"+forschung.getName()+" ("+forschung.getID()+") erforscht"); |
|---|
| … | … | |
| 75 | 75 | PM.send(sourceUser, base.getOwner().getId(), "Forschung abgeschlossen", msg); |
|---|
| 76 | 76 | |
|---|
| 77 | | fz.setForschung(0); |
|---|
| | 77 | fz.setForschung(null); |
|---|
| 78 | 78 | fz.setDauer(0); |
|---|
| 79 | 79 | |
|---|