From 30477571ef021967c6c053109af44ccfcb5a6520 Mon Sep 17 00:00:00 2001 From: Rogiel Date: Mon, 1 Aug 2011 00:20:52 -0300 Subject: [PATCH] Fixed exception in chat logging and fixed issue that caused knowlist not being updated --- dist/sql/log_chat.sql | 2 +- .../com/l2jserver/db/dao/jdbc/AbstractJDBCDAO.java | 2 +- .../l2jserver/db/dao/jdbc/JDBCChatMessageDAO.java | 12 +++++++++++- .../service/database/JDBCDatabaseService.java | 5 +++-- .../service/game/character/CharacterServiceImpl.java | 1 + .../game/world/filter/impl/RangePointFilter.java | 2 +- 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/dist/sql/log_chat.sql b/dist/sql/log_chat.sql index e6003452b..5b81f7a45 100644 --- a/dist/sql/log_chat.sql +++ b/dist/sql/log_chat.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `log_chat` ( `type` enum('ALL','SHOUT','TELL','PARTY','CLAN','GM','PETITION_PLAYER','PETITION_GM','TRADE','ALLIANCE','ANNOUNCEMENT','BOAT','L2FRIEND','MSNCHAT','PARTYMATCH_ROOM','PARTYROOM_COMMANDER','PARTYROOM_ALL','HERO_VOICE','CRITICAL_ANNOUNCE','SCREEN_ANNOUNCE','BATTLEFIELD','MPCC_ROOM') NOT NULL, `channel_id` int(12) NOT NULL, `sender` int(12) NOT NULL, - `date` int(12) NOT NULL, + `date` TIMESTAMP NOT NULL, `message` text NOT NULL, PRIMARY KEY (`message_id`) ) ENGINE=MyISAM; \ No newline at end of file diff --git a/src/dao/com/l2jserver/db/dao/jdbc/AbstractJDBCDAO.java b/src/dao/com/l2jserver/db/dao/jdbc/AbstractJDBCDAO.java index cb3bc7484..7e88f8468 100644 --- a/src/dao/com/l2jserver/db/dao/jdbc/AbstractJDBCDAO.java +++ b/src/dao/com/l2jserver/db/dao/jdbc/AbstractJDBCDAO.java @@ -36,7 +36,7 @@ import com.l2jserver.service.database.JDBCDatabaseService; public abstract class AbstractJDBCDAO, I extends ID> extends AbstractDAO { /** - * The MySQL Database Service + * The JDBC Database Service */ protected final JDBCDatabaseService database; diff --git a/src/dao/com/l2jserver/db/dao/jdbc/JDBCChatMessageDAO.java b/src/dao/com/l2jserver/db/dao/jdbc/JDBCChatMessageDAO.java index ee77d4e73..c930ae547 100644 --- a/src/dao/com/l2jserver/db/dao/jdbc/JDBCChatMessageDAO.java +++ b/src/dao/com/l2jserver/db/dao/jdbc/JDBCChatMessageDAO.java @@ -85,6 +85,16 @@ public abstract class JDBCChatMessageDAO extends return idFactory.resolveID(rs.getInt(MESSAGE_ID)); } }; + + /** + * The {@link Mapper} for {@link ChatMessageID} as a PRIMARY KEY + */ + private final Mapper primaryKeyMapper = new Mapper() { + @Override + public ChatMessageID map(ResultSet rs) throws SQLException { + return idFactory.resolveID(rs.getInt(1)); + } + }; /** * The {@link Mapper} for {@link ChatMessage} @@ -180,7 +190,7 @@ public abstract class JDBCChatMessageDAO extends @Override protected Mapper keyMapper() { - return idMapper; + return primaryKeyMapper; } }) > 0; } diff --git a/src/main/java/com/l2jserver/service/database/JDBCDatabaseService.java b/src/main/java/com/l2jserver/service/database/JDBCDatabaseService.java index 41201633b..b7fec04d8 100644 --- a/src/main/java/com/l2jserver/service/database/JDBCDatabaseService.java +++ b/src/main/java/com/l2jserver/service/database/JDBCDatabaseService.java @@ -20,6 +20,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; import java.util.Iterator; import java.util.List; import java.util.concurrent.TimeUnit; @@ -332,12 +333,12 @@ public class JDBCDatabaseService extends AbstractService implements int rows = 0; while (iterator.hasNext()) { final T object = iterator.next(); - final PreparedStatement st = conn.prepareStatement(query()); + final PreparedStatement st = conn.prepareStatement(query(), Statement.RETURN_GENERATED_KEYS); this.parametize(st, object); rows += st.executeUpdate(); // update object desire --it has been realized - if (object instanceof Model) { + if (object instanceof Model && rows > 0) { ((Model) object).setObjectDesire(ObjectDesire.NONE); final Mapper> mapper = keyMapper(); diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java b/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java index 5b19c08fd..cb7a7e7e0 100644 --- a/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java +++ b/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java @@ -352,6 +352,7 @@ public class CharacterServiceImpl extends AbstractService implements return; final Point3D old = character.getPoint(); character.setPoint(point); + // BroadcastService will catch this event and update the knownlist eventDispatcher.dispatch(new CharacterMoveEvent(character, old)); if (point.getCoordinate().equals( diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java b/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java index fc318439c..b0f3aef37 100644 --- a/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java +++ b/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java @@ -50,7 +50,7 @@ public class RangePointFilter implements WorldObjectFilter { Preconditions.checkNotNull(point, "point"); Preconditions.checkState(range >= 0, "range < 0"); this.point = point; - this.range = Math.pow(range, 2); + this.range = range; } @Override