mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-06 07:32:46 +00:00
@@ -2,8 +2,9 @@
|
|||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
|
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
|
||||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
|
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
|
||||||
<classpathentry excluding="mysql5/|db4o/" kind="src" path="src/dao"/>
|
<classpathentry excluding="mysql5/|db4o/|neodatis/|h2/" kind="src" path="src/dao"/>
|
||||||
<classpathentry kind="src" path="src/dao/mysql5"/>
|
<classpathentry kind="src" path="src/dao/mysql5"/>
|
||||||
|
<classpathentry kind="src" path="src/dao/h2"/>
|
||||||
<classpathentry kind="src" output="target/scripts" path="data/script/quest"/>
|
<classpathentry kind="src" output="target/scripts" path="data/script/quest"/>
|
||||||
<classpathentry kind="src" output="target/scripts" path="data/script/ai"/>
|
<classpathentry kind="src" output="target/scripts" path="data/script/ai"/>
|
||||||
<classpathentry kind="src" output="target/scripts" path="data/plugin"/>
|
<classpathentry kind="src" output="target/scripts" path="data/plugin"/>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
jdbc.mysql.url = jdbc:mysql://localhost/l2jserver2
|
jdbc.url = jdbc:h2:./data/database
|
||||||
jdbc.mysql.driver = com.mysql.jdbc.Driver
|
jdbc.driver = org.h2.Driver
|
||||||
jdbc.mysql.username = l2j
|
jdbc.username = l2j
|
||||||
jdbc.mysql.password = changeme
|
jdbc.password = changeme
|
||||||
12
pom.xml
12
pom.xml
@@ -69,6 +69,13 @@
|
|||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<version>1.3.154</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-dbcp</groupId>
|
<groupId>commons-dbcp</groupId>
|
||||||
<artifactId>commons-dbcp</artifactId>
|
<artifactId>commons-dbcp</artifactId>
|
||||||
@@ -108,7 +115,7 @@
|
|||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javacc</groupId>
|
<groupId>net.java.dev.javacc</groupId>
|
||||||
<artifactId>javacc</artifactId>
|
<artifactId>javacc</artifactId>
|
||||||
<version>4.1</version>
|
<version>4.1</version>
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
@@ -221,7 +228,8 @@
|
|||||||
<version>2.2.1</version>
|
<version>2.2.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<descriptors>
|
<descriptors>
|
||||||
<descriptor>src/assembly/distribution-bin.xml</descriptor>
|
<descriptor>src/assembly/distribution-mysql5-bin.xml</descriptor>
|
||||||
|
<descriptor>src/assembly/distribution-h2-bin.xml</descriptor>
|
||||||
<descriptor>src/assembly/distribution-src.xml</descriptor>
|
<descriptor>src/assembly/distribution-src.xml</descriptor>
|
||||||
</descriptors>
|
</descriptors>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
53
src/assembly/distribution-h2-bin.xml
Normal file
53
src/assembly/distribution-h2-bin.xml
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<assembly
|
||||||
|
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||||
|
<id>h2-bin</id>
|
||||||
|
<formats>
|
||||||
|
<format>tar.gz</format>
|
||||||
|
<format>tar.bz2</format>
|
||||||
|
<format>zip</format>
|
||||||
|
</formats>
|
||||||
|
<baseDirectory></baseDirectory>
|
||||||
|
<fileSets>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}</directory>
|
||||||
|
<outputDirectory>/</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>data/**</include>
|
||||||
|
</includes>
|
||||||
|
<excludes>
|
||||||
|
<exclude>.gitignore</exclude>
|
||||||
|
<exclude>data/cache/**</exclude>
|
||||||
|
<exclude>data/pathing.db</exclude>
|
||||||
|
<exclude>data/database.h2.*</exclude>
|
||||||
|
</excludes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}/dist</directory>
|
||||||
|
<outputDirectory>/</outputDirectory>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.build.directory}</directory>
|
||||||
|
<outputDirectory>/</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>*.jar</include>
|
||||||
|
</includes>
|
||||||
|
<excludes>
|
||||||
|
<exclude>*-sources.jar</exclude>
|
||||||
|
<exclude>*-javadoc.jar</exclude>
|
||||||
|
</excludes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
<dependencySets>
|
||||||
|
<dependencySet>
|
||||||
|
<outputDirectory>/libs</outputDirectory>
|
||||||
|
<useProjectArtifact>true</useProjectArtifact>
|
||||||
|
<unpack>false</unpack>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
<excludes>
|
||||||
|
<exclude>mysql:mysql-connector-java</exclude>
|
||||||
|
</excludes>
|
||||||
|
</dependencySet>
|
||||||
|
</dependencySets>
|
||||||
|
</assembly>
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||||
<id>bin</id>
|
<id>mysql5-bin</id>
|
||||||
<formats>
|
<formats>
|
||||||
<format>tar.gz</format>
|
<format>tar.gz</format>
|
||||||
<format>tar.bz2</format>
|
<format>tar.bz2</format>
|
||||||
@@ -16,6 +16,12 @@
|
|||||||
<includes>
|
<includes>
|
||||||
<include>data/**</include>
|
<include>data/**</include>
|
||||||
</includes>
|
</includes>
|
||||||
|
<excludes>
|
||||||
|
<exclude>.gitignore</exclude>
|
||||||
|
<exclude>data/cache/**</exclude>
|
||||||
|
<exclude>data/pathing.db</exclude>
|
||||||
|
<exclude>data/database.h2.*</exclude>
|
||||||
|
</excludes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>${project.basedir}/dist</directory>
|
<directory>${project.basedir}/dist</directory>
|
||||||
@@ -33,19 +39,15 @@
|
|||||||
</excludes>
|
</excludes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
</fileSets>
|
</fileSets>
|
||||||
<!-- <files> -->
|
|
||||||
<!-- <file> -->
|
|
||||||
<!-- <outputDirectory>/data/</outputDirectory> -->
|
|
||||||
<!-- <destName>templates.zip</destName> -->
|
|
||||||
<!-- <source>*templates.zip</source> -->
|
|
||||||
<!-- </file> -->
|
|
||||||
<!-- </files> -->
|
|
||||||
<dependencySets>
|
<dependencySets>
|
||||||
<dependencySet>
|
<dependencySet>
|
||||||
<outputDirectory>/libs</outputDirectory>
|
<outputDirectory>/libs</outputDirectory>
|
||||||
<useProjectArtifact>true</useProjectArtifact>
|
<useProjectArtifact>true</useProjectArtifact>
|
||||||
<unpack>false</unpack>
|
<unpack>false</unpack>
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
|
<excludes>
|
||||||
|
<exclude>com.h2database:h2</exclude>
|
||||||
|
</excludes>
|
||||||
</dependencySet>
|
</dependencySet>
|
||||||
</dependencySets>
|
</dependencySets>
|
||||||
</assembly>
|
</assembly>
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.db.dao;
|
package com.l2jserver.db.dao;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.l2jserver.model.id.object.NPCID;
|
import com.l2jserver.model.id.object.NPCID;
|
||||||
@@ -35,7 +36,7 @@ public interface NPCDAO extends DataAccessObject<NPC, NPCID>, Cacheable {
|
|||||||
*
|
*
|
||||||
* @return all NPC instances
|
* @return all NPC instances
|
||||||
*/
|
*/
|
||||||
List<NPC> loadAll();
|
Collection<NPC> loadAll();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Select an {@link NPC} by its template.
|
* Select an {@link NPC} by its template.
|
||||||
|
|||||||
45
src/dao/h2/com/l2jserver/db/dao/H2DAOModule.java
Normal file
45
src/dao/h2/com/l2jserver/db/dao/H2DAOModule.java
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver <l2jserver.com>.
|
||||||
|
*
|
||||||
|
* l2jserver is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* l2jserver is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jserver.db.dao;
|
||||||
|
|
||||||
|
import com.google.inject.AbstractModule;
|
||||||
|
import com.google.inject.Module;
|
||||||
|
import com.google.inject.Scopes;
|
||||||
|
import com.l2jserver.db.dao.h2.H2CharacterDAO;
|
||||||
|
import com.l2jserver.db.dao.h2.H2CharacterFriendDAO;
|
||||||
|
import com.l2jserver.db.dao.h2.H2ClanDAO;
|
||||||
|
import com.l2jserver.db.dao.h2.H2ItemDAO;
|
||||||
|
import com.l2jserver.db.dao.h2.H2NPCDAO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Google Guice {@link Module} for H2 DAOs
|
||||||
|
*
|
||||||
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*/
|
||||||
|
public class H2DAOModule extends AbstractModule {
|
||||||
|
@Override
|
||||||
|
protected void configure() {
|
||||||
|
bind(CharacterDAO.class).to(H2CharacterDAO.class).in(Scopes.SINGLETON);
|
||||||
|
bind(CharacterFriendDAO.class).to(H2CharacterFriendDAO.class).in(
|
||||||
|
Scopes.SINGLETON);
|
||||||
|
|
||||||
|
bind(NPCDAO.class).to(H2NPCDAO.class).in(Scopes.SINGLETON);
|
||||||
|
|
||||||
|
bind(ItemDAO.class).to(H2ItemDAO.class).in(Scopes.SINGLETON);
|
||||||
|
bind(ClanDAO.class).to(H2ClanDAO.class).in(Scopes.SINGLETON);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,29 +14,35 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.l2jserver.service.database;
|
package com.l2jserver.db.dao.h2;
|
||||||
|
|
||||||
import java.io.File;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.service.configuration.Configuration.ConfigurationName;
|
import com.l2jserver.model.id.ID;
|
||||||
|
import com.l2jserver.service.database.AbstractDAO;
|
||||||
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for DB4O Database Service
|
* {@link AbstractDAO} for H2 DAO implementation
|
||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*
|
||||||
|
* @param <T>
|
||||||
|
* the object for the DAO
|
||||||
|
* @param <I>
|
||||||
|
* the object ID type
|
||||||
*/
|
*/
|
||||||
@ConfigurationName("db4o")
|
public abstract class AbstractH2DAO<T extends Model<?>, I extends ID<?>>
|
||||||
public interface DB4ODatabaseConfiguration extends DatabaseConfiguration {
|
extends AbstractDAO<T, I> {
|
||||||
/**
|
/**
|
||||||
* @return the database file
|
* The H2 Database Service
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertyGetter(name = "db4o.file", defaultValue = "database.bin")
|
protected final JDBCDatabaseService database;
|
||||||
File getDatabaseFile();
|
|
||||||
|
|
||||||
/**
|
@Inject
|
||||||
* @param jdbcUrl
|
protected AbstractH2DAO(DatabaseService database) {
|
||||||
* the new database file
|
super(database);
|
||||||
*/
|
this.database = (JDBCDatabaseService) database;
|
||||||
@ConfigurationPropertySetter(name = "db4o.file")
|
}
|
||||||
void setDatabaseFile(File file);
|
|
||||||
}
|
}
|
||||||
420
src/dao/h2/com/l2jserver/db/dao/h2/H2CharacterDAO.java
Normal file
420
src/dao/h2/com/l2jserver/db/dao/h2/H2CharacterDAO.java
Normal file
@@ -0,0 +1,420 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver <l2jserver.com>.
|
||||||
|
*
|
||||||
|
* l2jserver is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* l2jserver is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jserver.db.dao.h2;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Types;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.db.dao.CharacterDAO;
|
||||||
|
import com.l2jserver.model.id.AccountID;
|
||||||
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
|
import com.l2jserver.model.id.object.ClanID;
|
||||||
|
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
||||||
|
import com.l2jserver.model.id.object.provider.ClanIDProvider;
|
||||||
|
import com.l2jserver.model.id.provider.AccountIDProvider;
|
||||||
|
import com.l2jserver.model.id.template.CharacterTemplateID;
|
||||||
|
import com.l2jserver.model.id.template.provider.CharacterTemplateIDProvider;
|
||||||
|
import com.l2jserver.model.template.CharacterTemplate;
|
||||||
|
import com.l2jserver.model.world.Actor.ActorRace;
|
||||||
|
import com.l2jserver.model.world.Actor.ActorSex;
|
||||||
|
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;
|
||||||
|
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairColor;
|
||||||
|
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.JDBCDatabaseService.CachedMapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
import com.l2jserver.util.dimensional.Point;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link CharacterDAO} implementation for H2
|
||||||
|
*
|
||||||
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*/
|
||||||
|
public class H2CharacterDAO extends
|
||||||
|
AbstractH2DAO<L2Character, CharacterID> implements CharacterDAO {
|
||||||
|
/**
|
||||||
|
* The {@link CharacterID} factory
|
||||||
|
*/
|
||||||
|
private final CharacterIDProvider idFactory;
|
||||||
|
/**
|
||||||
|
* The {@link CharacterTemplateID} factory
|
||||||
|
*/
|
||||||
|
private final CharacterTemplateIDProvider templateIdFactory;
|
||||||
|
/**
|
||||||
|
* The {@link AccountID} factory
|
||||||
|
*/
|
||||||
|
private final AccountIDProvider accountIdFactory;
|
||||||
|
/**
|
||||||
|
* The {@link ClanID} factory
|
||||||
|
*/
|
||||||
|
private final ClanIDProvider clanIdFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Character table name
|
||||||
|
*/
|
||||||
|
public static final String TABLE = "character";
|
||||||
|
// FIELDS
|
||||||
|
public static final String CHAR_ID = "character_id";
|
||||||
|
public static final String ACCOUNT_ID = "account_id";
|
||||||
|
public static final String CLAN_ID = "clan_id";
|
||||||
|
public static final String NAME = "name";
|
||||||
|
|
||||||
|
public static final String RACE = "race";
|
||||||
|
public static final String CLASS = "class";
|
||||||
|
public static final String SEX = "sex";
|
||||||
|
|
||||||
|
public static final String LEVEL = "level";
|
||||||
|
public static final String EXPERIENCE = "experience";
|
||||||
|
public static final String SP = "sp";
|
||||||
|
|
||||||
|
public static final String HP = "hp";
|
||||||
|
public static final String MP = "mp";
|
||||||
|
public static final String CP = "cp";
|
||||||
|
|
||||||
|
public static final String POINT_X = "point_x";
|
||||||
|
public static final String POINT_Y = "point_y";
|
||||||
|
public static final String POINT_Z = "point_z";
|
||||||
|
public static final String POINT_ANGLE = "point_angle";
|
||||||
|
|
||||||
|
public static final String APPEARANCE_HAIR_STYLE = "appearance_hair_style";
|
||||||
|
public static final String APPEARANCE_HAIR_COLOR = "appearance_hair_color";
|
||||||
|
public static final String APPEARANCE_FACE = "apperance_face";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public H2CharacterDAO(DatabaseService database,
|
||||||
|
final CharacterIDProvider idFactory,
|
||||||
|
CharacterTemplateIDProvider templateIdFactory,
|
||||||
|
AccountIDProvider accountIdFactory, ClanIDProvider clanIdFactory) {
|
||||||
|
super(database);
|
||||||
|
this.idFactory = idFactory;
|
||||||
|
this.templateIdFactory = templateIdFactory;
|
||||||
|
this.accountIdFactory = accountIdFactory;
|
||||||
|
this.clanIdFactory = clanIdFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mapper for {@link CharacterID}
|
||||||
|
*/
|
||||||
|
private final Mapper<CharacterID> idMapper = new Mapper<CharacterID>() {
|
||||||
|
@Override
|
||||||
|
public CharacterID map(ResultSet rs) throws SQLException {
|
||||||
|
return idFactory.createID(rs.getInt(CHAR_ID));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link L2Character}
|
||||||
|
*/
|
||||||
|
private final Mapper<L2Character> mapper = new CachedMapper<L2Character, CharacterID>(
|
||||||
|
database, idMapper) {
|
||||||
|
@Override
|
||||||
|
protected L2Character map(CharacterID id, ResultSet rs)
|
||||||
|
throws SQLException {
|
||||||
|
final CharacterClass charClass = CharacterClass.valueOf(rs
|
||||||
|
.getString(CLASS));
|
||||||
|
final CharacterTemplateID templateId = templateIdFactory
|
||||||
|
.createID(charClass.id);
|
||||||
|
final CharacterTemplate template = templateId.getTemplate();
|
||||||
|
|
||||||
|
final L2Character character = template.create();
|
||||||
|
|
||||||
|
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(ActorRace.valueOf(rs.getString(RACE)));
|
||||||
|
character.setCharacterClass(CharacterClass.valueOf(rs
|
||||||
|
.getString(CLASS)));
|
||||||
|
character.setSex(ActorSex.valueOf(rs.getString(SEX)));
|
||||||
|
|
||||||
|
character.setLevel(rs.getInt(LEVEL));
|
||||||
|
character.setExperience(rs.getLong(EXPERIENCE));
|
||||||
|
character.setSP(rs.getInt(SP));
|
||||||
|
|
||||||
|
character.setHP(rs.getDouble(HP));
|
||||||
|
character.setMP(rs.getDouble(MP));
|
||||||
|
character.setCP(rs.getDouble(CP));
|
||||||
|
|
||||||
|
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)));
|
||||||
|
|
||||||
|
return character;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public L2Character select(final CharacterID id) {
|
||||||
|
return database.query(new SelectSingleQuery<L2Character>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + CHAR_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, id.getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<L2Character> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(final Clan clan) {
|
||||||
|
clan.getMembers().load(
|
||||||
|
database.query(new SelectListQuery<CharacterID>() {
|
||||||
|
@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<CharacterID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public L2Character selectByName(final String name) {
|
||||||
|
return database.query(new SelectSingleQuery<L2Character>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + NAME + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setString(1, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<L2Character> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<L2Character> selectByAccount(final AccountID account) {
|
||||||
|
return database.query(new SelectListQuery<L2Character>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + ACCOUNT_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setString(1, account.getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<L2Character> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CharacterID> selectIDs() {
|
||||||
|
return database.query(new SelectListQuery<CharacterID>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT `" + CHAR_ID + "` FROM `" + TABLE + "`";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<CharacterID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean insert(L2Character character) {
|
||||||
|
return database.query(new InsertUpdateQuery<L2Character>(character) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "INSERT INTO `" + TABLE + "` (`" + CHAR_ID + "`,`"
|
||||||
|
+ ACCOUNT_ID + "`,`" + CLAN_ID + "`,`" + NAME + "`,`"
|
||||||
|
+ RACE + "`,`" + CLASS + "`,`" + SEX + "`,`" + LEVEL
|
||||||
|
+ "`,`" + EXPERIENCE + "`,`" + SP + "`,`" + HP + "`,`"
|
||||||
|
+ MP + "`,`" + CP + "`,`" + POINT_X + "`,`" + POINT_Y
|
||||||
|
+ "`,`" + POINT_Z + "`,`" + POINT_ANGLE + "`,`"
|
||||||
|
+ APPEARANCE_HAIR_STYLE + "`,`" + APPEARANCE_HAIR_COLOR
|
||||||
|
+ "`,`" + APPEARANCE_FACE
|
||||||
|
+ "`) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st,
|
||||||
|
L2Character character) throws SQLException {
|
||||||
|
final CharacterAppearance appearance = character
|
||||||
|
.getAppearance();
|
||||||
|
int i = 1;
|
||||||
|
|
||||||
|
st.setInt(i++, character.getID().getID());
|
||||||
|
st.setString(i++, character.getAccountID().getID());
|
||||||
|
if (character.getClanID() != null)
|
||||||
|
st.setInt(i++, character.getClanID().getID());
|
||||||
|
else
|
||||||
|
st.setNull(i++, Types.INTEGER);
|
||||||
|
|
||||||
|
st.setString(i++, character.getName());
|
||||||
|
|
||||||
|
st.setString(i++, character.getRace().name());
|
||||||
|
st.setString(i++, character.getCharacterClass().name());
|
||||||
|
st.setString(i++, character.getSex().name());
|
||||||
|
|
||||||
|
st.setInt(i++, character.getLevel());
|
||||||
|
st.setLong(i++, character.getExperience());
|
||||||
|
st.setInt(i++, character.getSP());
|
||||||
|
|
||||||
|
st.setDouble(i++, character.getHP());
|
||||||
|
st.setDouble(i++, character.getMP());
|
||||||
|
st.setDouble(i++, character.getCP());
|
||||||
|
|
||||||
|
st.setInt(i++, character.getPoint().getX());
|
||||||
|
st.setInt(i++, character.getPoint().getY());
|
||||||
|
st.setInt(i++, character.getPoint().getZ());
|
||||||
|
st.setDouble(i++, character.getPoint().getAngle());
|
||||||
|
|
||||||
|
// appearance
|
||||||
|
st.setString(i++, appearance.getHairStyle().name());
|
||||||
|
st.setString(i++, appearance.getHairColor().name());
|
||||||
|
st.setString(i++, appearance.getFace().name());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(L2Character character) {
|
||||||
|
return database.query(new InsertUpdateQuery<L2Character>(character) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "UPDATE `" + TABLE + "` SET " + ACCOUNT_ID + "` = ?,`"
|
||||||
|
+ CLAN_ID + "` = ?,`" + NAME + "` = ?,`" + RACE
|
||||||
|
+ "` = ?,`" + CLASS + "` = ?,`" + SEX + "` = ?,`"
|
||||||
|
+ LEVEL + "` = ?,`" + EXPERIENCE + "` = ?,`" + SP
|
||||||
|
+ "` = ?,`" + HP + "` = ?,`" + MP + "` = ?,`" + CP
|
||||||
|
+ "` = ?,`" + POINT_X + "` = ?,`" + POINT_Y + "` = ?,`"
|
||||||
|
+ POINT_Z + "` = ?,`" + POINT_ANGLE + "` = ?,`"
|
||||||
|
+ APPEARANCE_HAIR_STYLE + "` = ?,`"
|
||||||
|
+ APPEARANCE_HAIR_COLOR + "` = ?,`" + APPEARANCE_FACE
|
||||||
|
+ "` = ? WHERE `" + CHAR_ID + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st,
|
||||||
|
L2Character character) throws SQLException {
|
||||||
|
final CharacterAppearance appearance = character
|
||||||
|
.getAppearance();
|
||||||
|
int i = 1;
|
||||||
|
|
||||||
|
// SET
|
||||||
|
st.setString(i++, character.getAccountID().getID());
|
||||||
|
if (character.getClanID() != null)
|
||||||
|
st.setInt(i++, character.getClanID().getID());
|
||||||
|
else
|
||||||
|
st.setNull(i++, Types.INTEGER);
|
||||||
|
|
||||||
|
st.setString(i++, character.getName());
|
||||||
|
|
||||||
|
st.setString(i++, character.getRace().name());
|
||||||
|
st.setString(i++, character.getCharacterClass().name());
|
||||||
|
st.setString(i++, character.getSex().name());
|
||||||
|
|
||||||
|
st.setInt(i++, character.getLevel());
|
||||||
|
st.setLong(i++, character.getExperience());
|
||||||
|
st.setInt(i++, character.getSP());
|
||||||
|
|
||||||
|
st.setDouble(i++, character.getHP());
|
||||||
|
st.setDouble(i++, character.getMP());
|
||||||
|
st.setDouble(i++, character.getCP());
|
||||||
|
|
||||||
|
// position
|
||||||
|
st.setInt(i++, character.getPoint().getX());
|
||||||
|
st.setInt(i++, character.getPoint().getY());
|
||||||
|
st.setInt(i++, character.getPoint().getZ());
|
||||||
|
st.setDouble(i++, character.getPoint().getAngle());
|
||||||
|
|
||||||
|
// appearance
|
||||||
|
st.setString(i++, appearance.getHairStyle().name());
|
||||||
|
st.setString(i++, appearance.getHairColor().name());
|
||||||
|
st.setString(i++, appearance.getFace().name());
|
||||||
|
|
||||||
|
// WHERE
|
||||||
|
st.setInt(i++, character.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(L2Character character) {
|
||||||
|
return database.query(new InsertUpdateQuery<L2Character>(character) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "DELETE FROM `" + TABLE + "` WHERE `" + CHAR_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st,
|
||||||
|
L2Character character) throws SQLException {
|
||||||
|
st.setInt(1, character.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
221
src/dao/h2/com/l2jserver/db/dao/h2/H2CharacterFriendDAO.java
Normal file
221
src/dao/h2/com/l2jserver/db/dao/h2/H2CharacterFriendDAO.java
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver <l2jserver.com>.
|
||||||
|
*
|
||||||
|
* l2jserver is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* l2jserver is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jserver.db.dao.h2;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.db.dao.CharacterFriendDAO;
|
||||||
|
import com.l2jserver.model.game.CharacterFriend;
|
||||||
|
import com.l2jserver.model.id.FriendID;
|
||||||
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
|
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
||||||
|
import com.l2jserver.model.id.provider.FriendIDProvider;
|
||||||
|
import com.l2jserver.model.world.L2Character;
|
||||||
|
import com.l2jserver.model.world.character.CharacterFriendList;
|
||||||
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link CharacterFriendDAO} implementation for H2
|
||||||
|
*
|
||||||
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*/
|
||||||
|
public class H2CharacterFriendDAO extends
|
||||||
|
AbstractH2DAO<CharacterFriend, FriendID> implements CharacterFriendDAO {
|
||||||
|
/**
|
||||||
|
* The {@link FriendID} provider
|
||||||
|
*/
|
||||||
|
private final FriendIDProvider idProvider;
|
||||||
|
/**
|
||||||
|
* The {@link CharacterID} provider
|
||||||
|
*/
|
||||||
|
private final CharacterIDProvider charIdProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Character table name
|
||||||
|
*/
|
||||||
|
public static final String TABLE = "character_friend";
|
||||||
|
// FIELDS
|
||||||
|
public static final String CHAR_ID = H2CharacterDAO.CHAR_ID;
|
||||||
|
public static final String CHAR_ID_FRIEND = H2CharacterDAO.CHAR_ID
|
||||||
|
+ "_friend";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public H2CharacterFriendDAO(DatabaseService database,
|
||||||
|
final FriendIDProvider idProvider,
|
||||||
|
CharacterIDProvider charIdProvider) {
|
||||||
|
super(database);
|
||||||
|
this.idProvider = idProvider;
|
||||||
|
this.charIdProvider = charIdProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link FriendID}
|
||||||
|
*/
|
||||||
|
private final Mapper<FriendID> idMapper = new Mapper<FriendID>() {
|
||||||
|
@Override
|
||||||
|
public FriendID map(ResultSet rs) throws SQLException {
|
||||||
|
final CharacterID characterId = charIdProvider.createID(rs
|
||||||
|
.getInt(CHAR_ID));
|
||||||
|
final CharacterID friendId = charIdProvider.createID(rs
|
||||||
|
.getInt(CHAR_ID_FRIEND));
|
||||||
|
return idProvider.createID(characterId, friendId);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link CharacterFriend}
|
||||||
|
*/
|
||||||
|
private final Mapper<CharacterFriend> mapper = new CachedMapper<CharacterFriend, FriendID>(
|
||||||
|
database, idMapper) {
|
||||||
|
@Override
|
||||||
|
protected CharacterFriend map(FriendID id, ResultSet rs)
|
||||||
|
throws SQLException {
|
||||||
|
return new CharacterFriend(id);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharacterFriend select(final FriendID id) {
|
||||||
|
return database.query(new SelectSingleQuery<CharacterFriend>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + CHAR_ID
|
||||||
|
+ "` = ? AND `" + CHAR_ID_FRIEND + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, id.getID1().getID());
|
||||||
|
st.setInt(2, id.getID2().getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<CharacterFriend> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(final L2Character character) {
|
||||||
|
final List<CharacterFriend> list = database
|
||||||
|
.query(new SelectListQuery<CharacterFriend>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `"
|
||||||
|
+ CHAR_ID + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st)
|
||||||
|
throws SQLException {
|
||||||
|
st.setInt(1, character.getID().getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<CharacterFriend> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
character.getFriendList().load(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FriendID> selectIDs() {
|
||||||
|
return database.query(new SelectListQuery<FriendID>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "`";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<FriendID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean insert(CharacterFriend friend) {
|
||||||
|
return database.query(new InsertUpdateQuery<CharacterFriend>(friend) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "INSERT INTO `" + TABLE + "` (`" + CHAR_ID + "`,`"
|
||||||
|
+ CHAR_ID_FRIEND + "`) VALUES(?,?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st,
|
||||||
|
CharacterFriend friend) throws SQLException {
|
||||||
|
st.setInt(1, friend.getCharacterID().getID());
|
||||||
|
st.setInt(2, friend.getFriendID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(CharacterFriend friend) {
|
||||||
|
// it is not possible update friend objects, because they are only a ID
|
||||||
|
// pair and IDs are immutable
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(CharacterFriend friend) {
|
||||||
|
return database.query(new InsertUpdateQuery<CharacterFriend>(friend) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "DELETE FROM `" + TABLE + "` WHERE `" + CHAR_ID
|
||||||
|
+ "` = ?,`" + CHAR_ID_FRIEND + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st,
|
||||||
|
CharacterFriend friend) throws SQLException {
|
||||||
|
st.setInt(1, friend.getCharacterID().getID());
|
||||||
|
st.setInt(2, friend.getFriendID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean save(final CharacterFriendList friends) {
|
||||||
|
for (final CharacterFriend friend : friends) {
|
||||||
|
if (!save(friend))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(final CharacterFriendList friends) {
|
||||||
|
for (final CharacterFriend friend : friends) {
|
||||||
|
if (!delete(friend))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
170
src/dao/h2/com/l2jserver/db/dao/h2/H2ClanDAO.java
Normal file
170
src/dao/h2/com/l2jserver/db/dao/h2/H2ClanDAO.java
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver <l2jserver.com>.
|
||||||
|
*
|
||||||
|
* l2jserver is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* l2jserver is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jserver.db.dao.h2;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.db.dao.CharacterDAO;
|
||||||
|
import com.l2jserver.db.dao.ClanDAO;
|
||||||
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
|
import com.l2jserver.model.id.object.ClanID;
|
||||||
|
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
||||||
|
import com.l2jserver.model.id.object.provider.ClanIDProvider;
|
||||||
|
import com.l2jserver.model.world.Clan;
|
||||||
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link CharacterDAO} implementation for H2
|
||||||
|
*
|
||||||
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*/
|
||||||
|
public class H2ClanDAO extends AbstractH2DAO<Clan, ClanID> implements ClanDAO {
|
||||||
|
/**
|
||||||
|
* The {@link ClanID} factory
|
||||||
|
*/
|
||||||
|
private final ClanIDProvider idFactory;
|
||||||
|
/**
|
||||||
|
* The {@link CharacterID} factory
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private final CharacterIDProvider charIdFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Character table name
|
||||||
|
*/
|
||||||
|
public static final String TABLE = "clan";
|
||||||
|
// FIELDS
|
||||||
|
public static final String CLAN_ID = "clan_id";
|
||||||
|
public static final String CHAR_ID_LEADER = "character_id_leader";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public H2ClanDAO(DatabaseService database, ClanIDProvider clanIdFactory,
|
||||||
|
final CharacterIDProvider idFactory) {
|
||||||
|
super(database);
|
||||||
|
this.idFactory = clanIdFactory;
|
||||||
|
this.charIdFactory = idFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link ClanID}
|
||||||
|
*/
|
||||||
|
private final Mapper<ClanID> idMapper = new Mapper<ClanID>() {
|
||||||
|
@Override
|
||||||
|
public ClanID map(ResultSet rs) throws SQLException {
|
||||||
|
return idFactory.createID(rs.getInt(CLAN_ID));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link Clan}
|
||||||
|
*/
|
||||||
|
private final Mapper<Clan> mapper = new CachedMapper<Clan, ClanID>(
|
||||||
|
database, idMapper) {
|
||||||
|
@Override
|
||||||
|
protected Clan map(ClanID id, ResultSet rs) throws SQLException {
|
||||||
|
final Clan clan = new Clan();
|
||||||
|
clan.setID(id);
|
||||||
|
return clan;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Clan select(final ClanID id) {
|
||||||
|
return database.query(new SelectSingleQuery<Clan>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + CLAN_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, id.getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<Clan> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ClanID> selectIDs() {
|
||||||
|
return database.query(new SelectListQuery<ClanID>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "`";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<ClanID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean insert(Clan clan) {
|
||||||
|
return database.query(new InsertUpdateQuery<Clan>(clan) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "INSERT INTO `" + TABLE + "` (`" + CLAN_ID
|
||||||
|
+ "`) VALUES(?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st, Clan clan)
|
||||||
|
throws SQLException {
|
||||||
|
int i = 1;
|
||||||
|
st.setInt(i++, clan.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(Clan clan) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(Clan clan) {
|
||||||
|
return database.query(new InsertUpdateQuery<Clan>(clan) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "DELETE FROM `" + TABLE + "` WHERE `" + CLAN_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st, Clan clan)
|
||||||
|
throws SQLException {
|
||||||
|
st.setInt(1, clan.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
223
src/dao/h2/com/l2jserver/db/dao/h2/H2ItemDAO.java
Normal file
223
src/dao/h2/com/l2jserver/db/dao/h2/H2ItemDAO.java
Normal file
@@ -0,0 +1,223 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver <l2jserver.com>.
|
||||||
|
*
|
||||||
|
* l2jserver is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* l2jserver is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jserver.db.dao.h2;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.db.dao.ItemDAO;
|
||||||
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
|
import com.l2jserver.model.id.object.ItemID;
|
||||||
|
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
||||||
|
import com.l2jserver.model.id.object.provider.ItemIDProvider;
|
||||||
|
import com.l2jserver.model.id.template.ItemTemplateID;
|
||||||
|
import com.l2jserver.model.id.template.provider.ItemTemplateIDProvider;
|
||||||
|
import com.l2jserver.model.template.ItemTemplate;
|
||||||
|
import com.l2jserver.model.world.Item;
|
||||||
|
import com.l2jserver.model.world.L2Character;
|
||||||
|
import com.l2jserver.model.world.character.CharacterInventory;
|
||||||
|
import com.l2jserver.model.world.character.CharacterInventory.InventoryLocation;
|
||||||
|
import com.l2jserver.model.world.character.CharacterInventory.InventoryPaperdoll;
|
||||||
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
import com.l2jserver.util.dimensional.Coordinate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ItemDAO} implementation for H2f
|
||||||
|
*
|
||||||
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*/
|
||||||
|
public class H2ItemDAO extends AbstractH2DAO<Item, ItemID> implements
|
||||||
|
ItemDAO {
|
||||||
|
/**
|
||||||
|
* The {@link ItemID} factory
|
||||||
|
*/
|
||||||
|
private final ItemIDProvider idFactory;
|
||||||
|
/**
|
||||||
|
* The {@link ItemTemplateID} factory
|
||||||
|
*/
|
||||||
|
private final ItemTemplateIDProvider templateIdFactory;
|
||||||
|
/**
|
||||||
|
* The {@link CharacterID} factory
|
||||||
|
*/
|
||||||
|
private final CharacterIDProvider charIdFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Character table name
|
||||||
|
*/
|
||||||
|
public static final String TABLE = "item";
|
||||||
|
// FIELDS
|
||||||
|
public static final String ITEM_ID = "item_id";
|
||||||
|
public static final String TEMPLATE_ID = "template_id";
|
||||||
|
public static final String CHAR_ID = H2CharacterDAO.CHAR_ID;
|
||||||
|
|
||||||
|
public static final String LOCATION = "location";
|
||||||
|
public static final String PAPERDOLL = "paperdoll";
|
||||||
|
public static final String COUNT = "count";
|
||||||
|
public static final String COORD_X = "coord_x";
|
||||||
|
public static final String COORD_Y = "coord_y";
|
||||||
|
public static final String COORD_Z = "coord_z";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public H2ItemDAO(DatabaseService database,
|
||||||
|
final ItemIDProvider idFactory,
|
||||||
|
ItemTemplateIDProvider templateIdFactory,
|
||||||
|
CharacterIDProvider charIdFactory) {
|
||||||
|
super(database);
|
||||||
|
this.idFactory = idFactory;
|
||||||
|
this.templateIdFactory = templateIdFactory;
|
||||||
|
this.charIdFactory = charIdFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link ItemID}
|
||||||
|
*/
|
||||||
|
private final Mapper<ItemID> idMapper = new Mapper<ItemID>() {
|
||||||
|
@Override
|
||||||
|
public ItemID map(ResultSet rs) throws SQLException {
|
||||||
|
return idFactory.createID(rs.getInt(ITEM_ID));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} instance
|
||||||
|
*/
|
||||||
|
private final Mapper<Item> mapper = new CachedMapper<Item, ItemID>(
|
||||||
|
database, idMapper) {
|
||||||
|
@Override
|
||||||
|
public Item map(ItemID id, ResultSet rs) throws SQLException {
|
||||||
|
final ItemTemplateID templateId = templateIdFactory.createID(rs
|
||||||
|
.getInt(TEMPLATE_ID));
|
||||||
|
final ItemTemplate template = templateId.getTemplate();
|
||||||
|
final Item item = template.create();
|
||||||
|
|
||||||
|
item.setID(id);
|
||||||
|
if (rs.getObject(CHAR_ID) != null)
|
||||||
|
item.setOwnerID(charIdFactory.createID(rs.getInt(CHAR_ID)));
|
||||||
|
if (rs.getObject(LOCATION) != null)
|
||||||
|
item.setLocation(InventoryLocation.valueOf(rs
|
||||||
|
.getString(LOCATION)));
|
||||||
|
if (rs.getObject(PAPERDOLL) != null)
|
||||||
|
item.setPaperdoll(InventoryPaperdoll.valueOf(rs
|
||||||
|
.getString(PAPERDOLL)));
|
||||||
|
|
||||||
|
item.setCount(rs.getInt(COUNT));
|
||||||
|
|
||||||
|
if (rs.getObject(COORD_X) != null && rs.getObject(COORD_Y) != null
|
||||||
|
&& rs.getObject(COORD_Z) != null)
|
||||||
|
item.setPosition(Coordinate.fromXYZ(rs.getInt(COORD_X),
|
||||||
|
rs.getInt(COORD_Y), rs.getInt(COORD_Z)));
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item select(final ItemID id) {
|
||||||
|
return database.query(new SelectSingleQuery<Item>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + ITEM_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, id.getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<Item> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int loadInventory(final L2Character character) {
|
||||||
|
final CharacterInventory inventory = character.getInventory();
|
||||||
|
final List<Item> items = database.query(new SelectListQuery<Item>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + CHAR_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, character.getID().getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<Item> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
inventory.load(items);
|
||||||
|
return items.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ItemID> selectIDs() {
|
||||||
|
return database.query(new SelectListQuery<ItemID>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT `" + ITEM_ID + "` FROM `" + TABLE + "`";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<ItemID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean insert(Item item) {
|
||||||
|
throw new UnsupportedOperationException(
|
||||||
|
"Saving items is not yet implemented!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(Item item) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(Item item) {
|
||||||
|
return database.query(new InsertUpdateQuery<Item>(item) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "DELETE FROM `" + TABLE + "` WHERE `" + ITEM_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st, Item item)
|
||||||
|
throws SQLException {
|
||||||
|
st.setInt(1, item.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
265
src/dao/h2/com/l2jserver/db/dao/h2/H2NPCDAO.java
Normal file
265
src/dao/h2/com/l2jserver/db/dao/h2/H2NPCDAO.java
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver <l2jserver.com>.
|
||||||
|
*
|
||||||
|
* l2jserver is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* l2jserver is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jserver.db.dao.h2;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.db.dao.CharacterDAO;
|
||||||
|
import com.l2jserver.db.dao.NPCDAO;
|
||||||
|
import com.l2jserver.model.id.object.NPCID;
|
||||||
|
import com.l2jserver.model.id.object.provider.NPCIDProvider;
|
||||||
|
import com.l2jserver.model.id.template.NPCTemplateID;
|
||||||
|
import com.l2jserver.model.id.template.provider.NPCTemplateIDProvider;
|
||||||
|
import com.l2jserver.model.template.NPCTemplate;
|
||||||
|
import com.l2jserver.model.world.NPC;
|
||||||
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
import com.l2jserver.util.dimensional.Point;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link CharacterDAO} implementation for H2
|
||||||
|
*
|
||||||
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
*/
|
||||||
|
public class H2NPCDAO extends AbstractH2DAO<NPC, NPCID> implements NPCDAO {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link NPCID} provider
|
||||||
|
*/
|
||||||
|
private final NPCIDProvider idProvider;
|
||||||
|
/**
|
||||||
|
* The {@link NPCTemplateID} provider
|
||||||
|
*/
|
||||||
|
private final NPCTemplateIDProvider templateIdProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Character table name
|
||||||
|
*/
|
||||||
|
public static final String TABLE = "npc";
|
||||||
|
// FIELDS
|
||||||
|
public static final String NPC_ID = "npc_id";
|
||||||
|
public static final String NPC_TEMPLATE_ID = "npc_template_id";
|
||||||
|
|
||||||
|
public static final String POINT_X = "point_x";
|
||||||
|
public static final String POINT_Y = "point_y";
|
||||||
|
public static final String POINT_Z = "point_z";
|
||||||
|
public static final String POINT_ANGLE = "point_angle";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public H2NPCDAO(DatabaseService database, final NPCIDProvider idProvider,
|
||||||
|
NPCTemplateIDProvider templateIdProvider) {
|
||||||
|
super(database);
|
||||||
|
this.idProvider = idProvider;
|
||||||
|
this.templateIdProvider = templateIdProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link NPCID}
|
||||||
|
*/
|
||||||
|
private final Mapper<NPCID> idMapper = new Mapper<NPCID>() {
|
||||||
|
@Override
|
||||||
|
public NPCID map(ResultSet rs) throws SQLException {
|
||||||
|
if (rs.getString(NPC_ID) == null)
|
||||||
|
return null;
|
||||||
|
return idProvider.createID(rs.getInt(NPC_ID));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link NPC}
|
||||||
|
*/
|
||||||
|
private final Mapper<NPC> mapper = new CachedMapper<NPC, NPCID>(database,
|
||||||
|
idMapper) {
|
||||||
|
@Override
|
||||||
|
protected NPC map(NPCID id, ResultSet rs) throws SQLException {
|
||||||
|
NPCTemplateID templateId = templateIdProvider.createID(rs
|
||||||
|
.getInt(NPC_TEMPLATE_ID));
|
||||||
|
NPCTemplate template = templateId.getTemplate();
|
||||||
|
if (template == null) {
|
||||||
|
// set default npc instance, for now!
|
||||||
|
// RoxxyGatekeeperTemplate - 30006
|
||||||
|
log.warn("No template found for {}", templateId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final NPC npc = template.create();
|
||||||
|
|
||||||
|
npc.setID(id);
|
||||||
|
npc.setPoint(Point.fromXYZA(rs.getInt(POINT_X), rs.getInt(POINT_Y),
|
||||||
|
rs.getInt(POINT_Z), rs.getDouble(POINT_ANGLE)));
|
||||||
|
|
||||||
|
return npc;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NPC select(final NPCID id) {
|
||||||
|
return database.query(new SelectSingleQuery<NPC>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `" + NPC_ID
|
||||||
|
+ "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, id.getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<NPC> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<NPC> loadAll() {
|
||||||
|
return database.query(new SelectListQuery<NPC>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "`";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<NPC> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<NPC> selectByTemplate(final NPCTemplateID template) {
|
||||||
|
return database.query(new SelectListQuery<NPC>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT * FROM `" + TABLE + "` WHERE `"
|
||||||
|
+ NPC_TEMPLATE_ID + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st) throws SQLException {
|
||||||
|
st.setInt(1, template.getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<NPC> mapper() {
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<NPCID> selectIDs() {
|
||||||
|
return database.query(new SelectListQuery<NPCID>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT `" + NPC_ID + "` FROM `" + TABLE + "`";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<NPCID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean insert(NPC npc) {
|
||||||
|
return database.query(new InsertUpdateQuery<NPC>(npc) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "INSERT INTO `" + TABLE + "` (`" + NPC_ID + "`,`"
|
||||||
|
+ NPC_TEMPLATE_ID + "`,`" + POINT_X + "`,`" + POINT_Y
|
||||||
|
+ "`,`" + POINT_Z + "`,`" + POINT_ANGLE
|
||||||
|
+ "`) VALUES(?,?,?,?,?,?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st, NPC npc)
|
||||||
|
throws SQLException {
|
||||||
|
int i = 1;
|
||||||
|
|
||||||
|
st.setInt(i++, npc.getID().getID());
|
||||||
|
st.setInt(i++, npc.getTemplateID().getID());
|
||||||
|
|
||||||
|
st.setInt(i++, npc.getPoint().getX());
|
||||||
|
st.setInt(i++, npc.getPoint().getY());
|
||||||
|
st.setInt(i++, npc.getPoint().getZ());
|
||||||
|
st.setDouble(i++, npc.getPoint().getAngle());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(NPC npc) {
|
||||||
|
return database.query(new InsertUpdateQuery<NPC>(npc) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "UPDATE `" + TABLE + "` SET " + NPC_TEMPLATE_ID
|
||||||
|
+ "` = ?,`" + POINT_X + "` = ?,`" + POINT_Y + "` = ?,`"
|
||||||
|
+ POINT_Z + "` = ?,`" + POINT_ANGLE + "` = ? WHERE `"
|
||||||
|
+ NPC_ID + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st, NPC npc)
|
||||||
|
throws SQLException {
|
||||||
|
int i = 1;
|
||||||
|
|
||||||
|
// SET
|
||||||
|
st.setInt(i++, npc.getTemplateID().getID());
|
||||||
|
|
||||||
|
st.setInt(i++, npc.getPoint().getX());
|
||||||
|
st.setInt(i++, npc.getPoint().getY());
|
||||||
|
st.setInt(i++, npc.getPoint().getZ());
|
||||||
|
st.setDouble(i++, npc.getPoint().getAngle());
|
||||||
|
|
||||||
|
// WHERE
|
||||||
|
st.setInt(i++, npc.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(NPC npc) {
|
||||||
|
return database.query(new InsertUpdateQuery<NPC>(npc) {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "DELETE FROM `" + TABLE + "` WHERE `" + NPC_ID + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st, NPC npc)
|
||||||
|
throws SQLException {
|
||||||
|
st.setInt(1, npc.getID().getID());
|
||||||
|
}
|
||||||
|
}) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@ import com.l2jserver.model.Model;
|
|||||||
import com.l2jserver.model.id.ID;
|
import com.l2jserver.model.id.ID;
|
||||||
import com.l2jserver.service.database.AbstractDAO;
|
import com.l2jserver.service.database.AbstractDAO;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService;
|
import com.l2jserver.service.database.JDBCDatabaseService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link AbstractDAO} for MySQL DAO implementation
|
* {@link AbstractDAO} for MySQL DAO implementation
|
||||||
@@ -38,11 +38,11 @@ public abstract class AbstractMySQL5DAO<T extends Model<?>, I extends ID<?>>
|
|||||||
/**
|
/**
|
||||||
* The MySQL Database Service
|
* The MySQL Database Service
|
||||||
*/
|
*/
|
||||||
protected final MySQLDatabaseService database;
|
protected final JDBCDatabaseService database;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected AbstractMySQL5DAO(DatabaseService database) {
|
protected AbstractMySQL5DAO(DatabaseService database) {
|
||||||
super(database);
|
super(database);
|
||||||
this.database = (MySQLDatabaseService) database;
|
this.database = (JDBCDatabaseService) database;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairColo
|
|||||||
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairStyle;
|
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairStyle;
|
||||||
import com.l2jserver.model.world.character.CharacterClass;
|
import com.l2jserver.model.world.character.CharacterClass;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
import com.l2jserver.util.dimensional.Point;
|
import com.l2jserver.util.dimensional.Point;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ import com.l2jserver.model.id.provider.FriendIDProvider;
|
|||||||
import com.l2jserver.model.world.L2Character;
|
import com.l2jserver.model.world.L2Character;
|
||||||
import com.l2jserver.model.world.character.CharacterFriendList;
|
import com.l2jserver.model.world.character.CharacterFriendList;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link CharacterFriendDAO} implementation for MySQL5
|
* {@link CharacterFriendDAO} implementation for MySQL5
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
|||||||
import com.l2jserver.model.id.object.provider.ClanIDProvider;
|
import com.l2jserver.model.id.object.provider.ClanIDProvider;
|
||||||
import com.l2jserver.model.world.Clan;
|
import com.l2jserver.model.world.Clan;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link CharacterDAO} implementation for MySQL5
|
* {@link CharacterDAO} implementation for MySQL5
|
||||||
|
|||||||
@@ -36,11 +36,11 @@ import com.l2jserver.model.world.character.CharacterInventory;
|
|||||||
import com.l2jserver.model.world.character.CharacterInventory.InventoryLocation;
|
import com.l2jserver.model.world.character.CharacterInventory.InventoryLocation;
|
||||||
import com.l2jserver.model.world.character.CharacterInventory.InventoryPaperdoll;
|
import com.l2jserver.model.world.character.CharacterInventory.InventoryPaperdoll;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
import com.l2jserver.util.dimensional.Coordinate;
|
import com.l2jserver.util.dimensional.Coordinate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ import com.l2jserver.model.id.template.provider.NPCTemplateIDProvider;
|
|||||||
import com.l2jserver.model.template.NPCTemplate;
|
import com.l2jserver.model.template.NPCTemplate;
|
||||||
import com.l2jserver.model.world.NPC;
|
import com.l2jserver.model.world.NPC;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
|
||||||
import com.l2jserver.util.dimensional.Point;
|
import com.l2jserver.util.dimensional.Point;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ package com.l2jserver;
|
|||||||
|
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
import com.google.inject.Module;
|
import com.google.inject.Module;
|
||||||
import com.l2jserver.db.dao.MySQL5DAOModule;
|
import com.l2jserver.db.dao.H2DAOModule;
|
||||||
import com.l2jserver.model.id.provider.IDProviderModule;
|
import com.l2jserver.model.id.provider.IDProviderModule;
|
||||||
import com.l2jserver.service.ServiceModule;
|
import com.l2jserver.service.ServiceModule;
|
||||||
|
|
||||||
@@ -32,6 +32,6 @@ public class GameServerModule extends AbstractModule {
|
|||||||
protected void configure() {
|
protected void configure() {
|
||||||
install(new ServiceModule());
|
install(new ServiceModule());
|
||||||
install(new IDProviderModule());
|
install(new IDProviderModule());
|
||||||
install(new MySQL5DAOModule());
|
install(new H2DAOModule());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,15 +59,11 @@ public class L2JGameServerMain {
|
|||||||
|
|
||||||
// spawn
|
// spawn
|
||||||
serviceManager.get(NPCService.class).spawnAll();
|
serviceManager.get(NPCService.class).spawnAll();
|
||||||
|
|
||||||
// staticSpawn(server.getInjector());
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("GameServer could not be started!");
|
System.out.println("GameServer could not be started!");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Thread.sleep(60 * 60 * 1000);
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
|
|||||||
@@ -87,9 +87,7 @@ public class AuthLoginPacket extends AbstractClientPacket {
|
|||||||
|
|
||||||
final List<L2Character> chars = characterDao.selectByAccount(accountId);
|
final List<L2Character> chars = characterDao.selectByAccount(accountId);
|
||||||
conn.write(CharacterSelectionListPacket.fromL2Session(
|
conn.write(CharacterSelectionListPacket.fromL2Session(
|
||||||
conn.getSession(), chars.get(0)));
|
conn.getSession(), chars.toArray(new L2Character[chars.size()])));
|
||||||
// conn.setCharacterID(chars.get(0).getID());
|
|
||||||
// conn.write(new CharacterEnterWorldPacket(chars.get(0), playKey1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class CharacterCreatePacket extends AbstractClientPacket {
|
|||||||
/**
|
/**
|
||||||
* The {@link CharacterTemplateID} factory
|
* The {@link CharacterTemplateID} factory
|
||||||
*/
|
*/
|
||||||
private final CharacterTemplateIDProvider characterTemplateIdFactory;
|
private final CharacterTemplateIDProvider characterTemplateIdProvider;
|
||||||
|
|
||||||
// packet
|
// packet
|
||||||
/**
|
/**
|
||||||
@@ -140,7 +140,7 @@ public class CharacterCreatePacket extends AbstractClientPacket {
|
|||||||
CharacterTemplateIDProvider characterTemplateIdFactory) {
|
CharacterTemplateIDProvider characterTemplateIdFactory) {
|
||||||
this.characterDao = characterDao;
|
this.characterDao = characterDao;
|
||||||
this.characterIdFactory = characterIdFactory;
|
this.characterIdFactory = characterIdFactory;
|
||||||
this.characterTemplateIdFactory = characterTemplateIdFactory;
|
this.characterTemplateIdProvider = characterTemplateIdFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -192,7 +192,7 @@ public class CharacterCreatePacket extends AbstractClientPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create template id and lookup for the template instance
|
// create template id and lookup for the template instance
|
||||||
final CharacterTemplateID templateId = characterTemplateIdFactory
|
final CharacterTemplateID templateId = characterTemplateIdProvider
|
||||||
.createID(characterClass.id);
|
.createID(characterClass.id);
|
||||||
final CharacterTemplate template = templateId.getTemplate();
|
final CharacterTemplate template = templateId.getTemplate();
|
||||||
log.debug("Creating character with template {}", template);
|
log.debug("Creating character with template {}", template);
|
||||||
|
|||||||
@@ -76,13 +76,13 @@ public class RequestCharacterTemplatesPacket extends AbstractClientPacket {
|
|||||||
@Override
|
@Override
|
||||||
public void process(final Lineage2Connection conn) {
|
public void process(final Lineage2Connection conn) {
|
||||||
log.debug("Requested character templates");
|
log.debug("Requested character templates");
|
||||||
|
|
||||||
|
final CharacterTemplate[] templates = new CharacterTemplate[TEMPLATE_CLASSES.length];
|
||||||
|
int i = 0;
|
||||||
for (final CharacterClass charClass : TEMPLATE_CLASSES) {
|
for (final CharacterClass charClass : TEMPLATE_CLASSES) {
|
||||||
final CharacterTemplateID id = idFactory.createID(charClass.id);
|
final CharacterTemplateID id = idFactory.createID(charClass.id);
|
||||||
final CharacterTemplate template = id.getTemplate();
|
templates[i++] = id.getTemplate();
|
||||||
final CharacterTemplatePacket templatePacket = new CharacterTemplatePacket(
|
|
||||||
template);
|
|
||||||
|
|
||||||
conn.write(templatePacket);
|
|
||||||
}
|
}
|
||||||
|
conn.write(new CharacterTemplatePacket(templates));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public abstract class AbstractModel<T extends ID<?>> implements Model<T> {
|
|||||||
/**
|
/**
|
||||||
* The database object state
|
* The database object state
|
||||||
*/
|
*/
|
||||||
protected ObjectState state = ObjectState.NOT_STORED;
|
protected transient ObjectState state = ObjectState.NOT_STORED;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T getID() {
|
public T getID() {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public final class CharacterID extends ActorID<L2Character> {
|
|||||||
/**
|
/**
|
||||||
* Data Access Object (DAO) for characters
|
* Data Access Object (DAO) for characters
|
||||||
*/
|
*/
|
||||||
private final CharacterDAO characterDao;
|
private transient final CharacterDAO characterDao;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public CharacterID(@Assisted int id, CharacterDAO characterDao) {
|
public CharacterID(@Assisted int id, CharacterDAO characterDao) {
|
||||||
|
|||||||
@@ -29,11 +29,12 @@ import com.l2jserver.service.game.template.TemplateService;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class ActorTemplateID<T extends ActorTemplate<?>> extends TemplateID<T, Integer> {
|
public class ActorTemplateID<T extends ActorTemplate<?>> extends
|
||||||
|
TemplateID<T, Integer> {
|
||||||
/**
|
/**
|
||||||
* The template service
|
* The template service
|
||||||
*/
|
*/
|
||||||
private final TemplateService templateService;
|
private transient final TemplateService templateService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected ActorTemplateID(@Assisted int id, TemplateService templateService) {
|
protected ActorTemplateID(@Assisted int id, TemplateService templateService) {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import com.l2jserver.service.game.template.TemplateService;
|
|||||||
*/
|
*/
|
||||||
public class CharacterTemplateID extends ActorTemplateID<CharacterTemplate> {
|
public class CharacterTemplateID extends ActorTemplateID<CharacterTemplate> {
|
||||||
@Inject
|
@Inject
|
||||||
protected CharacterTemplateID(@Assisted int id,
|
public CharacterTemplateID(@Assisted int id,
|
||||||
TemplateService templateService) {
|
TemplateService templateService) {
|
||||||
super(id, templateService);
|
super(id, templateService);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ import com.l2jserver.model.world.character.CharacterClass;
|
|||||||
import com.l2jserver.util.jaxb.CharacterTemplateIDAdapter;
|
import com.l2jserver.util.jaxb.CharacterTemplateIDAdapter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link L2Character} template. Each character instance is backed by an template.
|
* The {@link L2Character} template. Each character instance is backed by an
|
||||||
|
* template.
|
||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
@@ -43,9 +44,6 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
|
|||||||
@XmlAttribute(name = "class")
|
@XmlAttribute(name = "class")
|
||||||
protected CharacterTemplateID id = null;
|
protected CharacterTemplateID id = null;
|
||||||
|
|
||||||
@XmlAttribute(name = "class")
|
|
||||||
protected CharacterClass characterClass = null;
|
|
||||||
|
|
||||||
@XmlElement(name = "stats")
|
@XmlElement(name = "stats")
|
||||||
protected CharacterStatsMetadata stats = null;
|
protected CharacterStatsMetadata stats = null;
|
||||||
|
|
||||||
@@ -181,14 +179,14 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
|
|||||||
* @return the character Class
|
* @return the character Class
|
||||||
*/
|
*/
|
||||||
public CharacterClass getCharacterClass() {
|
public CharacterClass getCharacterClass() {
|
||||||
return characterClass;
|
return CharacterClass.fromID(id.getID());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the character race
|
* @return the character race
|
||||||
*/
|
*/
|
||||||
public ActorRace getRace() {
|
public ActorRace getRace() {
|
||||||
return characterClass.race;
|
return getCharacterClass().race;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -97,11 +97,6 @@ public class L2Character extends Player {
|
|||||||
*/
|
*/
|
||||||
private Date lastAccess;
|
private Date lastAccess;
|
||||||
|
|
||||||
/**
|
|
||||||
* The character stat
|
|
||||||
*/
|
|
||||||
private final CharacterStats stats = new CharacterStats(this);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The character karma points
|
* The character karma points
|
||||||
*/
|
*/
|
||||||
@@ -118,12 +113,16 @@ public class L2Character extends Player {
|
|||||||
// ////////////////////////////////////
|
// ////////////////////////////////////
|
||||||
// / RUNTIME
|
// / RUNTIME
|
||||||
// ////////////////////////////////////
|
// ////////////////////////////////////
|
||||||
|
/**
|
||||||
|
* The character stat
|
||||||
|
*/
|
||||||
|
private transient final CharacterStats stats = new CharacterStats(this);
|
||||||
/**
|
/**
|
||||||
* The character walk mode.
|
* The character walk mode.
|
||||||
* <p>
|
* <p>
|
||||||
* This field is not persisted.
|
* This field is not persisted.
|
||||||
*/
|
*/
|
||||||
private CharacterMoveType moveType = CharacterMoveType.WALK;
|
private transient CharacterMoveType moveType = CharacterMoveType.WALK;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The character walking mode
|
* The character walking mode
|
||||||
@@ -143,11 +142,11 @@ public class L2Character extends Player {
|
|||||||
/**
|
/**
|
||||||
* The character target, if any.
|
* The character target, if any.
|
||||||
*/
|
*/
|
||||||
private ActorID<?> targetID;
|
private transient ActorID<?> targetID;
|
||||||
/**
|
/**
|
||||||
* State of the character. Will be null if it is idle
|
* State of the character. Will be null if it is idle
|
||||||
*/
|
*/
|
||||||
private CharacterState state;
|
private transient CharacterState state;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The valid states for an character
|
* The valid states for an character
|
||||||
@@ -180,7 +179,7 @@ public class L2Character extends Player {
|
|||||||
/**
|
/**
|
||||||
* The point the player is moving, teleporting etc...
|
* The point the player is moving, teleporting etc...
|
||||||
*/
|
*/
|
||||||
private Point targetLocation;
|
private transient Point targetLocation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance
|
* Creates a new instance
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.model.world.character;
|
package com.l2jserver.model.world.character;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.l2jserver.model.world.Item;
|
import com.l2jserver.model.world.Item;
|
||||||
@@ -76,7 +76,7 @@ public class CharacterInventory implements Iterable<Item> {
|
|||||||
* @param items
|
* @param items
|
||||||
* the items to be added
|
* the items to be added
|
||||||
*/
|
*/
|
||||||
public void load(List<Item> items) {
|
public void load(Collection<Item> items) {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
this.items.addAll(items);
|
this.items.addAll(items);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import com.l2jserver.service.core.LoggingService;
|
|||||||
import com.l2jserver.service.core.vfs.VFSService;
|
import com.l2jserver.service.core.vfs.VFSService;
|
||||||
import com.l2jserver.service.core.vfs.VFSServiceImpl;
|
import com.l2jserver.service.core.vfs.VFSServiceImpl;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService;
|
import com.l2jserver.service.database.JDBCDatabaseService;
|
||||||
import com.l2jserver.service.game.character.CharacterService;
|
import com.l2jserver.service.game.character.CharacterService;
|
||||||
import com.l2jserver.service.game.character.CharacterServiceImpl;
|
import com.l2jserver.service.game.character.CharacterServiceImpl;
|
||||||
import com.l2jserver.service.game.chat.ChatService;
|
import com.l2jserver.service.game.chat.ChatService;
|
||||||
@@ -69,7 +69,7 @@ public class ServiceModule extends AbstractModule {
|
|||||||
bind(ConfigurationService.class).to(ProxyConfigurationService.class)
|
bind(ConfigurationService.class).to(ProxyConfigurationService.class)
|
||||||
.in(Scopes.SINGLETON);
|
.in(Scopes.SINGLETON);
|
||||||
bind(CacheService.class).to(EhCacheService.class).in(Scopes.SINGLETON);
|
bind(CacheService.class).to(EhCacheService.class).in(Scopes.SINGLETON);
|
||||||
bind(DatabaseService.class).to(MySQLDatabaseService.class).in(
|
bind(DatabaseService.class).to(JDBCDatabaseService.class).in(
|
||||||
Scopes.SINGLETON);
|
Scopes.SINGLETON);
|
||||||
bind(WorldIDService.class).to(CachedWorldIDService.class).in(
|
bind(WorldIDService.class).to(CachedWorldIDService.class).in(
|
||||||
Scopes.SINGLETON);
|
Scopes.SINGLETON);
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import org.apache.commons.vfs.FileSystemException;
|
|||||||
import org.apache.commons.vfs.FileSystemManager;
|
import org.apache.commons.vfs.FileSystemManager;
|
||||||
import org.apache.commons.vfs.impl.DefaultFileSystemManager;
|
import org.apache.commons.vfs.impl.DefaultFileSystemManager;
|
||||||
import org.apache.commons.vfs.impl.StandardFileSystemManager;
|
import org.apache.commons.vfs.impl.StandardFileSystemManager;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.l2jserver.service.AbstractService;
|
import com.l2jserver.service.AbstractService;
|
||||||
import com.l2jserver.service.ServiceStartException;
|
import com.l2jserver.service.ServiceStartException;
|
||||||
@@ -35,6 +37,11 @@ import com.l2jserver.service.ServiceStopException;
|
|||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class VFSServiceImpl extends AbstractService implements VFSService {
|
public class VFSServiceImpl extends AbstractService implements VFSService {
|
||||||
|
/**
|
||||||
|
* The logger
|
||||||
|
*/
|
||||||
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The CommonsVFS {@link FileSystemManager}
|
* The CommonsVFS {@link FileSystemManager}
|
||||||
*/
|
*/
|
||||||
@@ -62,6 +69,7 @@ public class VFSServiceImpl extends AbstractService implements VFSService {
|
|||||||
try {
|
try {
|
||||||
return manager.resolveFile(uri);
|
return manager.resolveFile(uri);
|
||||||
} catch (FileSystemException e) {
|
} catch (FileSystemException e) {
|
||||||
|
log.error("Error resolving file", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of l2jserver <l2jserver.com>.
|
|
||||||
*
|
|
||||||
* l2jserver is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* l2jserver is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with l2jserver. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package com.l2jserver.service.database;
|
|
||||||
|
|
||||||
import com.l2jserver.service.AbstractService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Database service implementation for DB4O database engine.
|
|
||||||
* <p>
|
|
||||||
* Note that this is not implemented yet!
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
public class DB4ODatabaseService extends AbstractService implements
|
|
||||||
DatabaseService {
|
|
||||||
@Override
|
|
||||||
public Object getCachedObject(Object id) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCachedObject(Object id) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateCache(Object key, Object value) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeCache(Object key) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.service.database;
|
package com.l2jserver.service.database;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.l2jserver.model.Model;
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.id.ID;
|
import com.l2jserver.model.id.ID;
|
||||||
@@ -56,7 +56,7 @@ public interface DataAccessObject<O extends Model<?>, I extends ID<?>> extends
|
|||||||
* @return the list containing all {@link ID} objects
|
* @return the list containing all {@link ID} objects
|
||||||
*/
|
*/
|
||||||
@IgnoreCaching
|
@IgnoreCaching
|
||||||
List<I> selectIDs();
|
Collection<I> selectIDs();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the instance to the database. If a new database entry was created
|
* Save the instance to the database. If a new database entry was created
|
||||||
|
|||||||
@@ -25,40 +25,5 @@ import com.l2jserver.service.Service;
|
|||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public interface DatabaseService extends Service {
|
public interface DatabaseService extends Service {
|
||||||
/**
|
void install();
|
||||||
* Get the database object cached. Will return null if the object is not in
|
|
||||||
* cache
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* the object id
|
|
||||||
* @return the cached object
|
|
||||||
*/
|
|
||||||
Object getCachedObject(Object id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests if the object is cached
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* the object id
|
|
||||||
* @return true if object is in cache
|
|
||||||
*/
|
|
||||||
boolean hasCachedObject(Object id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds or update the cache object
|
|
||||||
*
|
|
||||||
* @param key
|
|
||||||
* the cache key
|
|
||||||
* @param value
|
|
||||||
* the object
|
|
||||||
*/
|
|
||||||
void updateCache(Object key, Object value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes an object from the cache
|
|
||||||
*
|
|
||||||
* @param key
|
|
||||||
* the cache key
|
|
||||||
*/
|
|
||||||
void removeCache(Object key);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,60 +17,60 @@
|
|||||||
package com.l2jserver.service.database;
|
package com.l2jserver.service.database;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration interface for {@link MySQLDatabaseService}.
|
* Configuration interface for {@link JDBCDatabaseService}.
|
||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public interface MySQLDatabaseConfiguration extends DatabaseConfiguration {
|
public interface JDBCDatabaseConfiguration extends DatabaseConfiguration {
|
||||||
/**
|
/**
|
||||||
* @return the jdbc url
|
* @return the jdbc url
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertyGetter(name = "jdbc.mysql.url", defaultValue = "jdbc:mysql://localhost/l2jserver2")
|
@ConfigurationPropertyGetter(name = "jdbc.url", defaultValue = "jdbc:mysql://localhost/l2jserver2")
|
||||||
String getJdbcUrl();
|
String getJdbcUrl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param jdbcUrl
|
* @param jdbcUrl
|
||||||
* the new jdbc url
|
* the new jdbc url
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertySetter(name = "jdbc.mysql.url")
|
@ConfigurationPropertySetter(name = "jdbc.url")
|
||||||
void setJdbcUrl(String jdbcUrl);
|
void setJdbcUrl(String jdbcUrl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the jdbc driver class
|
* @return the jdbc driver class
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertyGetter(name = "jdbc.mysql.driver", defaultValue = "com.mysql.jdbc.Driver")
|
@ConfigurationPropertyGetter(name = "jdbc.driver", defaultValue = "com.jdbc.jdbc.Driver")
|
||||||
String getDriver();
|
String getDriver();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param driver
|
* @param driver
|
||||||
* the new jdbc driver
|
* the new jdbc driver
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertySetter(name = "jdbc.mysql.driver")
|
@ConfigurationPropertySetter(name = "jdbc.driver")
|
||||||
void setDriver(Class<?> driver);
|
void setDriver(Class<?> driver);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the mysql database username
|
* @return the jdbc database username
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertyGetter(name = "jdbc.mysql.username", defaultValue = "l2j")
|
@ConfigurationPropertyGetter(name = "jdbc.username", defaultValue = "l2j")
|
||||||
String getUsername();
|
String getUsername();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param username
|
* @param username
|
||||||
* the mysql database username
|
* the jdbc database username
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertySetter(name = "jdbc.mysql.username")
|
@ConfigurationPropertySetter(name = "jdbc.username")
|
||||||
void setUsername(String username);
|
void setUsername(String username);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the mysql database password
|
* @return the jdbc database password
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertyGetter(name = "jdbc.mysql.password", defaultValue = "changeme")
|
@ConfigurationPropertyGetter(name = "jdbc.password", defaultValue = "changeme")
|
||||||
String getPassword();
|
String getPassword();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param password
|
* @param password
|
||||||
* the mysql database password
|
* the jdbc database password
|
||||||
*/
|
*/
|
||||||
@ConfigurationPropertySetter(name = "jdbc.mysql.password")
|
@ConfigurationPropertySetter(name = "jdbc.password")
|
||||||
void setPassword(String password);
|
void setPassword(String password);
|
||||||
}
|
}
|
||||||
@@ -16,10 +16,13 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.service.database;
|
package com.l2jserver.service.database;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -34,6 +37,7 @@ import org.apache.commons.dbcp.ConnectionFactory;
|
|||||||
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
|
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
|
||||||
import org.apache.commons.dbcp.PoolableConnectionFactory;
|
import org.apache.commons.dbcp.PoolableConnectionFactory;
|
||||||
import org.apache.commons.dbcp.PoolingDataSource;
|
import org.apache.commons.dbcp.PoolingDataSource;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.pool.ObjectPool;
|
import org.apache.commons.pool.ObjectPool;
|
||||||
import org.apache.commons.pool.impl.GenericObjectPool;
|
import org.apache.commons.pool.impl.GenericObjectPool;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -63,18 +67,18 @@ import com.l2jserver.util.factory.CollectionFactory;
|
|||||||
*/
|
*/
|
||||||
@Depends({ LoggingService.class, CacheService.class,
|
@Depends({ LoggingService.class, CacheService.class,
|
||||||
ConfigurationService.class, TemplateService.class })
|
ConfigurationService.class, TemplateService.class })
|
||||||
public class MySQLDatabaseService extends AbstractService implements
|
public class JDBCDatabaseService extends AbstractService implements
|
||||||
DatabaseService {
|
DatabaseService {
|
||||||
/**
|
/**
|
||||||
* The configuration object
|
* The configuration object
|
||||||
*/
|
*/
|
||||||
private final MySQLDatabaseConfiguration config;
|
private final JDBCDatabaseConfiguration config;
|
||||||
/**
|
/**
|
||||||
* The logger
|
* The logger
|
||||||
*/
|
*/
|
||||||
private final Logger logger = LoggerFactory
|
private final Logger logger = LoggerFactory
|
||||||
.getLogger(MySQLDatabaseService.class);
|
.getLogger(JDBCDatabaseService.class);
|
||||||
// services
|
|
||||||
/**
|
/**
|
||||||
* The cache service
|
* The cache service
|
||||||
*/
|
*/
|
||||||
@@ -104,9 +108,9 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
private Cache objectCache;
|
private Cache objectCache;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public MySQLDatabaseService(ConfigurationService configService,
|
public JDBCDatabaseService(ConfigurationService configService,
|
||||||
CacheService cacheService) {
|
CacheService cacheService) {
|
||||||
config = configService.get(MySQLDatabaseConfiguration.class);
|
config = configService.get(JDBCDatabaseConfiguration.class);
|
||||||
this.cacheService = cacheService;
|
this.cacheService = cacheService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,6 +133,30 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
cacheService.register(objectCache);
|
cacheService.register(objectCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void install() {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Collection<File> files = FileUtils.listFiles(new File("dist/sql/h2"),
|
||||||
|
new String[] { "sql" }, false);
|
||||||
|
try {
|
||||||
|
final Connection conn = dataSource.getConnection();
|
||||||
|
try {
|
||||||
|
for (final File file : files) {
|
||||||
|
conn.createStatement().execute(
|
||||||
|
FileUtils.readFileToString(file));
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
conn.close();
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes an <tt>query</tt> in the database.
|
* Executes an <tt>query</tt> in the database.
|
||||||
*
|
*
|
||||||
@@ -156,7 +184,6 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getCachedObject(Object id) {
|
public Object getCachedObject(Object id) {
|
||||||
Preconditions.checkNotNull(id, "id");
|
Preconditions.checkNotNull(id, "id");
|
||||||
final Element element = objectCache.get(id);
|
final Element element = objectCache.get(id);
|
||||||
@@ -165,20 +192,17 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
return element.getObjectValue();
|
return element.getObjectValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCachedObject(Object id) {
|
public boolean hasCachedObject(Object id) {
|
||||||
Preconditions.checkNotNull(id, "id");
|
Preconditions.checkNotNull(id, "id");
|
||||||
return objectCache.get(id) != null;
|
return objectCache.get(id) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateCache(Object key, Object value) {
|
public void updateCache(Object key, Object value) {
|
||||||
Preconditions.checkNotNull(key, "key");
|
Preconditions.checkNotNull(key, "key");
|
||||||
Preconditions.checkNotNull(value, "value");
|
Preconditions.checkNotNull(value, "value");
|
||||||
objectCache.put(new Element(key, value));
|
objectCache.put(new Element(key, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeCache(Object key) {
|
public void removeCache(Object key) {
|
||||||
Preconditions.checkNotNull(key, "key");
|
Preconditions.checkNotNull(key, "key");
|
||||||
objectCache.remove(key);
|
objectCache.remove(key);
|
||||||
@@ -189,6 +213,7 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
if (objectCache != null)
|
if (objectCache != null)
|
||||||
objectCache.dispose();
|
objectCache.dispose();
|
||||||
objectCache = null;
|
objectCache = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (connectionPool != null)
|
if (connectionPool != null)
|
||||||
connectionPool.close();
|
connectionPool.close();
|
||||||
@@ -473,7 +498,7 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
/**
|
/**
|
||||||
* The database service instance
|
* The database service instance
|
||||||
*/
|
*/
|
||||||
private final MySQLDatabaseService database;
|
private final JDBCDatabaseService database;
|
||||||
|
|
||||||
private final Mapper<I> idMapper;
|
private final Mapper<I> idMapper;
|
||||||
|
|
||||||
@@ -483,7 +508,7 @@ public class MySQLDatabaseService extends AbstractService implements
|
|||||||
* @param database
|
* @param database
|
||||||
* the database service
|
* the database service
|
||||||
*/
|
*/
|
||||||
public CachedMapper(MySQLDatabaseService database, Mapper<I> idMapper) {
|
public CachedMapper(JDBCDatabaseService database, Mapper<I> idMapper) {
|
||||||
this.database = database;
|
this.database = database;
|
||||||
this.idMapper = idMapper;
|
this.idMapper = idMapper;
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.service.game.npc;
|
package com.l2jserver.service.game.npc;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
|
|
||||||
import com.l2jserver.game.net.Lineage2Connection;
|
import com.l2jserver.game.net.Lineage2Connection;
|
||||||
import com.l2jserver.game.net.packet.client.CharacterActionPacket.CharacterAction;
|
import com.l2jserver.game.net.packet.client.CharacterActionPacket.CharacterAction;
|
||||||
@@ -69,7 +69,7 @@ public interface NPCService extends Service {
|
|||||||
* @throws SpawnPointNotFoundServiceException
|
* @throws SpawnPointNotFoundServiceException
|
||||||
* if one of the NPCs does not have an spawn point defined
|
* if one of the NPCs does not have an spawn point defined
|
||||||
*/
|
*/
|
||||||
List<NPC> spawnAll() throws SpawnPointNotFoundServiceException,
|
Collection<NPC> spawnAll() throws SpawnPointNotFoundServiceException,
|
||||||
AlreadySpawnedServiceException;
|
AlreadySpawnedServiceException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.service.game.npc;
|
package com.l2jserver.service.game.npc;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
@@ -123,9 +123,9 @@ public class NPCServiceImpl extends AbstractService implements NPCService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NPC> spawnAll() throws SpawnPointNotFoundServiceException,
|
public Collection<NPC> spawnAll() throws SpawnPointNotFoundServiceException,
|
||||||
AlreadySpawnedServiceException {
|
AlreadySpawnedServiceException {
|
||||||
final List<NPC> npcs = npcDao.loadAll();
|
final Collection<NPC> npcs = npcDao.loadAll();
|
||||||
for (final NPC npc : npcs) {
|
for (final NPC npc : npcs) {
|
||||||
spawnService.spawn(npc, null);
|
spawnService.spawn(npc, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.l2jserver.service.configuration.Configuration.ConfigurationName;
|
|||||||
|
|
||||||
@ConfigurationName("template")
|
@ConfigurationName("template")
|
||||||
public interface XMLTemplateServiceConfiguration extends Configuration {
|
public interface XMLTemplateServiceConfiguration extends Configuration {
|
||||||
@ConfigurationPropertyGetter(name = "template.directory", defaultValue = "zip:data/templates.zip")
|
@ConfigurationPropertyGetter(name = "template.directory", defaultValue = "data/templates")
|
||||||
URI getTemplateDirectory();
|
URI getTemplateDirectory();
|
||||||
|
|
||||||
@ConfigurationPropertySetter(name = "template.directory")
|
@ConfigurationPropertySetter(name = "template.directory")
|
||||||
|
|||||||
@@ -71,8 +71,9 @@ public class XMLMappingTest {
|
|||||||
//
|
//
|
||||||
// System.out.println("Took " + ((end - start) / 1000) + " seconds");
|
// System.out.println("Took " + ((end - start) / 1000) + " seconds");
|
||||||
|
|
||||||
final NPCTemplate t = (NPCTemplate) u
|
final CharacterTemplate t = (CharacterTemplate) u.unmarshal(new File(
|
||||||
.unmarshal(new File("data/templates/npc/teleporter/30059-Trisha.xml"));
|
"data/templates/character/HumanFighter.xml"));
|
||||||
System.out.println(t.getControllerClass());
|
System.out.println(t.getID());
|
||||||
|
System.out.println(t.getCharacterClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import org.junit.Test;
|
|||||||
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
import com.l2jserver.db.dao.MySQL5DAOModule;
|
import com.l2jserver.db.dao.H2DAOModule;
|
||||||
import com.l2jserver.model.id.ID;
|
import com.l2jserver.model.id.ID;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
|
||||||
@@ -38,7 +38,7 @@ import com.l2jserver.service.game.world.WorldService;
|
|||||||
|
|
||||||
public class IDFactoryTest {
|
public class IDFactoryTest {
|
||||||
private final Injector injector = Guice.createInjector(new ServiceModule(),
|
private final Injector injector = Guice.createInjector(new ServiceModule(),
|
||||||
new MySQL5DAOModule(), new IDProviderModule());
|
new H2DAOModule(), new IDProviderModule());
|
||||||
private CharacterIDProvider charIdFactory;
|
private CharacterIDProvider charIdFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import org.junit.Test;
|
|||||||
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
import com.l2jserver.db.dao.MySQL5DAOModule;
|
import com.l2jserver.db.dao.H2DAOModule;
|
||||||
import com.l2jserver.model.id.provider.IDProviderModule;
|
import com.l2jserver.model.id.provider.IDProviderModule;
|
||||||
import com.l2jserver.model.id.template.provider.ItemTemplateIDProvider;
|
import com.l2jserver.model.id.template.provider.ItemTemplateIDProvider;
|
||||||
import com.l2jserver.service.ServiceManager;
|
import com.l2jserver.service.ServiceManager;
|
||||||
@@ -29,7 +29,7 @@ import com.l2jserver.service.ServiceStartException;
|
|||||||
|
|
||||||
public class StaticTemplateServiceTest {
|
public class StaticTemplateServiceTest {
|
||||||
private final Injector injector = Guice.createInjector(new ServiceModule(),
|
private final Injector injector = Guice.createInjector(new ServiceModule(),
|
||||||
new IDProviderModule(), new MySQL5DAOModule());
|
new IDProviderModule(), new H2DAOModule());
|
||||||
private final ItemTemplateIDProvider factory = injector
|
private final ItemTemplateIDProvider factory = injector
|
||||||
.getInstance(ItemTemplateIDProvider.class);
|
.getInstance(ItemTemplateIDProvider.class);
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import javax.xml.bind.SchemaOutputResolver;
|
|||||||
import javax.xml.transform.Result;
|
import javax.xml.transform.Result;
|
||||||
import javax.xml.transform.stream.StreamResult;
|
import javax.xml.transform.stream.StreamResult;
|
||||||
|
|
||||||
import com.l2jserver.model.template.CharacterTemplate;
|
|
||||||
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata;
|
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata;
|
||||||
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.AttackMetadata;
|
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.AttackMetadata;
|
||||||
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.AttackMetadata.AttackValueMetadata;
|
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.AttackMetadata.AttackValueMetadata;
|
||||||
@@ -44,7 +43,6 @@ import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.Mov
|
|||||||
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.Stat;
|
import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.Stat;
|
||||||
import com.l2jserver.model.template.CharacterTemplate.CollitionMetadataContainer;
|
import com.l2jserver.model.template.CharacterTemplate.CollitionMetadataContainer;
|
||||||
import com.l2jserver.model.template.CharacterTemplate.CollitionMetadataContainer.CollisionMetadata;
|
import com.l2jserver.model.template.CharacterTemplate.CollitionMetadataContainer.CollisionMetadata;
|
||||||
import com.l2jserver.model.world.character.CharacterClass;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The need to use this package to get access to protected fields.
|
* The need to use this package to get access to protected fields.
|
||||||
@@ -91,7 +89,7 @@ public class CharacterTemplateConverter {
|
|||||||
CharacterTemplate t = fillTemplate(rs);
|
CharacterTemplate t = fillTemplate(rs);
|
||||||
|
|
||||||
final File file = new File(target, "character/"
|
final File file = new File(target, "character/"
|
||||||
+ camelCase(t.characterClass.name()) + ".xml");
|
+ camelCase(t.getCharacterClass().name()) + ".xml");
|
||||||
file.getParentFile().mkdirs();
|
file.getParentFile().mkdirs();
|
||||||
|
|
||||||
m.marshal(t, file);
|
m.marshal(t, file);
|
||||||
@@ -111,8 +109,6 @@ public class CharacterTemplateConverter {
|
|||||||
throws SQLException {
|
throws SQLException {
|
||||||
final CharacterTemplate t = new CharacterTemplate();
|
final CharacterTemplate t = new CharacterTemplate();
|
||||||
|
|
||||||
t.characterClass = CharacterClass.fromID(rs.getInt("ClassId"));
|
|
||||||
// this.hpBase = ${defaulthpbase};
|
|
||||||
t.stats = new CharacterStatsMetadata();
|
t.stats = new CharacterStatsMetadata();
|
||||||
t.stats.hp = new Stat();
|
t.stats.hp = new Stat();
|
||||||
t.stats.hp.base = rs.getDouble("defaulthpbase");
|
t.stats.hp.base = rs.getDouble("defaulthpbase");
|
||||||
|
|||||||
Reference in New Issue
Block a user