WhiteFace Posted June 28, 2009 Share Posted June 28, 2009 hello all,With this contrib olympiad info saved into database table olympiad_data. All fully backward compartible - if table is empty - old configuration file loaded (but saved into db). so lets start DP part: CREATE TABLE IF NOT EXISTS `olympiad_data` ( `id` TINYINT UNSIGNED NOT NULL default '0', `current_cycle` MEDIUMINT UNSIGNED NOT NULL default '1', `period` MEDIUMINT UNSIGNED NOT NULL default '0', `olympiad_end` BIGINT UNSIGNED NOT NULL default 0, `validation_end` BIGINT UNSIGNED NOT NULL default 0, `next_weekly_change` BIGINT UNSIGNED NOT NULL default 0, PRIMARY KEY (`id`) ); now do this code: Index: java/net/sf/l2j/gameserver/model/olympiad/Olympiad.java =================================================================== --- java/net/sf/l2j/gameserver/model/olympiad/Olympiad.java (revision 3199) +++ java/net/sf/l2j/gameserver/model/olympiad/Olympiad.java (working copy) @@ -21,7 +21,6 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; @@ -66,6 +65,12 @@ private static final String OLYMPIAD_DATA_FILE = "config/olympiad.properties"; public static final String OLYMPIAD_HTML_PATH = "data/html/olympiad/"; + private static final String OLYMPIAD_LOAD_DATA = "SELECT current_cycle, period, olympiad_end, validation_end, " + + "next_weekly_change FROM olympiad_data WHERE id = 0"; + private static final String OLYMPIAD_SAVE_DATA = "INSERT INTO olympiad_data (id, current_cycle, " + + "period, olympiad_end, validation_end, next_weekly_change) VALUES (?,?,?,?,?,?) " + + "ON DUPLICATE KEY UPDATE current_cycle=?, period=?, olympiad_end=?, " + + "validation_end=?, next_weekly_change=?"; private static final String OLYMPIAD_LOAD_NOBLES = "SELECT olympiad_nobles.charId, olympiad_nobles.class_id, " + "characters.char_name, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_done, " + "olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost, olympiad_nobles.competitions_drawn " @@ -162,35 +167,79 @@ { _nobles = new FastMap<Integer, StatsSet>(); - Properties OlympiadProperties = new Properties(); - InputStream is = null; + Connection con = null; + + boolean loaded = false; try { - is = new FileInputStream(new File("./" + OLYMPIAD_DATA_FILE)); - OlympiadProperties.load(is); + con = L2DatabaseFactory.getInstance().getConnection(); + PreparedStatement statement = con.prepareStatement(OLYMPIAD_LOAD_DATA); + ResultSet rset = statement.executeQuery(); + + while (rset.next()) + { + _currentCycle = rset.getInt("current_cycle"); + _period = rset.getInt("period"); + _olympiadEnd = rset.getLong("olympiad_end"); + _validationEnd = rset.getLong("validation_end"); + _nextWeeklyChange = rset.getLong("next_weekly_change"); + loaded = true; + } + + rset.close(); + statement.close(); } catch (Exception e) { - _log.log(Level.SEVERE, "Olympiad System: Error loading olympiad properties: ", e); - return; + _log.log(Level.WARNING, "Olympiad System: Error loading olympiad data from database: ", e); } finally { try { - is.close(); + con.close(); } catch (Exception e) { + e.printStackTrace(); } } + + if (!loaded) + { + _log.log(Level.INFO, "Olympiad System: failed to load data from database, trying to load from file."); + + Properties OlympiadProperties = new Properties(); + InputStream is = null; + try + { + is = new FileInputStream(new File("./" + OLYMPIAD_DATA_FILE)); + OlympiadProperties.load(is); + } + catch (Exception e) + { + _log.log(Level.SEVERE, "Olympiad System: Error loading olympiad properties: ", e); + return; + } + finally + { + try + { + is.close(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + _currentCycle = Integer.parseInt(OlympiadProperties.getProperty("CurrentCycle", "1")); + _period = Integer.parseInt(OlympiadProperties.getProperty("Period", "0")); + _olympiadEnd = Long.parseLong(OlympiadProperties.getProperty("OlympiadEnd", "0")); + _validationEnd = Long.parseLong(OlympiadProperties.getProperty("ValidationEnd", "0")); + _nextWeeklyChange = Long.parseLong(OlympiadProperties.getProperty("NextWeeklyChange", "0")); + } - _currentCycle = Integer.parseInt(OlympiadProperties.getProperty("CurrentCycle", "1")); - _period = Integer.parseInt(OlympiadProperties.getProperty("Period", "0")); - _olympiadEnd = Long.parseLong(OlympiadProperties.getProperty("OlympiadEnd", "0")); - _validationEnd = Long.parseLong(OlympiadProperties.getProperty("ValidationEnd", "0")); - _nextWeeklyChange = Long.parseLong(OlympiadProperties.getProperty("NextWeeklyChange", "0")); - switch (_period) { case 0: @@ -218,7 +267,6 @@ return; } - Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); @@ -256,6 +304,7 @@ } catch (Exception e) { + e.printStackTrace(); } } @@ -1072,7 +1121,43 @@ { saveNobleData(); - Properties OlympiadProperties = new Properties(); + Connection con = null; + try + { + con = L2DatabaseFactory.getInstance().getConnection(); + PreparedStatement statement = con.prepareStatement(OLYMPIAD_SAVE_DATA); + + statement.setInt(1, 0); + statement.setInt(2, _currentCycle); + statement.setInt(3, _period); + statement.setLong(4, _olympiadEnd); + statement.setLong(5, _validationEnd); + statement.setLong(6, _nextWeeklyChange); + statement.setInt(7, _currentCycle); + statement.setInt(8, _period); + statement.setLong(9, _olympiadEnd); + statement.setLong(10, _validationEnd); + statement.setLong(11, _nextWeeklyChange); + + statement.execute(); + statement.close(); + } + catch (SQLException e) + { + _log.log(Level.SEVERE, "Olympiad System: Failed to save olympiad data to database: ", e); + } + finally + { + try + { + con.close(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } +/* Properties OlympiadProperties = new Properties(); FileOutputStream fos = null; try { @@ -1099,7 +1184,7 @@ catch (Exception e) { } - } + }*/ } protected void updateMonthlyData() and you are done credits:_DS_ from l2jserver enjoy Quote Link to comment Share on other sites More sharing options...
HardCoded Posted June 28, 2009 Share Posted June 28, 2009 very nice share...Thx man. //keep sharing ;D Quote Link to comment Share on other sites More sharing options...
Neo1993k Posted June 28, 2009 Share Posted June 28, 2009 Nice guide, thix for this... Quote Link to comment Share on other sites More sharing options...
whitelabell Posted June 28, 2009 Share Posted June 28, 2009 nice man Quote Link to comment Share on other sites More sharing options...
marius200597 Posted July 23, 2009 Share Posted July 23, 2009 tnx man :) rly nice one :) Quote Link to comment Share on other sites More sharing options...
yankiller Posted July 23, 2009 Share Posted July 23, 2009 Heres somthing that works!great share man,i was disappointed cause none of the mods here could work on my server,this one is from the few ones... :) Quote Link to comment Share on other sites More sharing options...
gkostas5 Posted August 6, 2009 Share Posted August 6, 2009 It seems good!! I'll try it!!! Quote Link to comment Share on other sites More sharing options...
Zeronimo Posted August 7, 2009 Share Posted August 7, 2009 Why waste your time with an un-finished product ? DS Said it himself, it's not done, unsecure, and will cause loss on server crashes. Quote Link to comment Share on other sites More sharing options...
disast3r Posted August 23, 2009 Share Posted August 23, 2009 where to do the code ? :P Quote Link to comment Share on other sites More sharing options...
Syntax Posted September 3, 2009 Share Posted September 3, 2009 Nice share. Tks for guide. Quote Link to comment Share on other sites More sharing options...
agapitos Posted September 10, 2009 Share Posted September 10, 2009 very usefull share Quote Link to comment Share on other sites More sharing options...
KraSh™ Posted September 25, 2009 Share Posted September 25, 2009 where to do the code ? :P open your eyes --- java/net/sf/l2j/gameserver/model/olympiad/Olympiad.java (revision 3199) +++ java/net/sf/l2j/gameserver/model/olympiad/Olympiad.java (working copy) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.