actual freya branch
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
/*
|
||||
* This program 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.
|
||||
*
|
||||
* This program 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
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.datatables;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javolution.util.FastList;
|
||||
import javolution.util.FastMap;
|
||||
|
||||
import com.l2jserver.L2DatabaseFactory;
|
||||
import com.l2jserver.gameserver.model.L2HennaInstance;
|
||||
import com.l2jserver.gameserver.model.base.ClassId;
|
||||
import com.l2jserver.gameserver.templates.item.L2Henna;
|
||||
|
||||
/**
|
||||
* This class ...
|
||||
* @version $Revision$ $Date$
|
||||
*/
|
||||
public class HennaTreeTable
|
||||
{
|
||||
private static Logger _log = Logger.getLogger(HennaTreeTable.class.getName());
|
||||
private Map<ClassId, List<L2HennaInstance>> _hennaTrees;
|
||||
private final boolean _initialized = true;
|
||||
|
||||
public static HennaTreeTable getInstance()
|
||||
{
|
||||
return SingletonHolder._instance;
|
||||
}
|
||||
|
||||
private HennaTreeTable()
|
||||
{
|
||||
_hennaTrees = new FastMap<>();
|
||||
int classId = 0;
|
||||
int count = 0;
|
||||
Connection con = null;
|
||||
try
|
||||
{
|
||||
con = L2DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement statement = con.prepareStatement("SELECT class_name, id, parent_id FROM class_list ORDER BY id");
|
||||
ResultSet classlist = statement.executeQuery();
|
||||
List<L2HennaInstance> list;
|
||||
// int parentClassId;
|
||||
// L2Henna henna;
|
||||
PreparedStatement statement2 = con.prepareStatement("SELECT class_id, symbol_id FROM henna_trees where class_id=? ORDER BY symbol_id");
|
||||
while (classlist.next())
|
||||
{
|
||||
list = new FastList<>();
|
||||
classId = classlist.getInt("id");
|
||||
|
||||
statement2.setInt(1, classId);
|
||||
ResultSet hennatree = statement2.executeQuery();
|
||||
statement2.clearParameters();
|
||||
while (hennatree.next())
|
||||
{
|
||||
int id = hennatree.getInt("symbol_id");
|
||||
// String name = hennatree.getString("name");
|
||||
L2Henna template = HennaTable.getInstance().getTemplate(id);
|
||||
if (template == null)
|
||||
{
|
||||
hennatree.close();
|
||||
statement2.close();
|
||||
classlist.close();
|
||||
statement.close();
|
||||
return;
|
||||
}
|
||||
L2HennaInstance temp = new L2HennaInstance(template);
|
||||
temp.setSymbolId(id);
|
||||
temp.setItemIdDye(template.getDyeId());
|
||||
temp.setAmountDyeRequire(template.getAmountDyeRequire());
|
||||
temp.setPrice(template.getPrice());
|
||||
temp.setStatINT(template.getStatINT());
|
||||
temp.setStatSTR(template.getStatSTR());
|
||||
temp.setStatCON(template.getStatCON());
|
||||
temp.setStatMEM(template.getStatMEM());
|
||||
temp.setStatDEX(template.getStatDEX());
|
||||
temp.setStatWIT(template.getStatWIT());
|
||||
|
||||
list.add(temp);
|
||||
}
|
||||
_hennaTrees.put(ClassId.values()[classId], list);
|
||||
hennatree.close();
|
||||
count += list.size();
|
||||
_log.fine("Henna Tree for Class: " + classId + " has " + list.size() + " Henna Templates.");
|
||||
}
|
||||
|
||||
classlist.close();
|
||||
statement.close();
|
||||
statement2.close();
|
||||
|
||||
_log.info("HennaTreeTable: Loaded " + count + " Henna Tree Templates.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.SEVERE, "Error loading Henna Tree Table.", e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
L2DatabaseFactory.close(con);
|
||||
}
|
||||
}
|
||||
|
||||
public L2HennaInstance[] getAvailableHenna(ClassId classId)
|
||||
{
|
||||
List<L2HennaInstance> result = new FastList<>();
|
||||
List<L2HennaInstance> henna = _hennaTrees.get(classId);
|
||||
if (henna == null)
|
||||
{
|
||||
// the hennatree for this class is undefined, so we give an empty list
|
||||
_log.warning("Hennatree for class " + classId + " is not defined !");
|
||||
return new L2HennaInstance[0];
|
||||
}
|
||||
|
||||
for (L2HennaInstance temp : henna)
|
||||
{
|
||||
result.add(temp);
|
||||
}
|
||||
|
||||
return result.toArray(new L2HennaInstance[result.size()]);
|
||||
}
|
||||
|
||||
public boolean isInitialized()
|
||||
{
|
||||
return _initialized;
|
||||
}
|
||||
|
||||
@SuppressWarnings("synthetic-access")
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final HennaTreeTable _instance = new HennaTreeTable();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user