diff --git a/src/dao/com/l2jserver/db/dao/CharacterDAO.java b/src/dao/com/l2jserver/db/dao/CharacterDAO.java index 3add4daaf..2c7f44e61 100644 --- a/src/dao/com/l2jserver/db/dao/CharacterDAO.java +++ b/src/dao/com/l2jserver/db/dao/CharacterDAO.java @@ -21,6 +21,7 @@ import java.util.List; import com.l2jserver.model.id.AccountID; import com.l2jserver.model.id.ID; import com.l2jserver.model.id.object.CharacterID; +import com.l2jserver.model.world.Clan; import com.l2jserver.model.world.L2Character; import com.l2jserver.service.cache.Cacheable; import com.l2jserver.service.cache.IgnoreCaching; @@ -41,6 +42,14 @@ public interface CharacterDAO extends DataAccessObject, Cacheable { */ L2Character load(CharacterID id); + /** + * Load the members of the given clan + * + * @param clan + * the clan + */ + void load(Clan clan); + /** * Select an character by its name. * diff --git a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAO.java b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAO.java index 1a8b91ce4..1e38c3421 100644 --- a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAO.java +++ b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAO.java @@ -35,6 +35,7 @@ import com.l2jserver.model.id.template.factory.CharacterTemplateIDFactory; import com.l2jserver.model.template.CharacterTemplate; import com.l2jserver.model.world.AbstractActor.Race; import com.l2jserver.model.world.AbstractActor.Sex; +import com.l2jserver.model.world.Clan; import com.l2jserver.model.world.L2Character; import com.l2jserver.model.world.character.CharacterAppearance; import com.l2jserver.model.world.character.CharacterAppearance.CharacterFace; @@ -42,7 +43,6 @@ import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairColo import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairStyle; import com.l2jserver.model.world.character.CharacterClass; import com.l2jserver.service.database.DatabaseService; -import com.l2jserver.service.database.MySQLDatabaseService; import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper; import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery; import com.l2jserver.service.database.MySQLDatabaseService.Mapper; @@ -114,28 +114,18 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO } /** - * The {@link Mapper} instance + * The {@link Mapper} for {@link L2Character} */ - private final CharacterMapper mapper = new CharacterMapper(database); - - /** - * Character mapper class - * - * @author Rogiel - */ - private final class CharacterMapper extends - CachedMapper { - public CharacterMapper(MySQLDatabaseService database) { - super(database); - } - + private final Mapper mapper = new CachedMapper( + database) { @Override protected CharacterID createID(ResultSet rs) throws SQLException { return idFactory.createID(rs.getInt(CHAR_ID)); } @Override - protected L2Character map(CharacterID id, ResultSet rs) throws SQLException { + protected L2Character map(CharacterID id, ResultSet rs) + throws SQLException { final CharacterClass charClass = CharacterClass.valueOf(rs .getString(CLASS)); final CharacterTemplateID templateId = templateIdFactory @@ -176,63 +166,19 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO character.getAppearance().setFace( CharacterFace.valueOf(rs.getString(APPEARANCE_FACE))); - database.updateCache(character.getID(), character); - return character; } + }; - // @Override - // public L2Character map(ResultSet rs) throws SQLException { - // final CharacterID id = idFactory.createID(rs.getInt(CHAR_ID)); - // - // if (database.hasCachedObject(id)) - // return (L2Character) database.getCachedObject(id); - // - // final CharacterClass charClass = CharacterClass.valueOf(rs - // .getString(CLASS)); - // final CharacterTemplateID templateId = templateIdFactory - // .createID(charClass.id); - // final CharacterTemplate template = templateId.getTemplate(); - // - // final L2Character character = new L2Character( - // template.getBaseAttributes()); - // - // character.setID(id); - // character.setAccountID(accountIdFactory.createID(rs - // .getString(ACCOUNT_ID))); - // if (rs.getString(CLAN_ID) != null) - // character.setClanID(clanIdFactory.createID(rs.getInt(CLAN_ID))); - // - // character.setName(rs.getString(NAME)); - // - // character.setRace(Race.valueOf(rs.getString(RACE))); - // character.setCharacterClass(CharacterClass.valueOf(rs - // .getString(CLASS))); - // character.setSex(Sex.valueOf(rs.getString(SEX))); - // - // character.setLevel(rs.getInt(LEVEL)); - // // TODO load experience - // // TODO load sp - // - // character.setPoint(Point.fromXYZA(rs.getInt(POINT_X), - // rs.getInt(POINT_Y), rs.getInt(POINT_Z), - // rs.getDouble(POINT_ANGLE))); - // - // // appearance - // character.getAppearance().setHairStyle( - // CharacterHairStyle.valueOf(rs - // .getString(APPEARANCE_HAIR_STYLE))); - // character.getAppearance().setHairColor( - // CharacterHairColor.valueOf(rs - // .getString(APPEARANCE_HAIR_COLOR))); - // character.getAppearance().setFace( - // CharacterFace.valueOf(rs.getString(APPEARANCE_FACE))); - // - // database.updateCache(character.getID(), character); - // - // return character; - // } - } + /** + * The mapper for {@link CharacterID} + */ + private final Mapper idMapper = new Mapper() { + @Override + public CharacterID map(ResultSet rs) throws SQLException { + return idFactory.createID(rs.getInt(CHAR_ID)); + } + }; @Override public L2Character load(final CharacterID id) { @@ -255,6 +201,29 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO }); } + @Override + public void load(final Clan clan) { + clan.getMembers().load( + database.query(new SelectListQuery() { + @Override + protected String query() { + return "SELECT `" + CHAR_ID + "` FROM `" + TABLE + + "` WHERE `" + CLAN_ID + "` = ?"; + } + + @Override + protected void parametize(PreparedStatement st) + throws SQLException { + st.setInt(1, clan.getID().getID()); + } + + @Override + protected Mapper mapper() { + return idMapper; + } + })); + } + @Override public L2Character selectByName(final String name) { return database.query(new SelectSingleQuery() { @@ -301,17 +270,12 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO return database.query(new SelectListQuery() { @Override protected String query() { - return "SELECT * FROM `" + TABLE + "`"; + return "SELECT `" + CHAR_ID + " FROM `" + TABLE + "`"; } @Override protected Mapper mapper() { - return new Mapper() { - @Override - public CharacterID map(ResultSet rs) throws SQLException { - return idFactory.createID(rs.getInt(CHAR_ID)); - } - }; + return idMapper; } }); } diff --git a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterFriendDAO.java b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterFriendDAO.java index 40fdf82ad..922dbe8c8 100644 --- a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterFriendDAO.java +++ b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5CharacterFriendDAO.java @@ -61,21 +61,14 @@ public class MySQL5CharacterFriendDAO extends AbstractMySQL5DAO } /** - * The {@link Mapper} instance + * The {@link Mapper} for {@link CharacterID} */ - private final CharacterFriendMapper mapper = new CharacterFriendMapper(); - - /** - * The friend list mapper - * - * @author Rogiel - */ - private final class CharacterFriendMapper implements Mapper { + private final Mapper mapper = new Mapper() { @Override public CharacterID map(ResultSet rs) throws SQLException { return idFactory.createID(rs.getInt(CHAR_ID_FRIEND)); } - } + }; @Override public List load(final CharacterID id) { diff --git a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ClanDAO.java b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ClanDAO.java index 5179af93c..9e2557f43 100644 --- a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ClanDAO.java +++ b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ClanDAO.java @@ -30,7 +30,6 @@ import com.l2jserver.model.id.object.factory.CharacterIDFactory; import com.l2jserver.model.id.object.factory.ClanIDFactory; import com.l2jserver.model.world.Clan; import com.l2jserver.service.database.DatabaseService; -import com.l2jserver.service.database.MySQLDatabaseService; import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper; import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery; import com.l2jserver.service.database.MySQLDatabaseService.Mapper; @@ -69,20 +68,9 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO implements ClanDAO { } /** - * The {@link Mapper} instance + * The {@link Mapper} for {@link Clan} */ - private final ClanMapper mapper = new ClanMapper(database); - - /** - * Clan mapper class - * - * @author Rogiel - */ - private final class ClanMapper extends CachedMapper { - public ClanMapper(MySQLDatabaseService database) { - super(database); - } - + private final Mapper mapper = new CachedMapper(database) { @Override protected ClanID createID(ResultSet rs) throws SQLException { return idFactory.createID(rs.getInt(CLAN_ID)); @@ -94,7 +82,17 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO implements ClanDAO { clan.setID(id); return clan; } - } + }; + + /** + * The {@link Mapper} for {@link ClanID} + */ + private final Mapper idMapper = new Mapper() { + @Override + public ClanID map(ResultSet rs) throws SQLException { + return idFactory.createID(rs.getInt(CLAN_ID)); + } + }; @Override public Clan load(final ClanID id) { @@ -127,12 +125,7 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO implements ClanDAO { @Override protected Mapper mapper() { - return new Mapper() { - @Override - public ClanID map(ResultSet rs) throws SQLException { - return idFactory.createID(rs.getInt(CLAN_ID)); - } - }; + return idMapper; } }); } @@ -150,7 +143,6 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO implements ClanDAO { protected void parametize(PreparedStatement st, Clan clan) throws SQLException { int i = 1; - st.setInt(i++, clan.getID().getID()); } }) > 0; diff --git a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ItemDAO.java b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ItemDAO.java index ef5853d30..b2bcdc6a2 100644 --- a/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ItemDAO.java +++ b/src/dao/mysql5/com/l2jserver/db/dao/mysql5/MySQL5ItemDAO.java @@ -34,6 +34,7 @@ import com.l2jserver.model.world.Item; import com.l2jserver.model.world.L2Character; import com.l2jserver.model.world.character.CharacterInventory; import com.l2jserver.service.database.DatabaseService; +import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper; import com.l2jserver.service.database.MySQLDatabaseService.Mapper; import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery; import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery; @@ -80,21 +81,14 @@ public class MySQL5ItemDAO extends AbstractMySQL5DAO implements ItemDAO { /** * The {@link Mapper} instance */ - private final ItemMapper mapper = new ItemMapper(); - - /** - * {@link Item} mapper class - * - * @author Rogiel - */ - private final class ItemMapper implements Mapper { + private final Mapper mapper = new CachedMapper(database) { @Override - public Item map(ResultSet rs) throws SQLException { - final ItemID id = idFactory.createID(rs.getInt(ITEM_ID)); - - if (database.hasCachedObject(id)) - return (Item) database.getCachedObject(id); + protected ItemID createID(ResultSet rs) throws SQLException { + return idFactory.createID(rs.getInt(ITEM_ID)); + } + @Override + public Item map(ItemID id, ResultSet rs) throws SQLException { final ItemTemplateID templateId = templateIdFactory.createID(rs .getInt(TEMPLATE_ID)); final ItemTemplate template = templateId.getTemplate(); @@ -102,12 +96,20 @@ public class MySQL5ItemDAO extends AbstractMySQL5DAO implements ItemDAO { item.setID(id); item.setOwnerID(charIdFactory.createID(rs.getInt(CHAR_ID))); - - database.updateCache(item.getID(), item); return item; } - } + }; + + /** + * The {@link Mapper} for {@link ItemID} + */ + private final Mapper idMapper = new Mapper() { + @Override + public ItemID map(ResultSet rs) throws SQLException { + return idFactory.createID(rs.getInt(CHAR_ID)); + } + }; @Override public Item load(final ItemID id) { @@ -164,12 +166,7 @@ public class MySQL5ItemDAO extends AbstractMySQL5DAO implements ItemDAO { @Override protected Mapper mapper() { - return new Mapper() { - @Override - public ItemID map(ResultSet rs) throws SQLException { - return idFactory.createID(rs.getInt(CHAR_ID)); - } - }; + return idMapper; } }); } diff --git a/src/main/java/com/l2jserver/model/world/Clan.java b/src/main/java/com/l2jserver/model/world/Clan.java index b7e00721b..648c14567 100644 --- a/src/main/java/com/l2jserver/model/world/Clan.java +++ b/src/main/java/com/l2jserver/model/world/Clan.java @@ -76,6 +76,13 @@ public class Clan extends AbstractObject implements this.leaderID = leaderID; } + /** + * @return the members + */ + public ClanMembers getMembers() { + return members; + } + @Override public ClanID getID() { return (ClanID) super.getID(); diff --git a/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java b/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java index a460b3c47..114591fcd 100644 --- a/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java +++ b/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java @@ -16,8 +16,8 @@ */ package com.l2jserver.model.world.clan; +import java.util.Collection; import java.util.Iterator; -import java.util.List; import java.util.Set; import com.l2jserver.model.id.object.CharacterID; @@ -80,7 +80,7 @@ public class ClanMembers implements Iterable { * @param members * the list of members ids */ - public void load(List members) { + public void load(Collection members) { this.members.addAll(members); }