Changeset 9689aa540670735b543f787fb9212540cbddf8cc
- Timestamp:
- 08/11/07 15:54:30 (1 year ago)
- git-parent:
- Files:
-
- db/tables/werften.sql (modified) (2 diffs)
- db/updates.xml (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/KapernController.java (modified) (3 diffs)
- src/net/driftingsouls/ds2/server/modules/ks/KSKapernAction.java (modified) (3 diffs)
- src/net/driftingsouls/ds2/server/ships/Ship.java (modified) (8 diffs)
- src/net/driftingsouls/ds2/server/werften/BaseWerft.java (modified) (2 diffs)
- src/net/driftingsouls/ds2/server/werften/ShipWerft.java (modified) (3 diffs)
- src/net/driftingsouls/ds2/server/werften/WerftGUI.java (modified) (4 diffs)
- src/net/driftingsouls/ds2/server/werften/WerftKomplex.java (added)
- src/net/driftingsouls/ds2/server/werften/WerftObject.java (modified) (7 diffs)
- src/net/driftingsouls/ds2/server/werften/WerftQueueEntry.java (modified) (1 diff)
- templates/werft.werftgui.html (modified) (3 diffs)
- web/WEB-INF/cfg/hibernatemappings.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
db/tables/werften.sql
r338b490 r9689aa5 6 6 `shipid` int(11) default null, 7 7 `linked` int(11) default null, 8 `linkedWerft` int(11) default null, 9 `komplex` tinyint(1) NOT NULL default '0', 8 10 PRIMARY KEY (`id`), 9 11 KEY `col` (`col`), … … 14 16 ALTER TABLE werften ADD CONSTRAINT werften_fk_bases2 FOREIGN KEY (col) REFERENCES bases(id); 15 17 ALTER TABLE werften ADD CONSTRAINT werften_fk_ships FOREIGN KEY (shipid) REFERENCES ships(id); 18 ALTER TABLE werften ADD CONSTRAINT werften_fk_werften FOREIGN KEY (linkedWerft) REFERENCES werften(id) ON DELETE SET NULL; db/updates.xml
r253f8ca r9689aa5 372 372 ALTER TABLE `fz` DROP INDEX `col`; 373 373 ]]></update> 374 <update type="structure" datum="2007-08-05"><![CDATA[ 375 ALTER TABLE `werften` ADD `linkedWerft` INT NULL; 376 ALTER TABLE werften ADD CONSTRAINT werften_fk_werften FOREIGN KEY (linkedWerft) REFERENCES werften(id) ON DELETE SET NULL; 377 ALTER TABLE `werften` ADD `komplex` TINYINT( 1 ) NOT NULL DEFAULT '0'; 378 ]]></update> 374 379 </updates> src/net/driftingsouls/ds2/server/modules/KapernController.java
r34776f5 r9689aa5 42 42 import net.driftingsouls.ds2.server.ships.ShipTypeData; 43 43 import net.driftingsouls.ds2.server.ships.ShipTypes; 44 import net.driftingsouls.ds2.server.werften.ShipWerft; 44 45 45 46 import org.apache.commons.lang.math.RandomUtils; … … 418 419 419 420 if( this.targetShipType.getWerft() != 0 ) { 420 database.update("UPDATE werften SET linked=0 WHERE shipid="+this.targetShip.getId()); 421 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where ship=?") 422 .setEntity(0, this.targetShip) 423 .uniqueResult(); 424 425 if( werft.getKomplex() != null ) { 426 werft.removeFromKomplex(); 427 } 428 werft.setLink(null); 421 429 } 422 430 … … 439 447 .executeUpdate(); 440 448 441 database.update("UPDATE werften SET linked=0 WHERE shipid="+aship.getId()); 449 if( aship.getTypeData().getWerft() != 0 ) { 450 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where ship=?") 451 .setEntity(0, aship) 452 .uniqueResult(); 453 454 if( werft.getKomplex() != null ) { 455 werft.removeFromKomplex(); 456 } 457 werft.setLink(null); 458 } 442 459 } 443 460 src/net/driftingsouls/ds2/server/modules/ks/KSKapernAction.java
r34776f5 r9689aa5 40 40 import net.driftingsouls.ds2.server.ships.ShipTypeData; 41 41 import net.driftingsouls.ds2.server.ships.ShipTypes; 42 import net.driftingsouls.ds2.server.werften.ShipWerft; 42 43 43 44 /** … … 286 287 .executeUpdate(); 287 288 if( dockShip.getTypeData().getWerft() != 0 ) { 288 db.createQuery("update ShipWerft set linked=null where shipid=?")289 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where ship=?") 289 290 .setEntity(0, dockShip) 290 .executeUpdate(); 291 .uniqueResult(); 292 293 if( werft.getKomplex() != null ) { 294 werft.removeFromKomplex(); 295 } 296 werft.setLink(null); 291 297 } 292 298 … … 299 305 .executeUpdate(); 300 306 if( enemyShipType.getWerft() != 0 ) { 301 db.createQuery("update ShipWerft set linked=null where shipid=?")307 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where ship=?") 302 308 .setEntity(0, enemyShip) 303 .executeUpdate(); 309 .uniqueResult(); 310 311 if( werft.getKomplex() != null ) { 312 werft.removeFromKomplex(); 313 } 314 werft.setLink(null); 304 315 } 305 316 src/net/driftingsouls/ds2/server/ships/Ship.java
rab7055e r9689aa5 889 889 890 890 this.status = Common.implode(" ", status); 891 892 // Ueberpruefen, ob ein evt vorhandener Werftkomplex nicht exisitert 893 if( type.getWerft() != 0 ) { 894 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where ship=?") 895 .setEntity(0, this) 896 .uniqueResult(); 897 898 if( werft.getKomplex() != null ) { 899 werft.getKomplex().checkWerftLocations(); 900 } 901 } 891 902 892 903 return this.status; … … 1792 1803 for( Ship fleetship : fleetdata.ships.values() ) { 1793 1804 if( fleetdata.dockedCount.get(fleetship.getId()) > 0 ) { 1794 db.createQuery("update Ship set x=?,y=?,system=? where id>0 and docked in (?,?)") 1795 .setInteger(0, fleetship.getX()) 1796 .setInteger(1, fleetship.getY()) 1797 .setInteger(2, fleetship.getSystem()) 1798 .setString(3, "l "+fleetship.getId()) 1799 .setString(4, Integer.toString(fleetship.getId())) 1800 .executeUpdate(); 1805 List dockedList = db.createQuery("from Ship where id>0 and docked in (?,?)") 1806 .setString(0, "l "+fleetship.getId()) 1807 .setString(1, Integer.toString(fleetship.getId())) 1808 .list(); 1809 for( Iterator iter=dockedList.iterator(); iter.hasNext(); ) { 1810 Ship dockedShip = (Ship)iter.next(); 1811 dockedShip.setSystem(fleetship.getSystem()); 1812 dockedShip.setX(fleetship.x); 1813 dockedShip.setY(fleetship.y); 1814 dockedShip.recalculateShipStatus(); 1815 } 1801 1816 } 1802 1817 … … 2150 2165 this.docked = ""; 2151 2166 if( docked != 0 ) { 2152 db.createQuery("update Ship set x=? ,y=?, system=? where id>0 and docked in (?,?)") 2153 .setInteger(0, this.x) 2154 .setInteger(1, this.y) 2155 .setInteger(2, this.system) 2156 .setString(3, "l "+this.id) 2157 .setString(4, Integer.toString(this.id)) 2158 .executeUpdate(); 2167 List dockedList = db.createQuery("from Ship where id>0 and docked in (?,?)") 2168 .setString(0, "l "+this.id) 2169 .setString(1, Integer.toString(this.id)) 2170 .list(); 2171 for( Iterator iter=dockedList.iterator(); iter.hasNext(); ) { 2172 Ship dockedShip = (Ship)iter.next(); 2173 dockedShip.setSystem(this.system); 2174 dockedShip.setX(this.x); 2175 dockedShip.setY(this.y); 2176 dockedShip.recalculateShipStatus(); 2177 } 2159 2178 } 2160 2179 } … … 2426 2445 aship.setY(outLoc.getY()); 2427 2446 aship.setSystem(outLoc.getSystem()); 2447 aship.recalculateShipStatus(); 2428 2448 } 2429 2449 … … 2867 2887 // Und nun loeschen wir es... 2868 2888 db.createQuery("delete from Offizier where dest=?") 2869 .setString(0, "s "+this.id)2870 .executeUpdate();2889 .setString(0, "s "+this.id) 2890 .executeUpdate(); 2871 2891 2872 2892 db.createQuery("delete from Jump where shipid=?") 2873 .setInteger(0, this.id)2874 .executeUpdate();2893 .setInteger(0, this.id) 2894 .executeUpdate(); 2875 2895 2876 2896 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where shipid=?") 2877 .setInteger(0, this.id)2878 .uniqueResult();2897 .setInteger(0, this.id) 2898 .uniqueResult(); 2879 2899 2880 2900 if( werft != null ) { 2901 if( werft.getKomplex() != null ) { 2902 werft.removeFromKomplex(); 2903 } 2881 2904 werft.clearQueue(); 2882 2905 db.delete(werft); … … 2884 2907 2885 2908 db.createQuery("delete from ShipModules where id=?") 2886 .setInteger(0, this.id)2887 .executeUpdate();2909 .setInteger(0, this.id) 2910 .executeUpdate(); 2888 2911 2889 2912 db.delete(this); … … 2947 2970 this.owner = newowner; 2948 2971 db.createQuery("update Offizier set userid=? where dest=?") 2949 .setEntity(0, newowner)2950 .setString(1, "s "+this.id)2951 .executeUpdate();2972 .setEntity(0, newowner) 2973 .setString(1, "s "+this.id) 2974 .executeUpdate(); 2952 2975 2953 2976 Common.dblog( "consign", Integer.toString(this.id), Integer.toString(newowner.getID()), … … 2960 2983 newowner.setFlagschiff(this.id); 2961 2984 } 2985 2986 if( getTypeData().getWerft() != 0 ) { 2987 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where ship=?") 2988 .setEntity(0, this) 2989 .uniqueResult(); 2990 2991 if( werft.getKomplex() != null ) { 2992 werft.removeFromKomplex(); 2993 } 2994 } 2962 2995 } 2963 2996 2964 2997 StringBuilder message = MESSAGE.get(); 2965 2998 List s = db.createQuery("from Ship where id>0 and docked in (?,?)") 2966 .setString(0, Integer.toString(this.id))2967 .setString(1, "l "+this.id)2968 .list();2999 .setString(0, Integer.toString(this.id)) 3000 .setString(1, "l "+this.id) 3001 .list(); 2969 3002 for( Iterator iter=s.iterator(); iter.hasNext(); ) { 2970 3003 Ship aship = (Ship)iter.next(); src/net/driftingsouls/ds2/server/werften/BaseWerft.java
r5b00c95 r9689aa5 32 32 import net.driftingsouls.ds2.server.cargo.Cargo; 33 33 import net.driftingsouls.ds2.server.entities.User; 34 import net.driftingsouls.ds2.server.framework.Common; 34 35 import net.driftingsouls.ds2.server.framework.ContextMap; 35 36 … … 219 220 return base.getName(); 220 221 } 222 223 @Override 224 public boolean isLinkableWerft() { 225 return false; 226 } 227 228 @Override 229 public String getObjectUrl() { 230 return Common.buildUrl(ContextMap.getContext(), "default", "module", "base", "col", base.getID()); 231 } 221 232 } src/net/driftingsouls/ds2/server/werften/ShipWerft.java
r5b00c95 r9689aa5 32 32 import net.driftingsouls.ds2.server.cargo.ResourceList; 33 33 import net.driftingsouls.ds2.server.entities.User; 34 import net.driftingsouls.ds2.server.framework.Common; 34 35 import net.driftingsouls.ds2.server.framework.ContextMap; 35 36 import net.driftingsouls.ds2.server.ships.Ship; … … 104 105 */ 105 106 public void setLink( Base base ) { 107 // In einem Komplex darf eine Basis nur einmal vorkommen 108 if( (base != null) && (getKomplex() != null) ) { 109 WerftObject[] members = getKomplex().getMembers(); 110 for( int i=0; i < members.length; i++ ) { 111 if( !(members[i] instanceof ShipWerft) ) { 112 continue; 113 } 114 if( members[i].getWerftID() == this.getWerftID() ) { 115 continue; 116 } 117 118 ShipWerft member = (ShipWerft)members[i]; 119 if( member.getLinkedBase() == base ) { 120 return; 121 } 122 } 123 } 124 106 125 linked = base; 107 126 } … … 409 428 return this.ship.getName(); 410 429 } 430 431 @Override 432 public boolean isLinkableWerft() { 433 return this.ship.getTypeData().hasFlag(ShipTypes.SF_WERFTKOMPLEX); 434 } 435 436 @Override 437 public String getObjectUrl() { 438 return Common.buildUrl(ContextMap.getContext(), "default", "module", "schiff", "ship", ship.getId()); 439 } 440 441 @Override 442 public void addToKomplex(WerftKomplex linkedWerft) { 443 super.addToKomplex(linkedWerft); 444 445 // Falls notwendig den Link auf die Basis entfernen - in einem Komplex darf eine Basis 446 // nur einmal vorkommen 447 if( this.linked != null ) { 448 WerftObject[] members = linkedWerft.getMembers(); 449 for( int i=0; i < members.length; i++ ) { 450 if( !(members[i] instanceof ShipWerft) ) { 451 continue; 452 } 453 if( members[i].getWerftID() == this.getWerftID() ) { 454 continue; 455 } 456 457 ShipWerft member = (ShipWerft)members[i]; 458 if( member.getLinkedBase() == this.getLinkedBase() ) { 459 this.setLink(null); 460 return; 461 } 462 } 463 } 464 } 465 466 @Override 467 public void createKomplexWithWerft(WerftObject werft) { 468 super.createKomplexWithWerft(werft); 469 470 // Falls notwendig den Link auf die Basis entfernen - in einem Komplex darf eine Basis 471 // nur einmal vorkommen 472 if( this.linked != null ) { 473 WerftObject[] members = this.getKomplex().getMembers(); 474 for( int i=0; i < members.length; i++ ) { 475 if( !(members[i] instanceof ShipWerft) ) { 476 continue; 477 } 478 if( members[i].getWerftID() == this.getWerftID() ) { 479 continue; 480 } 481 482 ShipWerft member = (ShipWerft)members[i]; 483 if( member.getLinkedBase() == this.getLinkedBase() ) { 484 this.setLink(null); 485 return; 486 } 487 } 488 } 489 } 411 490 } src/net/driftingsouls/ds2/server/werften/WerftGUI.java
r00c1526 r9689aa5 76 76 */ 77 77 public String execute( WerftObject werft ) { 78 org.hibernate.Session db = context.getDB();79 80 78 int build = context.getRequest().getParameterInt("build"); 81 79 int ws = context.getRequest().getParameterInt("ws"); 80 int linkedwerft = context.getRequest().getParameterInt("linkedwerft"); 82 81 83 82 if( !t.set_file( "_WERFT.WERFTGUI", "werft.werftgui.html" ) ) { … … 85 84 return ""; 86 85 } 86 87 // Werften aneinanderkoppelt 88 if( linkedwerft != 0 && werft.isLinkableWerft() ) { 89 org.hibernate.Session db = context.getDB(); 90 91 if( werft.getKomplex() != null ) { 92 werft.removeFromKomplex(); 93 } 94 95 if( linkedwerft > 0 ) { 96 WerftObject targetwerft = (WerftObject)db.get(WerftObject.class, linkedwerft); 97 98 if( targetwerft == null || !targetwerft.isLinkableWerft() ) { 99 t.set_var("werftgui.msg", "Die Zielwerft ist ungueltigt"); 100 } 101 else { 102 if( targetwerft.getKomplex() != null ) { 103 werft.addToKomplex(targetwerft.getKomplex()); 104 } 105 else { 106 werft.createKomplexWithWerft(targetwerft); 107 } 108 } 109 } 110 } 111 112 final String action = context.getRequest().getParameterString("werftact"); 113 if( action.equals("removefromkomplex") ) { 114 org.hibernate.Session db = context.getDB(); 115 116 WerftObject obj = (WerftObject)db.get(WerftObject.class, context.getRequest().getParameterInt("entry")); 117 118 if( (obj != null) && obj.getKomplex() != null ) { 119 obj.removeFromKomplex(); 120 } 121 } 122 123 if( werft.getKomplex() != null ) { 124 werft = werft.getKomplex(); 125 } 126 87 127 t.set_var( "werftgui.formhidden", werft.getFormHidden(), 88 "werftgui.urlbase", werft.getUrlBase() );128 "werftgui.urlbase", werft.getUrlBase() ); 89 129 90 130 // Baudialog … … 143 183 144 184 final int position = context.getRequest().getParameterInt("entry"); 145 final String action = context.getRequest().getParameterString("werftact");146 185 147 186 if( action.equals("canclebuild") ) { … … 177 216 t.set_var("werftgui.main.options", 1); 178 217 179 // Verbindung Base <-> Werft 180 if( werft instanceof ShipWerft ) { 181 int shipid = ((ShipWerft)werft).getShipID(); 182 Base linkedbase = ((ShipWerft)werft).getLinkedBase(); 218 outWerftOptions(werft); 219 } 220 } 221 t.parse( "OUT", "_WERFT.WERFTGUI" ); 222 return t.getVar("OUT"); 223 } 224 225 private void outWerftOptions(WerftObject werft) { 226 org.hibernate.Session db = context.getDB(); 227 228 if( werft instanceof WerftKomplex ) { 229 t.set_block("_WERFT.WERFTGUI", "werftgui.komplexparts.listitem", "werftgui.komplexparts.list"); 230 231 final WerftObject[] members = ((WerftKomplex)werft).getMembers(); 232 for( int i=0; i < members.length; i++ ) { 233 final WerftObject member = members[i]; 234 235 t.set_var( 236 "komplexpart.type.image", member.getWerftPicture(), 237 "komplexpart.name", member.getWerftName(), 238 "komplexpart.url", member.getObjectUrl(), 239 "komplexpart.id", member.getWerftID(), 240 "komplexpart.werftgui.formhidden", member.getFormHidden(), 241 "komplexpart.linkedbase.list", ""); 242 243 if( member instanceof ShipWerft ) { 244 int shipid = ((ShipWerft)member).getShipID(); 245 Base linkedbase = ((ShipWerft)member).getLinkedBase(); 183 246 184 247 ShipTypeData shiptype = Ship.getShipType( shipid, true ); 185 248 if( shiptype.getCost() == 0 ) { 186 t.set_block(" _WERFT.WERFTGUI", "werftgui.linkedbase.listitem", "werftgui.linkedbase.list");249 t.set_block("werftgui.komplexparts.listitem", "komplexpart.linkedbase.listitem", "komplexpart.linkedbase.list"); 187 250 188 if( linkedbase != null ) { 189 t.set_var( "linkedbase.selected", false, 190 "linkedbase.value", "-1", 191 "linkedbase.name", "kein Ziel" ); 251 t.set_var( "komplexpart.linkedbase.selected", linkedbase == null, 252 "komplexpart.linkedbase.value", "-1", 253 "komplexpart.linkedbase.name", "kein Ziel" ); 192 254 193 t.parse("werftgui.linkedbase.list", "werftgui.linkedbase.listitem", true); 194 } 195 255 t.parse("komplexpart.linkedbase.list", "komplexpart.linkedbase.listitem", true); 256 196 257 List bases = db.createQuery("from Base " + 197 258 "where x=? and y=? and system=? and owner=? order by id") 198 .setInteger(0, werft.getX())199 .setInteger(1, werft.getY())200 .setInteger(2, werft.getSystem())201 .setEntity(3, werft.getOwner())259 .setInteger(0, member.getX()) 260 .setInteger(1, member.getY()) 261 .setInteger(2, member.getSystem()) 262 .setEntity(3, member.getOwner()) 202 263 .list(); 203 264 for( Iterator iter=bases.iterator(); iter.hasNext(); ) { 204 265 Base base = (Base)iter.next(); 205 266 206 t.set_var( " linkedbase.selected", (linkedbase == base),207 " linkedbase.value", base.getID(),208 " linkedbase.name", base.getName()+" ("+base.getID()+")" );209 t.parse(" werftgui.linkedbase.list", "werftgui.linkedbase.listitem", true);267 t.set_var( "komplexpart.linkedbase.selected", linkedbase == base, 268 "komplexpart.linkedbase.value", base.getID(), 269 "komplexpart.linkedbase.name", base.getName()+" ("+base.getID()+")" ); 270 t.parse("komplexpart.linkedbase.list", "komplexpart.linkedbase.listitem", true); 210 271 } 211 272 } 212 273 } 213 } 214 } 215 t.parse( "OUT", "_WERFT.WERFTGUI" ); 216 return t.getVar("OUT"); 274 275 t.parse("werftgui.komplexparts.list", "werftgui.komplexparts.listitem", true); 276 } 277 278 return; 279 } 280 281 if( werft.isLinkableWerft() ) { 282 t.set_block("_WERFT.WERFTGUI", "werftgui.linkedwerft.listitem", "werftgui.linkedwerft.list"); 283 284 // Hier wird davon ausgegangen, dass nur Schiffswerften Werftkomplexe bilden 285 List werften = db.createQuery("from ShipWerft " + 286 "where ship.x=? and ship.y=? and ship.system=? and ship.owner=? order by ship.id") 287 .setInteger(0, werft.getX()) 288 .setInteger(1, werft.getY()) 289 .setInteger(2, werft.getSystem()) 290 .setEntity(3, werft.getOwner()) 291 .list(); 292 for( Iterator iter=werften.iterator(); iter.hasNext(); ) { 293 ShipWerft shipwerft = (ShipWerft)iter.next(); 294 295 if( shipwerft == werft ) { 296 continue; 297 } 298 if( !shipwerft.isLinkableWerft() ) { 299 continue; 300 } 301 302 t.set_var( 303 "linkedwerft.value", shipwerft.getWerftID(), 304 "linkedwerft.name", shipwerft.getName()+" ("+shipwerft.getShip().getId()+")" ); 305 t.parse("werftgui.linkedwerft.list", "werftgui.linkedwerft.listitem", true); 306 } 307 } 308 309 // Verbindung Base <-> Werft 310 if( werft instanceof ShipWerft ) { 311 int shipid = ((ShipWerft)werft).getShipID(); 312 Base linkedbase = ((ShipWerft)werft).getLinkedBase(); 313 314 ShipTypeData shiptype = Ship.getShipType( shipid, true ); 315 if( shiptype.getCost() == 0 ) { 316 t.set_block("_WERFT.WERFTGUI", "werftgui.linkedbase.listitem", "werftgui.linkedbase.list"); 317 318 if( linkedbase != null ) { 319 t.set_var( "linkedbase.selected", false, 320 "linkedbase.value", "-1", 321 "linkedbase.name", "kein Ziel" ); 322 323 t.parse("werftgui.linkedbase.list", "werftgui.linkedbase.listitem", true); 324 } 325 326 List bases = db.createQuery("from Base " + 327 "where x=? and y=? and system=? and owner=? order by id") 328 .setInteger(0, werft.getX()) 329 .setInteger(1, werft.getY()) 330 .setInteger(2, werft.getSystem()) 331 .setEntity(3, werft.getOwner()) 332 .list(); 333 for( Iterator iter=bases.iterator(); iter.hasNext(); ) { 334 Base base = (Base)iter.next(); 335 336 t.set_var( "linkedbase.selected", (linkedbase == base), 337 "linkedbase.value", base.getID(), 338 "linkedbase.name", base.getName()+" ("+base.getID()+")" ); 339 t.parse("werftgui.linkedbase.list", "werftgui.linkedbase.listitem", true); 340 } 341 } 342 } 217 343 } 218 344 src/net/driftingsouls/ds2/server/werften/WerftObject.java
r00c1526 r9689aa5 30 30 import javax.persistence.Column; 31 31 import javax.persistence.Ent
