Сообщений: 1,065
Тем: 33
Зарегистрирован: Jul 2012
Репутация:
2,109
L2-Scripts Написал:Вот, к примеру, человек в первый раз делает себе сайт для фирмы, он обращается к компетентным людям, с целью реализации его сайта. С дизайнером обсуждает все, со специалистами определяется на каком движке будет производиться верстка. Допустим, все необходимое в PSD предусмотрели и дают верстальщику на верстку под определенный движек. О каком ТЗ вы говорите, если в макете сайта все есть, что требуется сделать ? тут могут указываться лишь пожелания какие то, в некоторых случаях изменения, но суть перед глазами. Верстальщик обязан оценить и сообщить заранее, сможет ли он реализовать все задуманное по Макету. Вопросы должен задать верстальщик, если у него имеются они. И никогда я не встречал, чтобы верстальщик просил клиента написать детальное ТЗ. Верстальщик просит всегда показать макет.
Покажите, на ваш взгляд, правильно написанное ТЗ по верстке, которое в состоянии написать заказчик, не имеющий представления о программировании? Читайте внимательно. Apoloser писал выше, что мол даже не было ТЗ. И на это он яро ссылается. (Я не я, (и) лошадь не моя.)
p.s ТЗ пишут для оценки первоначальной стоимости работы и как план, что нужно сделать. Потом конкретно обсуждают все пункты.
А так деньги взял, а за что взял, даже не пояснил перед началом работы. ( я тебе все запилю! давай деньги)
Сообщений: 1,363
Тем: 17
Зарегистрирован: Oct 2011
server-anons Написал:Читайте внимательно. Apoloser писал выше, что мол даже не было ТЗ. И на это он яро ссылается. (Я не я, (и) лошадь не моя.)
p.s ТЗ пишут для оценки первоначальной стоимости работы и как план, что нужно сделать. Потом конкретно обсуждают все пункты.
А так деньги взял, а за что взял, даже не пояснил перед началом работы. ( я тебе все запилю! давай деньги) Ну так о том и речь, что ТС не виноват тут ни грамма. Его спросили макет, то он и предоставил. Если какие то моменты исполнителю были не понятны и он их не смог бы реализовать, он мог уточнить эти моменты перед началом работы.
Поэтому я вас и попросил показать пример, какое ТЗ должен был прислать заказчик ? покажите о чем речь как пример, просто чтобы я понимал о чем вы говорите. Именно по верстке. К примеру, нам пишут, говорят нужна верстка под движек такой то, мы просим показать макет, оцениваем сможем ли мы запланированное на макете прилепить на этот движек, и если есть затруднения сообщаем о них и детали обговариваем. А тут что ? Покажите пример, может я просто не верно вас понимаю.
Сообщений: 2,088
Тем: 27
Зарегистрирован: Nov 2010
Репутация:
0
Оправдания некоторых личностей похожи на "соло петросяна в гей пабе". Неважно что говорить главное говорить, лишь бы не(ну вы понимаете).
ТС подал притенению пусть висит, кошелек заблокирован же, ну и все закончили. А то, после Т3 для верски пойдет, луна в том положении была, вспышки на солнце, массовое мигрирование енотов, из за этого землетрясение и невозможность работать, итд итп.
Что то мне эта тема напомнила, какую то ситуацию.. аналогичную.
Сообщений: 83
Тем: 8
Зарегистрирован: Jan 2013
Репутация:
237
Посмотрите PSD исходник и HTML верстку. По его словам он все сделал в HTML и пытался, но не смог адаптировать в CMS (stressweb13). Но удивительно, что в HTML верстке ситуация аналогичная адаптированному варианту из CMS.
слева PSD, справа HTML
не могу показать HTML полностью, но то что эффект кнопок и о их классных скачках отдельная тема.
и вместо того, чтобы попросить меня сгруппировать PSD по группам (хотя я бы не сказал, что там нету групп), и после гнать на меня в виде отмазы. Даже после половины прочитанного не удивился, что я боком вышел.
Сообщений: 1,363
Тем: 17
Зарегистрирован: Oct 2011
Jared Ceres Написал:Посмотрите PSD исходник и HTML верстку. По его словам он все сделал в HTML и пытался, но не смог адаптировать в CMS (stressweb13). Но удивительно, что в HTML верстке ситуация аналогичная адаптированному варианту из CMS.
слева PSD, справа HTML
не могу показать HTML полностью, но то что эффект кнопок и о их классных скачках отдельная тема.
и вместо того, чтобы попросить меня сгруппировать PSD по группам (хотя я бы не сказал, что там нету групп), и после гнать на меня в виде отмазы. Даже после половины прочитанного не удивился, что я боком вышел.
Это вы макет делали ?
Сообщений: 3,354
Тем: 97
Зарегистрирован: Aug 2011
Репутация:
9,445
На самом деле, дизайнер некомпетентная личность(лично мое мнение), на сколько я знаю, аватарки(лого кланов) в топе, нельзя выдрать из игры, так как они записываются в БД каким то непонятным образом, где то видел такую темку.
Аватарки с форума и правда нельзя выдернуть по средствам СВ, для этого нужно писать код(дополнительный модуль).
Что ещё вы просили реализовать?
Картинка в новости, ну это хз почему Аполосер не сделал.
Переход по страницам новостей, таже "петрушка", только кода штмл не видно, по этому сказать сделал или не сделал не могу.
Я что то ещё забыл?
Общий онлайн забыл, опять же не понятно, то ли просто не показан на рисунке, а код присутствует, то ли не сделано вовсе.
Пы.Сы. сам дизайнер/художник/составитель макета, не знает правил хорошего тона, что все слои группируются, в любой книжке по вебдизайну это написано. Но на сколько я понял ему плевать на это. Ну дело его личное.
Ещё раз повторюсь, я не защищаю Аполосера, он мне тоже срывал сроки, но мы же пытаемся найти истину, потому и высказываю своё мнение.
Сообщений: 144
Тем: 12
Зарегистрирован: Jun 2013
xolseg Написал:Ещё раз повторюсь, я не защищаю Аполосера, он мне тоже срывал сроки, но мы же пытаемся найти истину, потому и высказываю своё мнение.
это самая правильная позиция
Но ведь верстальщик когда принимал работу, видел макет и сразу же должен был уточнить по поводу вывода доп инфы.
Кто работает с СВ, знает возможности и функционал CMS.
Сообщений: 3,757
Тем: 75
Зарегистрирован: Nov 2011
Репутация:
5,504
xolseg Написал:на сколько я знаю, аватарки(лого кланов) в топе, нельзя выдрать из игры, так как они записываются в БД каким то непонятным образом, где то видел такую темку. Все можно. нужно лишь знать где копать
Kakos Дайте Кастетчикам какойта УД. Без уд хреново падаєт бистро що ето капец, а єсли не УД то хотяби какойта хил.:redlol::redlol:
Сообщений: 889
Тем: 21
Зарегистрирован: May 2010
Репутация:
12,856
xolseg Написал:На самом деле, дизайнер некомпетентная личность(лично мое мнение), на сколько я знаю, аватарки(лого кланов) в топе, нельзя выдрать из игры, так как они записываются в БД каким то непонятным образом, где то видел такую темку.
Аватарки с форума и правда нельзя выдернуть по средствам СВ, для этого нужно писать код(дополнительный модуль).
Что ещё вы просили реализовать?
Картинка в новости, ну это хз почему Аполосер не сделал.
Переход по страницам новостей, таже "петрушка", только кода штмл не видно, по этому сказать сделал или не сделал не могу.
Я что то ещё забыл?
Общий онлайн забыл, опять же не понятно, то ли просто не показан на рисунке, а код присутствует, то ли не сделано вовсе.
Пы.Сы. сам дизайнер/художник/составитель макета, не знает правил хорошего тона, что все слои группируются, в любой книжке по вебдизайну это написано. Но на сколько я понял ему плевать на это. Ну дело его личное.
Ещё раз повторюсь, я не защищаю Аполосера, он мне тоже срывал сроки, но мы же пытаемся найти истину, потому и высказываю своё мнение.
офф
Почему сразу не понятным образом..
код
Код: package ru.ljts.gameserver.data.cache;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.ljts.commons.dbutils.DbUtils;
import ru.ljts.gameserver.dao.database.DatabaseFactory;
import gnu.trove.map.hash.TIntIntHashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Types;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* Импровизированный "кэш" для значков кланов и альянсов.
* <p/>
* Переработано: G1ta0
*/
public class CrestCache
{
public static final int ALLY_CREST_SIZE = 192;
public static final int CREST_SIZE = 256;
public static final int LARGE_CREST_SIZE = 2176;
private static final Logger _log = LoggerFactory.getLogger(CrestCache.class);
private final static CrestCache _instance = new CrestCache();
public final static CrestCache getInstance()
{
return _instance;
}
/**
* Требуется для получения ID значка по ID клана
*/
private final TIntIntHashMap _pledgeCrestId = new TIntIntHashMap();
private final TIntIntHashMap _pledgeCrestLargeId = new TIntIntHashMap();
private final TIntIntHashMap _allyCrestId = new TIntIntHashMap();
/**
* Получение значка по ID
*/
private final TIntObjectHashMap<byte[]> _pledgeCrest = new TIntObjectHashMap<byte[]>();
private final TIntObjectHashMap<byte[]> _pledgeCrestLarge = new TIntObjectHashMap<byte[]>();
private final TIntObjectHashMap<byte[]> _allyCrest = new TIntObjectHashMap<byte[]>();
/**
* Блокировка для чтения/записи объектов из "кэша"
*/
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private final Lock readLock = lock.readLock();
private final Lock writeLock = lock.writeLock();
private CrestCache()
{
load();
}
public void load()
{
int count = 0;
int pledgeId, crestId;
byte[] crest;
Connection con = null;
PreparedStatement statement = null;
ResultSet rset = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("SELECT clan_id, crest FROM clan_data WHERE crest IS NOT NULL");
rset = statement.executeQuery();
while (rset.next())
{
count++;
pledgeId = rset.getInt("clan_id");
crest = rset.getBytes("crest");
crestId = getCrestId(pledgeId, crest);
_pledgeCrestId.put(pledgeId, crestId);
_pledgeCrest.put(crestId, crest);
}
DbUtils.close(statement, rset);
statement = con.prepareStatement("SELECT clan_id, largecrest FROM clan_data WHERE largecrest IS NOT NULL");
rset = statement.executeQuery();
while (rset.next())
{
count++;
pledgeId = rset.getInt("clan_id");
crest = rset.getBytes("largecrest");
crestId = getCrestId(pledgeId, crest);
_pledgeCrestLargeId.put(pledgeId, crestId);
_pledgeCrestLarge.put(crestId, crest);
}
DbUtils.close(statement, rset);
statement = con.prepareStatement("SELECT ally_id, crest FROM ally_data WHERE crest IS NOT NULL");
rset = statement.executeQuery();
while (rset.next())
{
count++;
pledgeId = rset.getInt("ally_id");
crest = rset.getBytes("crest");
crestId = getCrestId(pledgeId, crest);
_allyCrestId.put(pledgeId, crestId);
_allyCrest.put(crestId, crest);
}
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement, rset);
}
_log.info("CrestCache: Loaded " + count + " crests");
}
/**
* Генерирует уникальный положительный ID на основе данных: ID клана/альянса и значка
*
* @param pledgeId
* ID клана или альянса
* @param crest
* данные значка
* @return ID значка в "кэше"
*/
private static int getCrestId(int pledgeId, byte[] crest)
{
return Math.abs(new HashCodeBuilder(15, 87).append(pledgeId).append(crest).toHashCode());
}
public byte[] getPledgeCrest(int crestId)
{
byte[] crest = null;
readLock.lock();
try
{
crest = _pledgeCrest.get(crestId);
}
finally
{
readLock.unlock();
}
return crest;
}
public byte[] getPledgeCrestLarge(int crestId)
{
byte[] crest = null;
readLock.lock();
try
{
crest = _pledgeCrestLarge.get(crestId);
}
finally
{
readLock.unlock();
}
return crest;
}
public byte[] getAllyCrest(int crestId)
{
byte[] crest = null;
readLock.lock();
try
{
crest = _allyCrest.get(crestId);
}
finally
{
readLock.unlock();
}
return crest;
}
public int getPledgeCrestId(int pledgeId)
{
int crestId = 0;
readLock.lock();
try
{
crestId = _pledgeCrestId.get(pledgeId);
}
finally
{
readLock.unlock();
}
return crestId;
}
public int getPledgeCrestLargeId(int pledgeId)
{
int crestId = 0;
readLock.lock();
try
{
crestId = _pledgeCrestLargeId.get(pledgeId);
}
finally
{
readLock.unlock();
}
return crestId;
}
public int getAllyCrestId(int pledgeId)
{
int crestId = 0;
readLock.lock();
try
{
crestId = _allyCrestId.get(pledgeId);
}
finally
{
readLock.unlock();
}
return crestId;
}
public void removePledgeCrest(int pledgeId)
{
writeLock.lock();
try
{
_pledgeCrest.remove(_pledgeCrestId.remove(pledgeId));
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET crest=? WHERE clan_id=?");
statement.setNull(1, Types.VARBINARY);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
public void removePledgeCrestLarge(int pledgeId)
{
writeLock.lock();
try
{
_pledgeCrestLarge.remove(_pledgeCrestLargeId.remove(pledgeId));
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET largecrest=? WHERE clan_id=?");
statement.setNull(1, Types.VARBINARY);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
public void removeAllyCrest(int pledgeId)
{
writeLock.lock();
try
{
_allyCrest.remove(_allyCrestId.remove(pledgeId));
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE ally_data SET crest=? WHERE ally_id=?");
statement.setNull(1, Types.VARBINARY);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
public int savePledgeCrest(int pledgeId, byte[] crest)
{
int crestId = getCrestId(pledgeId, crest);
writeLock.lock();
try
{
_pledgeCrestId.put(pledgeId, crestId);
_pledgeCrest.put(crestId, crest);
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET crest=? WHERE clan_id=?");
statement.setBytes(1, crest);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
return crestId;
}
public int savePledgeCrestLarge(int pledgeId, byte[] crest)
{
int crestId = getCrestId(pledgeId, crest);
writeLock.lock();
try
{
_pledgeCrestLargeId.put(pledgeId, crestId);
_pledgeCrestLarge.put(crestId, crest);
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET largecrest=? WHERE clan_id=?");
statement.setBytes(1, crest);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
return crestId;
}
public int saveAllyCrest(int pledgeId, byte[] crest)
{
int crestId = getCrestId(pledgeId, crest);
writeLock.lock();
try
{
_allyCrestId.put(pledgeId, crestId);
_allyCrest.put(crestId, crest);
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE ally_data SET crest=? WHERE ally_id=?");
statement.setBytes(1, crest);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
return crestId;
}
}
Сообщений: 3,354
Тем: 97
Зарегистрирован: Aug 2011
Репутация:
9,445
06-08-2013, 02:01 PM
(Сообщение последний раз редактировалось: 06-08-2013, 02:02 PM xolseg.)
Mafio Написал:Все можно. нужно лишь знать где копать
Ну ок, я этого не знал. Но опять же, СВ не поддерживает по-умолчанию данную функцию, а по тому, это дополнительный модуль(или в св13 уже ввели, т.к. в 12 версии этого не было)
Т.е. 3 дополнительных модуля или 2, забыл уже. Которые не входят в стоимость верстки.
Добавлено через 1 минуту
Mangol Написал:
офф
Почему сразу не понятным образом..
код
Код: package ru.ljts.gameserver.data.cache;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.ljts.commons.dbutils.DbUtils;
import ru.ljts.gameserver.dao.database.DatabaseFactory;
import gnu.trove.map.hash.TIntIntHashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Types;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* Импровизированный "кэш" для значков кланов и альянсов.
* <p/>
* Переработано: G1ta0
*/
public class CrestCache
{
public static final int ALLY_CREST_SIZE = 192;
public static final int CREST_SIZE = 256;
public static final int LARGE_CREST_SIZE = 2176;
private static final Logger _log = LoggerFactory.getLogger(CrestCache.class);
private final static CrestCache _instance = new CrestCache();
public final static CrestCache getInstance()
{
return _instance;
}
/**
* Требуется для получения ID значка по ID клана
*/
private final TIntIntHashMap _pledgeCrestId = new TIntIntHashMap();
private final TIntIntHashMap _pledgeCrestLargeId = new TIntIntHashMap();
private final TIntIntHashMap _allyCrestId = new TIntIntHashMap();
/**
* Получение значка по ID
*/
private final TIntObjectHashMap<byte[]> _pledgeCrest = new TIntObjectHashMap<byte[]>();
private final TIntObjectHashMap<byte[]> _pledgeCrestLarge = new TIntObjectHashMap<byte[]>();
private final TIntObjectHashMap<byte[]> _allyCrest = new TIntObjectHashMap<byte[]>();
/**
* Блокировка для чтения/записи объектов из "кэша"
*/
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private final Lock readLock = lock.readLock();
private final Lock writeLock = lock.writeLock();
private CrestCache()
{
load();
}
public void load()
{
int count = 0;
int pledgeId, crestId;
byte[] crest;
Connection con = null;
PreparedStatement statement = null;
ResultSet rset = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("SELECT clan_id, crest FROM clan_data WHERE crest IS NOT NULL");
rset = statement.executeQuery();
while (rset.next())
{
count++;
pledgeId = rset.getInt("clan_id");
crest = rset.getBytes("crest");
crestId = getCrestId(pledgeId, crest);
_pledgeCrestId.put(pledgeId, crestId);
_pledgeCrest.put(crestId, crest);
}
DbUtils.close(statement, rset);
statement = con.prepareStatement("SELECT clan_id, largecrest FROM clan_data WHERE largecrest IS NOT NULL");
rset = statement.executeQuery();
while (rset.next())
{
count++;
pledgeId = rset.getInt("clan_id");
crest = rset.getBytes("largecrest");
crestId = getCrestId(pledgeId, crest);
_pledgeCrestLargeId.put(pledgeId, crestId);
_pledgeCrestLarge.put(crestId, crest);
}
DbUtils.close(statement, rset);
statement = con.prepareStatement("SELECT ally_id, crest FROM ally_data WHERE crest IS NOT NULL");
rset = statement.executeQuery();
while (rset.next())
{
count++;
pledgeId = rset.getInt("ally_id");
crest = rset.getBytes("crest");
crestId = getCrestId(pledgeId, crest);
_allyCrestId.put(pledgeId, crestId);
_allyCrest.put(crestId, crest);
}
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement, rset);
}
_log.info("CrestCache: Loaded " + count + " crests");
}
/**
* Генерирует уникальный положительный ID на основе данных: ID клана/альянса и значка
*
* @param pledgeId
* ID клана или альянса
* @param crest
* данные значка
* @return ID значка в "кэше"
*/
private static int getCrestId(int pledgeId, byte[] crest)
{
return Math.abs(new HashCodeBuilder(15, 87).append(pledgeId).append(crest).toHashCode());
}
public byte[] getPledgeCrest(int crestId)
{
byte[] crest = null;
readLock.lock();
try
{
crest = _pledgeCrest.get(crestId);
}
finally
{
readLock.unlock();
}
return crest;
}
public byte[] getPledgeCrestLarge(int crestId)
{
byte[] crest = null;
readLock.lock();
try
{
crest = _pledgeCrestLarge.get(crestId);
}
finally
{
readLock.unlock();
}
return crest;
}
public byte[] getAllyCrest(int crestId)
{
byte[] crest = null;
readLock.lock();
try
{
crest = _allyCrest.get(crestId);
}
finally
{
readLock.unlock();
}
return crest;
}
public int getPledgeCrestId(int pledgeId)
{
int crestId = 0;
readLock.lock();
try
{
crestId = _pledgeCrestId.get(pledgeId);
}
finally
{
readLock.unlock();
}
return crestId;
}
public int getPledgeCrestLargeId(int pledgeId)
{
int crestId = 0;
readLock.lock();
try
{
crestId = _pledgeCrestLargeId.get(pledgeId);
}
finally
{
readLock.unlock();
}
return crestId;
}
public int getAllyCrestId(int pledgeId)
{
int crestId = 0;
readLock.lock();
try
{
crestId = _allyCrestId.get(pledgeId);
}
finally
{
readLock.unlock();
}
return crestId;
}
public void removePledgeCrest(int pledgeId)
{
writeLock.lock();
try
{
_pledgeCrest.remove(_pledgeCrestId.remove(pledgeId));
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET crest=? WHERE clan_id=?");
statement.setNull(1, Types.VARBINARY);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
public void removePledgeCrestLarge(int pledgeId)
{
writeLock.lock();
try
{
_pledgeCrestLarge.remove(_pledgeCrestLargeId.remove(pledgeId));
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET largecrest=? WHERE clan_id=?");
statement.setNull(1, Types.VARBINARY);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
public void removeAllyCrest(int pledgeId)
{
writeLock.lock();
try
{
_allyCrest.remove(_allyCrestId.remove(pledgeId));
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE ally_data SET crest=? WHERE ally_id=?");
statement.setNull(1, Types.VARBINARY);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
public int savePledgeCrest(int pledgeId, byte[] crest)
{
int crestId = getCrestId(pledgeId, crest);
writeLock.lock();
try
{
_pledgeCrestId.put(pledgeId, crestId);
_pledgeCrest.put(crestId, crest);
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET crest=? WHERE clan_id=?");
statement.setBytes(1, crest);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
return crestId;
}
public int savePledgeCrestLarge(int pledgeId, byte[] crest)
{
int crestId = getCrestId(pledgeId, crest);
writeLock.lock();
try
{
_pledgeCrestLargeId.put(pledgeId, crestId);
_pledgeCrestLarge.put(crestId, crest);
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE clan_data SET largecrest=? WHERE clan_id=?");
statement.setBytes(1, crest);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
return crestId;
}
public int saveAllyCrest(int pledgeId, byte[] crest)
{
int crestId = getCrestId(pledgeId, crest);
writeLock.lock();
try
{
_allyCrestId.put(pledgeId, crestId);
_allyCrest.put(crestId, crest);
}
finally
{
writeLock.unlock();
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE ally_data SET crest=? WHERE ally_id=?");
statement.setBytes(1, crest);
statement.setInt(2, pledgeId);
statement.execute();
}
catch (Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
return crestId;
}
}
Ну вам понятным, мне нет, так как не занимаюсь л2.
|